【发布时间】:2016-11-25 17:12:38
【问题描述】:
我有一个代码可以检查网站是否有 SSL 证书,如下所示:
$url = "stackoverflow.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']);
var_dump($certinfo);
如果我插入一个包含 HTTPS 的 url,此代码会返回给我有关证书的所有信息,但如果我插入一个不包含 HTTPS 的 url,我会收到以下错误:
警告:stream_socket_client():无法连接到 ssl://:443 (无法连接,因为目标机器主动 拒绝它。)在
我该如何解决这个问题?
【问题讨论】:
-
该错误表明远程服务器未侦听或阻止连接到端口 443(SSL 端口)。您需要适当地处理该错误,如果遇到它,您就知道该站点不支持 SSL。
-
好吧,在这种情况下,我需要另一个代码来检查该请求的响应,如果状态代码是
200我执行我的代码,如果不是我不'不执行该代码并避免警告...