42

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

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

4

5 回答 5

94

有一种方法可以让多个 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 配置中完成。

新应用程序不需要任何测功机,但 SSL 端点附加组件将收取 20 美元/月的费用。

笔记:

  • Heroku 没有记录此解决方案,因此他们将来可能会删除或更改此行为。Heroku 已确认这对于生产使用是安全的。
  • 请务必在与您的主要应用程序相同的区域中创建您的端点。
  • 您的 DNS 更改可能需要一段时间才能生效。
于 2013-09-24T13:18:05.377 回答
6

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

heroku

此外,您可以使用certbot在多个域和子域中自行管理 LE 认证

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

您可以参考这个heroku 文档来上传自定义证书。

于 2017-03-22T18:24:34.533 回答
4

虽然与 OP 的问题不完全相同,但我能够在 Heroku 上通过一个 SAN(主题备用名称)证书以大约 25 美元/年的价格实现这一目标。

subjectAltName我通过以下方式在 OSX 中生成了具有多个主题替代名称 ( ) 的 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:// 解析。

如果对任何感兴趣的人来说这是一条可行的路线,那么额外的端点比每年 240 美元便宜得多。

相关链接:

于 2016-04-07T11:12:16.503 回答
-2

我自己正在处理这个问题。Heroku 建议获取 SAN/UCC 证书,它可以让您列出多个域。刚刚使用 GoDaddy 完成了它,到目前为止它运行良好。

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

于 2012-11-21T12:33:59.303 回答
-4

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

于 2013-08-22T01:38:18.017 回答