gpt4 book ai didi

php - 如何检查主机名是否与 PHP 中 SSL 证书中的 Common Name 匹配?

转载 作者:太空宇宙 更新时间:2023-11-03 13:51:30 28 4
gpt4 key购买 nike

用这个PHP脚本

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPGET, true);
curl_setopt($ch, CURLOPT_URL, 'https://sf.net/');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
if (!curl_exec($ch)) {
echo "Error #" . curl_errno($ch) . ": " . curl_error($ch);
}
?>

我没有错误。这似乎没问题。

预期的结果应该是一条错误消息,表明证书名称 sourceforge.net 与预期的 sf.net 不匹配。你怎么看?

最佳答案

如果您访问 sf.net,您将获得 sf.net 的证书,而不是 sourceforge.net 的证书。 sf.net 的证书具有 CN *.sf.net 和 SAN DNS:*.sf.net, DNS:sf.net。这意味着证书与 URL 匹配。不要对以下指向 sourceforge.net 的重定向感到困惑,因为在此重定向中,它将获得对新目标有效的新证书。

除此之外,通过将 CURLOPT_SSL_VERIFYPEER 设置为 false,您将接受任何证书,无论它是否由本地受信任的 CA 颁发。设置 CURLOPT_SSL_VERIFYHOST 也无济于事,因为结合这两个设置,您将接受名为 sf.net 的自签名证书,这使得中间人攻击变得微不足道.

关于php - 如何检查主机名是否与 PHP 中 SSL 证书中的 Common Name 匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42343221/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com