首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS CloudFormation -向现有监听程序添加新证书

AWS CloudFormation -向现有监听程序添加新证书
EN

Stack Overflow用户
提问于 2017-11-15 10:36:05
回答 1查看 3K关注 0票数 4

我拥有的是一个平台堆栈,可能还有多个web应用堆栈(每个堆栈代表一个web应用)。平台堆栈部署了一个ECS平台,允许托管多个web应用程序,但实际上没有任何web应用程序。这只是一个平台。然后,每个web应用堆栈表示一个web应用。

我的平台堆栈模板中的一个HTTPS侦听器是这样的。基本上,我在端口443上有一个HTTPS侦听器,并将携带一个默认证书(根据要求,您至少需要一个证书才能创建https侦听器):

代码语言:javascript
复制
"BsAlbListenerHttps": {
  "Type": "AWS::ElasticLoadBalancingV2::Listener",
  "Properties": {
    "Certificates": [{
      "CertificateArn": {
        "Ref": "BsCertificate1"
      }
    }],
    ...
    "Port": "443",
    "Protocol": "HTTPS"
  }
},
...

现在,假设我想要创建一个新的web应用程序(例如。www.example.com),我部署web应用程序堆栈,指定一些参数,显然,我必须创建一堆新资源。但同时,我将不得不修改当前的"BsAlbListenerHttps“。

我能够将当前的侦听器(使用导入和导出)导入到我的web应用程序堆栈中。但我想做的也是将www.example.com的新证书添加到侦听器。

我试着环顾四周,但没有找到任何答案。

有人知道怎么做吗?非常感谢您的帮助。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-11-15 11:04:26

在类似的情况下,我只对整个区域使用一个证书,并在添加位于不同域上的应用程序/侦听器时向其添加域。对于每个环境,我也是这样做的,所以我有两个不同模板的暂存证书和生产证书。但对于每个证书堆栈,您都会定义一个独立的证书堆栈,例如,命名为certificate-production.json,但是使用堆栈名称作为'certificate‘,这样无论环境如何,堆栈引用都是一致的:

代码语言:javascript
复制
{
  "AWSTemplateFormatVersion" : "2010-09-09",
  "Description" : "SSL certificates for production V2",

  "Resources" : {
    "Certificate" : {
      "Type": "AWS::CertificateManager::Certificate",
      "Properties": {
        "DomainName": "*.example.com",
        "SubjectAlternativeNames" : [ "*.example2.com","*.someotherdomain.com" ]
      }
    }
  },

  "Outputs": {
    "CertificateId" : {
        "Value" : {"Ref":"Certificate"},
        "Description" : "Certificate ID",
        "Export" : {  "Name" : {"Fn::Sub": "${AWS::StackName}-CertificateId" }} 
    }
  }  
}

正如您使用SubjectAlternativeNames属性所看到的,此证书将服务于3个通配符域。这样,我可以在添加服务时更新域,并重新运行堆栈。从属监听器无论如何都不会改变-它们总是引用区域中的单个应用程序证书。

需要注意的是:当您在CloudFormation中更新证书时,它将向给定域(hostmaster@example.com等)上的所有主机管理员发送电子邮件。每个域名都会收到一封确认邮件,每封邮件都需要再次确认。如果没有以这种方式确认所有的域,那么堆栈将无法创建/更新。

使用此技术,我可以毫不费力地为我的所有应用程序管理SSL,同时轻松地为新域添加新的ssl端点。

我在主VPC堆栈之后立即创建了证书堆栈,因此所有后续堆栈都可以通过导出引用此处定义的证书id。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47298462

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档