我在一个域的不同一级子域上有几个相关服务。目标是在所有子域中启用 https。
因此,我从 GoDaddy 为我的域名 *.domain.com 购买了通配符 SSL 证书。
然后我制作了一个如下所示的密钥:http://blog.dynamic50.com/2011/02/15/ssl-on-wildcard-domains-on-heroku-using-godaddy/
接下来我更新了两个服务:其中一个是独立的 Ruby 应用程序 (goliath),托管在 Rackspace 上,另一个托管在 Heroku 上。独立的应用程序运行正常(证书有效,但 Chrome 表示无法检查证书是否已被吊销),但 Heroku 应用程序浏览器显示“恐慌,证书已被吊销,请离开”。这两个应用程序使用相同的 crt 和密钥文件。问题可能出在哪里?
以下是服务的 CURL 输出(最后几行有差异):
1. standalone
* SSLv3, TLS handshake, Client hello (1):
...
* SSLv3, TLS handshake, Finished (20):
* SSL connection using AES256-SHA
* Server certificate:
* subject: O=*.mydomain.com; OU=Domain Control Validated; CN=*.mydomain.com
* start date: 2012-05-17 12:37:43 GMT
* expire date: 2012-08-02 12:34:51 GMT
* subjectAltName: standaloneservice.mydomain.com matched
* issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certificates.godaddy.com/repository; CN=Go Daddy Secure Certification Authority; serialNumber=07969287
* SSL certificate verify ok.
2. heroku
* SSLv3, TLS handshake, Client hello (1):
...
* SSLv3, TLS handshake, Finished (20):
* SSL connection using AES256-SHA
* Server certificate:
* subject: O=*.mydomain.com; OU=Domain Control Validated; CN=*.mydomain.com
* start date: 2011-08-02 12:34:51 GMT
* expire date: 2012-08-02 12:34:51 GMT
* subjectAltName: herokuservice.mydomain.com matched
* issuer: C=US; ST=Arizona; L=Scottsdale; O=GoDaddy.com, Inc.; OU=http://certificates.godaddy.com/repository; CN=Go Daddy Secure Certification Authority; serialNumber=07969287
* SSL certificate verify result: self signed certificate in certificate chain (19), continuing anyway.
欢迎任何建议和调试技巧。
谢谢!
答案1
这两个证书的有效期开始日期不同,因此您不能对这两个证书使用相同的证书。
我敢打赌,你今天让 GoDaddy 重新颁发了通配符证书(这是在独立服务中安装的证书 - 它的有效期是部分年份而不是全年),并且 Heroku 服务上的证书在此过程中被撤销了。
验证openssl s_client -connect server:port -showcerts
- 两个证书具有相同的序列号,但它们的指纹不同。您需要确保将新证书放入 Heroku 想要的位置,然后重新启动服务以便加载新文件。