2012-11-19 72 views
37

在单个Heroku应用程序中可以使用多个SSL证书吗?在一个Heroku应用程序中使用多个SSL证书

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

+0

查看答案:http://stackoverflow.com/questions/13328586/multiple-ssl-certificates-on-single-heroku-app。应该在Heroku Cedar堆栈上工作就好了。 – schmielson

+0

不幸的是,这并没有解决我们的要求。我们有多个属于多个公司的域名。 SAN/UCC证书仅适用于同一实体/公司/个人拥有的域名。我们在后台创建了一个iFrame作为快速修复程序,但是后来我们将平台移到了我们自己的基础架构中。 –

回答

-4

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

89

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

新应用程序不需要任何dynos,但SSL端点插件的收费为20美元/月。

注:

  • 这个解决方案不是由Heroku的记录,所以它可能是他们 会删除或更改,今后这种行为。 Heroku已确认这对生产使用是安全的。
  • 请务必在与主应用程序相同的区域创建您的端点。
  • 您的DNS更改可能需要一段时间才能生效。
+1

嘿同样,你能给我多一点关于DNS设置的指导吗?如果我没有在该SSL主机服务器上运行的应用程序,如何让newdomain.com指向domain.com上的应用程序,同时在newdomain-ssl应用程序上获得SSL证书? –

+0

这对我有用,谢谢山姆! – Alex

+0

布拉德 - 在你的新域名上,你需要添加指向新SSL端点的CNAME记录。然后,Heroku将负责将请求路由到oldapp,因为您在上面的第1步中添加了newdomain。 – Alex

4

虽然与OP的问题不完全相同,但我在Heroku上用单个SAN(主题备用名称)证书获得了这个优惠,价格大约为25美元/年。

我生成CSR具有多个主题替代名称(subjectAltName)在OSX由:

  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 bundle和.crt,并将它们发送到单个.crt(按该顺序),并将其添加到Heroku。所有3个域名都添加到应用中,并指向相同的CNAME,并且所有3个域名都按照预期通过https://解析。

便宜很多超过240 $额外的端点/年,如果这是任何人都感兴趣的可行途径。

相关链接:

5

最近的Heroku已经增加了自动LetsEncrypt TLS证书支付DYNOS,爱好及以上。这将自动跨越任意数量的域和子域。此方法仅适用于不需要通配符子域的情况。

heroku

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

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

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