2014-03-14 105 views
0

我更新了我在Heroku上的所有證書,用這個命令Heroku的SSL問題

heroku certs:add heroku.pem server.key -a myapp --bypass 

heroku.pem已詳情如下

-----BEGIN CERTIFICATE----- 
entrustcert.crt 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
L1Cchain.txt 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
L1Croot.txt 
-----END CERTIFICATE----- 

當我運行在服務器上測試它給我的給我驗證失敗此結果

SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway. 

我已委託SSL證書。

請幫我解決這個問題

命令我使用的測試:

curl -kvI "my HTTPS domain name" 

回答

0

嘗試this指南。

另外,official documentation狀態

下一頁添加您的證書,任何中間證書和私鑰到端點與證書:add命令

它有點與上述導向矛盾因爲它沒有說任何關於根CA證書的事情。但我肯定會嘗試指導,如果它不起作用,我會從heroku.pem中刪除根證書。

0

請幫我解決這個問題

捲曲不應被自稱錯誤19.錯誤19是OpenSSL的X509_V_ERR_SELF_SIGNED_CERT_IN_CHAIN。你至少有兩個問題。


首先,您要發送包含您的根的證書鏈。不要發送證書鏈中的根。只將最終實體(服務器)證書和構建鏈所需的任何中間件發送到受信任的根。如果沒有中間件,則只發送最終實體(服務器)證書。

如果我正確地讀您的文章,這意味着:

-----BEGIN CERTIFICATE----- 
server cert (entrustcert.crt) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
intermediate cert (L1Cchain.txt) 
-----END CERTIFICATE----- 

其次,你需要捲曲信任你的根。我沒有真正使用Curl,所以我不知道如何傳遞一個單一的根來信任。通過curl(1) man pages查看,它不會出現Curl允許您指定一個信任點。所以捲曲可能是這項工作的錯誤工具。

這裏是你如何與OpenSSL的s_client(該CAfile選項)做到這一點:

printf "GET/HTTP/1.0\r\n" | openssl s_client \ 
    -connect example.com:443 \ 
    -CAfile <root to trust> 

-CAfile將使用委託根源之一在Entrust Root Certificates - SSL。但我不知道哪一個,因爲你沒有共享一個網址或域名。

如果需要,可以刪除printf,然後使用openssl s_client。但s_client將不會完成,直到插座關閉(或CTRLC被按下)。

使用OpenSSL s_client跟蹤,您也將能夠確定構建鏈所需的中間體。有關解釋s_client結果的示例,請參閱s_client verify certificate failed, but browser acceptCan't verify CA certificate unless CApath or CAfile used


三,-k選項是一個客戶端的關鍵選項。我不相信你需要它,因爲你沒有發送客戶端證書。但我不相信這也是你的問題的一部分。


我有委託的SSL證書。

最後,您可以從Startcom獲得免費的1級證書。在大多數桌面和移動瀏覽器中,它們都是默認信任的。

雖然Startcom免費頒發證書,但他們會收取撤銷費用,因爲這是要花錢的。其他人收取預先撤銷費用,如果不需要的話,可以將錢存入其中。