私人服务器之间的卷曲PHP正确的SSL使用自签名证书(cURL PHP Proper SSL bet

2019-10-16 19:53发布

我本来有我的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

Answer 1:

你需要生成一个有效的主机名称的证书, 受到了客户的要求 。 如果你已经使用machine.local您的内部名称,但现在想用外部客户端通过调用它machine.example.org ,那么你就需要使用到有效证书machine.example.org

如果你既需要(因为在同一台机器可以用不同的主机名来称呼),使用对象可选名称扩展,并把多个DNS条目的证书中。



文章来源: cURL PHP Proper SSL between private servers with self-signed certificate