在一个Heroku应用程序中的多个SSL证书
单个Heroku应用程序中是否可以有许多SSL证书?
我们有多个不同types的域名,顶级域名指向我们的应用程序,并需要保护每个域名。 最好不要redirect到不同的安全URL。
有一种方法可以让多个SSL端点将stream量路由到同一个应用程序。
SSL端点通过终止SSL连接并将未encryption的stream量注入到普通的Heroku路由层中来工作。
您可以通过创build一个新的SSL端点的应用程序来终止SSL连接并将stream量路由到您现有的应用程序,从而充分利用此优势:
-
添加您的域名到您的应用程序:
$ heroku domains:add ssl.example.com
-
创build一个新应用程序:
$ heroku create endpoint-for-example-com
-
添加SSL端点加载项($ 20 /月):
$ heroku addons:create ssl:endpoint --app endpoint-for-example-com
-
将您的证书添加到您的新应用程序:
$ heroku certs:add server.crt bundle.pem server.key --app endpoint-for-example-com 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
-
使用分配给您的新应用(例如
kagawa-1482.herokussl.example.com
)的ssl端点作为您希望保护的域名的CNAME主机。 这通常在您的域名的DNSconfiguration中完成。
新的应用程序不需要任何dynos,但是对于SSL端点附件,将会收取20美元/月的费用。
笔记:
Heroku没有logging这个解决scheme,因此他们可能会在将来删除或改变这种行为。Heroku已经证实,这是安全的生产使用。- 请务必在与您的主应用程序相同的区域创build您的端点。
- 您的DNS更改可能需要一段时间才能生效。
最近heroku已经添加了自动LetsEncrypt TLS证书付费dynos,嗜好和up。 这将自动跨越任意数量的域和子域。 此方法仅适用于不需要通配符子域的情况。
另外,您可以使用certbot跨越多个域和子域来pipe理LEauthentication
certbot certonly --standalone -d example.com -d www.example.com -d test.net
您可以参考这个heroku文档上传自定义证书。
虽然与OP的问题不完全相同,但是我能够在Heroku上以一个单一的SAN(主题替代名称)证书在$ 25 /年左右达到这个目标。
我在OSX中用多个主题替代名称( subjectAltName
)生成了一个CSR:
-
将
/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
-
然后我在生成CSR时使用了这个新的.cnf文件:
openssl req -nodes -newkey rsa:2048 -keyout server.key -out server.csr -config openssl.cnf
-
我从SSLs.com购买了证书。 他们的Comodo“PositiveSSL Multi-Domain”在撰写本文时为25.99美元/年,支持3-100个域名(域名超过3个,成本大约为12美元)。
-
我将CA bundle和.crt连接成一个.crt(按照这个顺序),并将其添加到Heroku中。 所有3个域都被添加到应用程序中,并指向相同的CNAME,并按照预期通过https://parsing。
如果对于任何感兴趣的人来说这是一条可行的路线,那么额外的端点要比$ 240 /年便宜得多。
相关链接:
我正在处理这个问题。 Herokubuild议获得SAN / UCC证书,该证书允许您列出多个域。 只是做了与GoDaddy,它到目前为止工作得很好。
https://devcenter.heroku.com/articles/ssl-endpoint#serving-multiple-domains
我们有多个域名属于多个公司。 SAN / UCC证书仅适用于同一实体/公司/个人拥有的域名。 我们在后台创build了一个快速修复的iFrame,但是我们之后将平台移到了我们自己的基础架构中。