一个Heroku应用程序中的多个SSL证书

时间:2012-11-19 05:10:33

标签: ssl heroku

是否可以在单个Heroku应用程序中拥有许多SSL证书?

我们有多个不同类型的域名,TLD指向我们的应用程序,需要保护每个域名。最好不要重定向到不同的安全URL。

5 个答案:

答案 0 :(得分:92)

有一种方法可以让多个SSL端点将流量路由到同一个应用程序。

SSL端点通过终止SSL连接并将未加密的流量注入正常的Heroku路由层来工作。

您可以通过创建具有新SSL端点的新应用来终止SSL连接并将流量路由到现有应用,从而充分利用这一点:

  1. 将您的域名添加到您的应用中:

    $ heroku domains:add ssl.example.com

  2. 创建一个新应用:

    $ heroku create endpoint-for-example-com

  3. 添加SSL端点附加组件($ 20 /月):

    $ heroku addons:create ssl:endpoint --app endpoint-for-example-com

  4. 将证书添加到新应用中:

     $ heroku certs:add server.crt bundle.pem server.key --app endpoint-for-example-com --type endpoint
     Resolving trust chain... done
     Adding SSL Endpoint to endpoint-for-example-com... done
     endpoint-for-example-com now served by kagawa-1482.herokussl.example.com
    
  5. 使用分配给新应用的ssl端点(例如kagawa-1482.herokussl.example.com)作为您要保护的域名的CNAME主机。这通常在域的DNS配置中完成。

  6. 新应用程序不需要任何dynos,但SSL端点附件每月收费20美元。

    注意:

    • Heroku没有记录这个解决方案,所以它们可能就是这样 将来会删除或更改此行为。 Heroku已确认这对于生产使用是安全的。
    • 请务必在与主应用相同的区域中创建端点。
    • 您的DNS更改可能需要一段时间才能生效。

答案 1 :(得分:6)

最近,heroku为付费dynos,爱好和up添加了自动LetsEncrypt TLS证书。这将自动适用于任意数量的域和子域。此方法仅在您不需要通配符子域时才有效。

heroku

此外,您可以使用certbot

在多个域和子域中自行管理LE认证

certbot certonly --standalone -d example.com -d www.example.com -d test.net

您可以参考此heroku doc上传自定义证书。

答案 2 :(得分:4)

虽然与OP的问题不完全相同,但我能够在Heroku上使用单个SAN(使用者替代名称)证书以每年约25美元的价格实现此目的。

我在OSX中通过以下方式生成了具有多个主题替代名称(subjectAltName)的CSR:

  1. /System/Library/OpenSSL/openssl.cnf复制到当前目录,并修改相关部分([req][v3_req]):

    [req]
    req_extensions = v3_req
    
    [v3_req]
    subjectAltName=DNS:www.example1.com,DNS:www.example2.com,DNS:www.example3.com
    
  2. 然后我在生成CSR时使用了这个新的.cnf:

    openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -config openssl.cnf
    
  3. 我从SSLs.com购买了证书。他们的Comodo“PositiveSSL Multi-Domain”在撰写本文时为25.99美元/年,并且支持3-100个域名(超过3个域名的成本约为12美元)。

  4. 我将CA捆绑包和.crt连接起来,我将其发送到单个.crt(按此顺序)并将其添加到Heroku。所有3个域名都已添加到应用程序并指向相同的CNAME,并且所有域名都按预期解析为https://。

  5. 如果对于任何感兴趣的人来说这是一条可行的途径,那么额外终点的价格要低于240美元/年。

    相关链接:

答案 3 :(得分:-2)

我自己处理这个问题。 Heroku建议获得SAN / UCC证书,该证书允许您列出多个域。刚刚与GoDaddy合作,到目前为止工作正常。

https://devcenter.heroku.com/articles/ssl-endpoint#serving-multiple-domains

答案 4 :(得分:-4)

我们有多个域名属于多家公司。 SAN / UCC证书仅适用于同一实体/公司/个人拥有的域名。我们在后台创建了一个iFrame作为快速修复程序,但我们已将平台移至我们自己的基础架构。