php - 具有不同方案的同一站点上的不同证书主题AltName
问题描述
嘻嘻,
经过大量试验和错误读取证书数据以显示信息。我的用例是 google.nl 来读取带有链的证书。
我目前的问题是不同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
我想得到的是与单击证书信息详细信息时显示的浏览器信息相同的正确结果。
在 Safari 浏览器中的 OSX 上,您会看到第一个结果的列表。
谢谢!
解决方案
推荐阅读
- android - 获取内部内存大小免费/总/可用
- python - 下载图片到绝对路径
- php - 更新的 Woommerce 购物车总折扣总额 未更新订单已保存
- android - android:ellipsize 和 android:maxLines 的组合不起作用
- shell - 使用 sed 插入包含 ' 和 $variable 的多行不起作用
- html - 网站在桌面上响应但在移动设备上不响应
- javascript - 如何防止单击日期并在引导日期选择器中显示警报消息?
- c# - 如何使用 c# 从 API Gateway 获取 lambda 中的请求正文
- griddb - Griddb 获取数据有限内存
- python - 从 pyodbc 行创建字典会引发错误