2012-11-19 149 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上傳自定義證書。