我需要从IP地址中提取SSL证书信息,而不是从域名中提取。我们以www.adidas.com为例。该域名解析为2.21.90.7 IP地址。下面的代码成功提取证书信息,如果stream_socket_client连接到域名,但stream_socket_client甚至不创建没有任何错误,如果连接到IP地址,为什么?
$addr = '2.21.90.7';
//$addr = 'www.adidas.ru';
$get = stream_context_create(array("ssl" => array("capture_peer_cert" => TRUE)));
$read = stream_socket_client("ssl://".$addr.":443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $get);
var_dump($get);
var_dump($read);
var_dump($errno);
var_dump($errstr);
$cert = stream_context_get_params($read);
var_dump($cert);
$certinfo = openssl_x509_parse($cert['options']['ssl']['peer_certificate']);
var_dump($certinfo);
PS:如果我在Chrome浏览器中打开https://2.21.90.7/,它会告诉我,该证书会按预期发布到www.adidas.com。