我认为 Zend_Http_Client 使用的标准连接适配器不可能。我做了一些挖掘,看起来适配器使用 fsockopen 几乎隐藏了您要查找的内容。方法是自己打开socket,先拿到证书:
$url = 'mail.google.com'; // For example
$context = stream_context_create();
$res = stream_context_set_option($context, 'ssl', 'capture_peer_cert', true);
$res = stream_context_set_option($context, 'ssl', 'verify_host', true);
if ($socket = stream_socket_client("tls://$url:443/", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context)) {
if ($options = stream_context_get_options($context)) {
if (isset($options['ssl']) && isset($options['ssl']['peer_certificate'])) {
$keyinfo = openssl_x509_parse($options[$wrapper]['peer_certificate']);
var_dump($keyinfo);
}
}
fclose($fp);
}