23

我一直在尝试在新的 Cloud Formation 模板上附加我目前用于我的 Elastic Load Balancing 实例之一的 SSL 证书,但每次我得到:
找不到密钥的服务器证书
然后 Cloudformation 模板开始在那个时候回滚。

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

Amazon 要求使用 SSL 证书的 ARN。我相信这是正确的,因为这是出现在当前设置 ELB 的下拉列表中的确切字符串,它需要 443 到实例上的端口 80。

我的听众错过了什么吗?

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

在等待答案的时候,我其实已经想出了如何做到这一点,你需要使用亚马逊提供的 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 回答
5

以下是使用最新 AWS CLI 获取长证书名称的方法:

pip install awscli
aws iam list-server-certificates
于 2015-05-11T20:59:18.043 回答