web-dev-qa-db-ja.com

CloudFormationテンプレートでELBに事前にアップロードされたSSL証明書を添付する方法は?

新しいクラウド形成テンプレートのElastic Load Balancingインスタンスの1つに現在使用しているSSL証明書を添付しようとしましたが、次のような場合は常に取得します。
キーのサーバー証明書が見つかりません
そして、Cloudformationテンプレートはその時点でロールバックを開始します。

            "Listeners" : [ 
         {
          "LoadBalancerPort" : "443",
          "InstancePort" : "80",
          "SSLCertificateId" : "start_certname_com",
          "Protocol" : "HTTPS"
         },...

Amazonは、使用するSSL証明書のARNを求めています。これは正しいと思います。これは、インスタンスのポート80に443を取る現在のセットアップELB。

リスナーに何か不足していますか?

22
pquery

私は実際に答えを待っている間にこれを行う方法を理解しました、あなたはAmazonが提供するIAM CLIツールを使用し、次にコマンドを使用する必要があります
iam-servercertgetattributes -s certname

これにより、次のような文字列が提供されます。

arn:aws:iam::123456789123:server-certificate/start_certname_com

これは、「SSLCertificateId」値ペアフィールドに配置する値です

IAMコマンドラインツール(CLI)のセットアップ手順は、次の場所にあります。
http://docs.aws.Amazon.com/IAM/latest/CLIReference/Setup.html

こちらからawsからツールキットをダウンロードしてください
http://aws.Amazon.com/developertools/AWS-Identity-and-Access-Management/414

すべての最終ブロックは次のようになります。

 "Listeners" : [ 
    {  
      "LoadBalancerPort" : "443",  
      "InstancePort" : "80",  
      "SSLCertificateId" : "arn:aws:iam::123456789123:server-certificate/start_certname_com",  
      "Protocol" : "HTTPS"  
     },...  
21
pquery

CloudFormationの証明書の [〜#〜] arn [〜#〜] は、証明書名のみで導出できます。コマンドラインツールを実行して値をCloudFormationテンプレートにハードコードする必要はありません。

    "Parameters":{
      "Path":{
         "Description":"AWS Path",
         "Default":"/",
         "Type":"String"
      }
    }
     ...
        "Listeners" : [ 
     {
      "LoadBalancerPort" : "443",
      "InstancePort" : "80",
      "SSLCertificateId" : {
        "Fn::Join":[
           "",
           [
              "arn:aws:iam::",
              {
                 "Ref":"AWS::AccountId"
              },
              ":server-certificate",
              {
                 "Ref":"Path"
              },
              "start_certname_com"
           ]
        ]
      },
      "Protocol" : "HTTPS"
     },...

これにより、{"Ref":"AWS::AccountId"}pseudo parameter および combines でアカウントIDが決まります [〜#〜] arn [ 〜#〜] 。証明書のパスを設定した場合に備えて、Pathという変数を使用していることに注意してください。そうでない場合は、デフォルトの「/」で問題なく動作します。

このソリューションは@Tristanによって言及され、 merrix143243のソリューション の拡張です。

33
gene_wood

最新のAWS CLIで長い証明書名を取得する方法は次のとおりです。

pip install awscli
aws iam list-server-certificates
5
Nate