如何检查我的SSL证书是否已被吊销?

最近发现的心软的漏洞已经促使证书颁发机构重新颁发证书。

我有两个在发现心脏病漏洞之前生成的证书。 在SSL发行者告诉我重新生成证书后,我用新的证书更新了我的服务器/域。

如果我的理解是正确的,那么旧证书应该已经被CA吊销,并且应该已经到达CRL(证书吊销列表)或OCSP数据库(在线证书状态协议),否则在技术上可能有人执行“中间人攻击“,通过从受损证书中获取的信息重新生成证书。

有没有一种方法来检查我的旧证书是否已经将其添加到CRL和OCSP中。 如果他们没有,有办法让他们包括在内?

更新:情况是,我已经取代了我的证书,我所有的是旧证书的.crt文件,所以使用URL来检查是不是真的可能。

从您的证书获取ocspurl:

$ 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 $ 

您可以在Windows上使用certutil:

如果您有证书并要validation其有效性,请执行以下命令:

 certutil -f –urlfetch -verify [FilenameOfCertificate] 

例如,使用

 certutil -f –urlfetch -verify mycertificatefile.cer 

来源/更多信息: TechNet

此外,一定要检查您的CA. 只是因为你重新签发证书/获得新证书,并不意味着他们会自动撤销证书!

如果您已经通过产生这些证书的CA撤消了证书,那么他们将会把证书提交给OCSP和CRL。

如果你想确认是这样的话,请从证书中提取ocsp url,然后构造一个包含证书序列号,ca签发者证书和检索ocsp响应的ocsp请求,然后可以parsing它来检查并确认它确实被撤销。

更多细节在这个有用的页面: http : //backreference.org/2010/05/09/ocsp-verification-with-openssl/

注意:这需要使用openssl库。

编辑1:我看到你在这个答案之后明确地添加了关于OCSP和CRL的信息。

您可以使用此SSLLabs服务来testingSSL证书,但您需要从Web访问它们。 而且你可以找出更多的信息,使这个服务提供一些审计。