Хи,
После большого количества проб и ошибок, чтобы прочитать данные сертификатов для отображения информации.Мой пример использования - google.nl для чтения сертификата с цепочками.
Моя текущая проблема - это разница между разными схемами в результатах поиска домена google для различных subjectAltNames.То, что я не хочу исправлять, - это код для чтения той же информации о сертификате, которую браузер выдает на дисплее, информацию о сертификате на каждом запрошенном веб-сайте.
Мой текущий тестовый код:
<?php
$url = "https://www.google.nl";
$orignal_parse = parse_url($url, PHP_URL_HOST);
$get = stream_context_create([
"ssl" => [
'capture_peer_cert' => true,
'capture_peer_cert_chain' => true,
'disable_compression' => 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']);
echo '<pre>';
print_r($certinfo);
результат subjectAltNames в приведенном выше коде:
[subjectAltName] => DNS: .google.com, DNS: .android.com, DNS: .appengine.google.com, DNS: .cloud.google.com, DNS: .db833953.google.cn, DNS: .g.co, DNS: .gcp.gvt2.com, DNS: .ggpht.cn, DNS: .google-analytics.com, DNS: .google.ca, DNS: .google.cl, DNS: .google.co.in, DNS: .google.co.jp, DNS: .google.co.uk, DNS: .google.com.ar, DNS: .google.com.au, DNS: .google.com.br, DNS: .google.com.co, DNS: .google.com.mx, DNS: .google.com.tr, DNS: .google.com.vn, DNS: .google.de, DNS: .google.es, DNS: .google.fr, DNS: .google.hu, DNS: .google.it, DNS: .google.nl, DNS: .google.pl, DNS: .google.pt, DNS: .googleadapis.com, DNS: .googleapis.cn, DNS: .googlecommerce.com, DNS: .googlevideo.com, DNS: .gstatic.cn, DNS: .gstatic.com, DNS: .gstaticcnapps.cn, DNS: .gvt1.com, DNS: .gvt2.com, DNS: .metric.gstatic.com, DNS: .urchin.com, DNS: .url.google.com, DNS: .youtube-nocookie.com, DNS: .youtube.com, DNS: .youtubeeducation.com, DNS: .yt.be, DNS: .ytimg.com, DNS: android.clients.google.com, DNS: android.com, DNS: developer.android.google.cn, DNS: developers.android.google.cn, DNS: g.co, DNS: ggpht.cn, DNS: goo.gl, DNS: google-analytics.com, DNS: google.com, DNS: googlecommerce.com, DNS: source.android.google.cn, DNS: urchin.com, DNS: www.goo.gl, DNS: youtu.be, DNS: youtube.com, DNS: youtubeeducation.com, DNS: yt.be
Если вы измените $ url на https://google.nl, то результат subjectAltNames изменится на;
[subjectAltName] => DNS:* .google.nl, DNS: google.nl
То, что я хотел бы получить, - это правильный результат, такой же, как информация о браузере, отображаемая при нажатии на информацию о сертификате.
В OSX в браузере Safari вы видите список первого результата.
Спасибо!