我最初在运行 CURLOPT_SSL_VERIFYPEER 的 2 台服务器之间建立了连接,设置为“false”,SSL 证书中没有通用名称以避免错误。以下是使用证书连接到服务器的客户端代码:
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,FALSE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
但是,我最近更改了此代码(将其设置为 true)并以 PEM 格式指定了计算机证书。
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,TRUE);
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,2);
curl_setopt($ch,CURLOPT_CAINFO,getcwd().'/includes/hostcert/Hostname.crt');
这在测试机器上的本地网络上效果很好,因为证书是用它的 CN 主机名签名的。如何设置 PHP 代码,使其仅信任主机名计算机并保持安全连接。
我很清楚您可以将 CURLOPT_SSL_VERIFYHOST 设置为“0”或“1”并将 CURLOPT_SSL_VERIFYPEER 设置为“false”,但这些不是有效的解决方案,因为它们破坏了 SSL 安全性。
我的 /etc/hosts 文件如下:
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost ExampleHostName
::1 localhost.localdomain localhost