是否可以在单个Heroku应用程序中拥有许多SSL证书?
我们有多个不同类型的域名,TLD指向我们的应用程序,需要保护每个域名。最好不要重定向到不同的安全URL。
答案 0 :(得分:92)
有一种方法可以让多个SSL端点将流量路由到同一个应用程序。
SSL端点通过终止SSL连接并将未加密的流量注入正常的Heroku路由层来工作。
您可以通过创建具有新SSL端点的新应用来终止SSL连接并将流量路由到现有应用,从而充分利用这一点:
将您的域名添加到您的应用中:
$ heroku domains:add ssl.example.com
创建一个新应用:
$ 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 --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
使用分配给新应用的ssl端点(例如kagawa-1482.herokussl.example.com
)作为您要保护的域名的CNAME主机。这通常在域的DNS配置中完成。
新应用程序不需要任何dynos,但SSL端点附件每月收费20美元。
注意:
答案 1 :(得分:6)
最近,heroku为付费dynos,爱好和up添加了自动LetsEncrypt TLS证书。这将自动适用于任意数量的域和子域。此方法仅在您不需要通配符子域时才有效。
此外,您可以使用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:
将/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捆绑包和.crt连接起来,我将其发送到单个.crt(按此顺序)并将其添加到Heroku。所有3个域名都已添加到应用程序并指向相同的CNAME,并且所有域名都按预期解析为https://。
如果对于任何感兴趣的人来说这是一条可行的途径,那么额外终点的价格要低于240美元/年。
相关链接:
答案 3 :(得分:-2)
我自己处理这个问题。 Heroku建议获得SAN / UCC证书,该证书允许您列出多个域。刚刚与GoDaddy合作,到目前为止工作正常。
https://devcenter.heroku.com/articles/ssl-endpoint#serving-multiple-domains
答案 4 :(得分:-4)
我们有多个域名属于多家公司。 SAN / UCC证书仅适用于同一实体/公司/个人拥有的域名。我们在后台创建了一个iFrame作为快速修复程序,但我们已将平台移至我们自己的基础架构。