我本来有我的2个CURLOPT_SSL_VERIFYPEER设置为“假”的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为“假”,但这些都不是有效的解决方案,因为他们打破了SSL安全。
我的/ etc / hosts文件如下:
#<ip-address> <hostname.domain.org> <hostname>
127.0.0.1 localhost.localdomain localhost ExampleHostName
::1 localhost.localdomain localhost