最近发现的 Heartbleed 漏洞促使证书颁发机构重新颁发证书。
我有两个证书是在 heartbleed 漏洞被发现之前生成的。在 SSL 发行者告诉我重新生成证书后,我已使用新证书更新了我的两个服务器/域。
如果我的理解正确,那么旧证书应该已经被 CA 撤销,并且应该将其放入 CRL(证书撤销列表)或 OCSP 数据库(在线证书状态协议)中,否则从技术上讲,有人可以通过从受损证书中获取的信息重新生成证书来执行“中间人攻击”。
有没有办法检查我的旧证书是否已进入 CRL 和 OCSP。如果没有,有没有办法将它们包括在内?
更新:情况是我已经替换了我的证书,我所拥有的只是旧证书的 .crt 文件,因此使用 url 进行检查实际上是不可能。
答案1
从您的证书中获取 ocsp url:
$ openssl x509 -noout -ocsp_uri -in /etc/letsencrypt/archive/31337.it/cert1.pem
http://ocsp.int-x1.letsencrypt.org/
$
向 ocsp 服务器发送请求来检查证书是否被撤销:
$ openssl ocsp -issuer /etc/letsencrypt/archive/31337.it/chain4.pem -cert /etc/letsencrypt/archive/31337.it/cert4.pem -text -url http://ocsp.int-x1.letsencrypt.org/ -header "HOST" "ocsp.int-x1.letsencrypt.org"
...
This Update: Oct 29 10:00:00 2015 GMT
Next Update: Nov 5 10:00:00 2015 GMT
$
这是一份很好的证书。
这是一个已撤销的证书:
$ openssl ocsp -issuer /etc/letsencrypt/archive/31337.it/chain3.pem -cert /etc/letsencrypt/archive/31337.it/cert3.pem -text -url http://ocsp.int-x1.letsencrypt.org/ -header "HOST" "ocsp.int-x1.letsencrypt.org"
...
This Update: Oct 29 12:00:00 2015 GMT
Next Update: Nov 5 12:00:00 2015 GMT
Revocation Time: Oct 29 12:33:57 2015 GMT
$
答案2
您可以在 Windows 上使用 certutil:
如果您有证书并想验证其有效性,请执行以下命令:
certutil -f –urlfetch -verify [FilenameOfCertificate]
例如,使用
certutil -f –urlfetch -verify mycertificatefile.cer
来源/更多信息: 科技网
此外,请务必与您的 CA 核实。仅仅因为您重新密钥化证书/获得新证书,并不意味着他们会自动撤销它!
答案3
你可以使用这个SSLLabs 服务测试 SSL 证书,但您需要它们可以从 Web 访问。此外,您可以了解更多信息,因为此服务提供一些审计。
答案4
如果您已通过生成证书的 CA 撤销证书,那么它们将会进入 OCSP 和 CRL。
如果您想确保情况确实如此,请从证书中提取 ocsp url,然后构建对该 url 的 ocsp 请求(包括证书序列号、ca 颁发者证书)并检索 ocsp 响应,然后可以解析它以检查并确认它确实已被撤销。
更多详细信息请参阅此实用页面:http://backreference.org/2010/05/09/ocsp-verification-with-openssl/
注意:这需要使用 openssl 库。
编辑1:我看到您在这个答案之后明确添加了有关 OCSP 和 CRL 的信息。