23

Elastic Load Balancing インスタンスの 1 つに現在使用している SSL 証明書を新しい Cloud Formation テンプレートにアタッチしようとしましたが、毎回次のメッセージが表示されます:
Server Certificate not found for the key
And then the Cloudformation template starts toその時点でロールバックします。

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

Amazon は、使用する SSL 証明書の ARN を求めています。これは、インスタンスのポート 80 に 443 を使用する現在のセットアップ ELB のドロップダウンに表示される正確な文字列であるため、これは正しいと思います。

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

4

3 に答える 3

33

証明書名のみを使用して、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"} これにより、疑似パラメーターを使用してアカウント ID が決定され、 ARNを形成するために必要な他の要素と結合されます。証明書のパスを設定した場合に呼び出される変数を使用していることに注意してください。そうでない場合は、デフォルトの「/」で問題なく動作します。Path

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

于 2013-11-16T00:12:14.433 に答える
21

答えを待っている間にこれを行う方法を実際に理解しました.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/4143

全体として、最終ブロックは次のようになります。

 "Listeners" : [ 
    {  
      "LoadBalancerPort" : "443",  
      "InstancePort" : "80",  
      "SSLCertificateId" : "arn:aws:iam::123456789123:server-certificate/start_certname_com",  
      "Protocol" : "HTTPS"  
     },...  
于 2013-02-26T12:55:41.440 に答える