我今天早上购买了来自Comodo的SLL证书(通过DNSimple)并且一直试图让它在我的域上运行。叹。没有取得很大的成功。
我所拥有的证书在Comodo的电子邮件中列为:
Root CA Certificate - AddTrustExternalCARoot.crt
Intermediate CA Certificate - COMODORSAAddTrustCA.crt
Intermediate CA Certificate - COMODORSADomainValidationSecureServerCA.crt
Your EssentialSSL Certificate - www_XXXXXXX_com.crt
按照Ryan McGeary的博客文章,我确保我按照与电子邮件中建议的相反的顺序执行以下操作:
cat www_XXXXXXXX_com.crt COMODORSADomainValidationSecureServerCA.crt COMODORSAAddTrustCA.crt AddTrustExternalCARoot.crt > www_XXXXXXXX_com-bundle.pem
我也从DNSimple下载了密钥并将其保存到名为server.key
的文件中。
当我将证书添加到Heroku时,我使用以下命令:
heroku certs:add www_XXXXXXXX_com-bundle.pem server.key
以下内容似乎没有报告错误:
Resolving trust chain... done
Adding SSL Endpoint to XXXXXXXX... done
XXXXXXXX now served by XXXXXXXX.herokussl.com
Certificate details:
Common Name(s): XXXXXXXX.com
www.XXXXXXXX.com
Expires At: 2015-09-28 23:59 UTC
Issuer: /OU=Domain Control Validated/OU=EssentialSSL/CN=www.XXXXXXXX.com
Starts At: 2014-09-28 00:00 UTC
Subject: /OU=Domain Control Validated/OU=EssentialSSL/CN=www.XXXXXXXX.com
SSL certificate is verified by a root authority.
当我heroku certs
时,我得到以下内容:
Endpoint Common Name(s) Expires Trusted
------------------------- ------------------------------ -------------------- -------
XXXXXXXXXXX.herokussl.com www.XXXXXXXX.com, XXXXXXXX.com 2015-09-28 23:59 UTC True
按照Heroku的指示,我尝试使用证书:
curl -kvI https://www.XXXXXXXX.com
Heroku说我应该期望输出类似于:
$curl -kvI https://www.example.com
* About to connect() to www.example.com port 443 (#0)
* Trying 50.16.234.21... connected
* Connected to www.example.com (50.16.234.21) port 443 (#0)
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using AES256-SHA
* Server certificate:
* subject: C=US; ST=CA; L=SF; O=SFDC; OU=Heroku; CN=www.example.com
* start date: 2011-11-01 17:18:11 GMT
* expire date: 2012-10-31 17:18:11 GMT
* common name: www.example.com (matched)
* issuer: C=US; ST=CA; L=SF; O=SFDC; OU=Heroku; CN=www.heroku.com
* SSL certificate verify ok.
我没有得到类似的东西......
* Adding handle: conn: 0x7fe62c004400
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 0 (0x7fe62c004400) send_pipe: 1, recv_pipe: 0
* About to connect() to www.XXXXXXXX.com port 443 (#0)
* Trying 50.16.247.106...
* Connected to www.XXXXXXXX.com (50.16.247.106) port 443 (#0)
* TLS 1.2 connection using TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
* Server certificate: www.XXXXXXXX.com
* Server certificate: COMODO RSA Domain Validation Secure Server CA
* Server certificate: COMODO RSA Certification Authority
* Server certificate: AddTrust External CA Root
> HEAD / HTTP/1.1
> User-Agent: curl/7.30.0
> Host: www.XXXXXXXX.com
> Accept: */*
这似乎表明,当我尝试https://www.XXXXXXXX.com
(我的根地址)时,我没有得到任何SSL的指示。
显然有些事情是错的,但我不知道是什么,或者如何纠正它。我已经按照我在网上找到的所有建议,但这一切似乎与我从Comodo收到的证书略有不同。我不知道如何通过这个来使SSL证书工作。
任何解决这个问题的帮助都会非常好,因为它真的让我很难过。
我还确保我的www.XXXXXXXX.com和XXXXXXX.com的DNS记录指向设置中所述的herokussl.com网址。
我已经离开了这个10个小时希望它可能“波及”,但是有些不对劲我不知道是什么。
提前感谢您提供的任何帮助。
答案 0 :(得分:1)
Simone非常乐于帮助检查事情似乎与Heroku安装证书一样正常。然而,似乎有混合内容"在我的每个HTML页面上,这意味着"受保护的" Safari中没有出现图标(并且在Firefox中以有限的方式显示)。
在使用https://而不是http://更改要引用的所有HTML内容时,为我提供了整页所需的安全性。
我还需要将以下内容添加到application.rb
以使我的Rails应用程序安全地为所有页面提供服务:
config.force_ssl = true
希望这对其他人有用!