我正在尝试验证远程站点的 SSL 证书。 Curl 可以提供一般的成功或失败指示,但没有详细信息。我的客户需要详细说明证书失败的原因:错误的域、已撤销或过期的证书、不受信任的 CA 等。
当证书上的主机名错误时,curl_error($ch) 返回正确的错误。但如果证书过期或被吊销,它不会返回任何信息,它会返回 "Peer certificate cannot be authenticated with known CA certificates"
这是不正确的。
我如何使用 PHP 获取远程站点证书无效/不受信任的确切原因??
看起来 Curl 做不到这一点。
为了获取有效期,我使用了this answer
并添加了这个:
$cert_info = openssl_x509_parse($cont["options"]["ssl"]["peer_certificate"]);
if($cert_info['validFrom_time_t'] < time() < $cert_info['validTo_time_t']) {
//Certificate is CURRENT!
} else {
//Certificate is Expired or not yet valid
}
我是一名优秀的程序员,十分优秀!