为什么撤销SSL证书?

时间:2017-02-20 19:30:38

标签: php ssl

BadSSL表示此Url https://revoked.badssl.com/已获取SSL吊销证书。

在PHP中,SSL证书的失效日期设置为$url = "https://revoked.badssl.com/"; $orignal_parse = parse_url($url, PHP_URL_HOST); $get = stream_context_create(array("ssl" => array("capture_peer_cert" => TRUE))); $read = stream_socket_client("ssl://".$orignal_parse.":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $get); $cert = stream_context_get_params($read); $certinfo = openssl_x509_parse($cert['options']['ssl']['peer_certificate']); $validFrom = date('Y-m-d H:i:s', $certinfo['validFrom_time_t']); $validTo = date('Y-m-d H:i:s', $certinfo['validTo_time_t']); $current = date('Y-m-d H:i:s', time()); $validFrom = 2016-09-02 00:00:00 $validTo = 2019-09-11 12:00:00 $current = 2017-02-20 19:00:00

$validFrom > $current : False

$validTo < $current : False

$validFrom > $current OR $validTo < $current

如果SELECT Sizes.size_option,Product.product_name FROM Sizes JOIN Available_in ON Available_in.sizes_id = Sizes.sizes_id JOIN Product ON Product.product_id = Available_in.product_id WHERE Product.product_id IN ( SELECT Product.product_id FROM Product JOIN SELLS ON Sells.product_id = Product.product_id GROUP BY Product.product_id HAVING COUNT(Sells.store_location_id) = 5); 我认为该证书已被撤销。事实并非如此。

我可以用PHP&amp; amp; cURL库,无法检查证书撤销。如果证书被所有者泄露并撤销,您将永远不会知道它。这是对的吗?

2 个答案:

答案 0 :(得分:0)

  

如果$ validFrom&gt;证书无效/已撤销$ current OR $ validTo&lt; $ current

您描述的内容既不是已撤销也非无效,但已过期。 如果签名与证书不匹配,则证书无效(除其他外)。如果证书颁发机构明确撤销证书,则将其撤消。

仅通过查看证书就无法看到撤销状态,因为撤销证书不会改变它(不可能:它已经公开)。相反,需要使用Online Certificate Status Protocol (OCSP)查询状态或下载Certificate Revocation List (CRL)并根据此列表检查证书。

答案 1 :(得分:0)

已撤销!=已过期

validTo < currentDate时证书已过期。由其颁发的证书颁发机构撤销的证书表示不得在任何电子流程中接受此证书。

虽然可以自动检查证书有效期,但撤销证书是一种手动操作,例如因为持有人的数据已更改或证书已被盗。

证书颁发机构发布可以使用CRL或OCSP请求在线检查的已撤销证书列表。通常,证书包括CRL / OCSP URL。

<强>更新

审核PHP&amp; cURL库似乎没有支持。所以我担心你不能轻易解决你的问题

@StephenUlrich提出的库可能是一个选项,但缺点是CRL URL不是从证书中提取的,因此您需要知道每种证书使用的URL。还不是某些CA只发布OCSP