【问题标题】:Multiple SSL Certificates in One Heroku Application一个 Heroku 应用程序中的多个 SSL 证书
【发布时间】:2012-11-07 00:47:49
【问题描述】:

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

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

【问题讨论】:

  • 在此处查看答案:stackoverflow.com/questions/13328586/…。应该可以在 Heroku Cedar 堆栈上正常工作。
  • 很遗憾,这并没有解决我们的要求。我们有多个域名属于多家公司。 SAN/UCC 证书仅适用于同一实体/公司/个人拥有的域名。我们在后台创建了一个 iFrame 作为快速修复,但我们已经将我们的平台转移到了我们自己的基础架构中。

标签: ssl heroku


【解决方案1】:

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

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

【讨论】:

  • 谢谢,我会告诉你我怎么走的
  • 此链接失效,页面中不存在该部分
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    有一种方法可以让多个 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 更改可能需要一段时间才能生效。

    【讨论】:

    • 你好,你能给我更多关于 DNS 设置的指导吗?如果我没有在该 SSL 主机服务器上运行应用程序,如何让 newdomain.com 指向 domain.com 上的应用程序,同时在 newdomain-ssl 应用程序上获取 SSL 证书?
    • 不知道为什么这不是带有绿色检查的那个。这真的很好用,我猜 Heroku 会在一段时间内允许这样做,从技术上讲,它不会花费他们更多的钱,因为端点实例处于休眠状态,并且 dns 会将您带到正确的应用程序。
    • 我刚刚收到 Heroku 支持和他们的路由团队的确认,这种方法对于生产使用应该是安全的。
    • Spundun - 对于 www.example.com 和 example.com,您最好使用通配符证书并将其指向同一个 heroku SSL 端点。如果您要使用两个不同的域(example.com 和 example2.com),那么是的,您将为每个单独的域支付 20 美元。
    • 它适用于付费 SSL 端点附加组件。作为记录,它目前不适用于免费的 Heroku SSL (Beta)。
    【解决方案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:// 解析。

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

    相关链接:

    【讨论】:

      【解决方案5】:

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

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

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

      上传自定义证书可以参考这个heroku doc

      【讨论】:

      猜你喜欢
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2015-06-21
      • 2011-11-25
      相关资源
      最近更新 更多