gpt4 book ai didi

php - 具有自签名证书的私有(private)服务器之间的 cURL PHP Proper SSL

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

我最初在我的 2 个运行的服务器之间建立了连接,CURLOPT_SSL_VERIFYPEER 设置为“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

最佳答案

您需要根据客户端的要求生成具有有效主机名的证书。如果您使用 machine.local 作为您的内部名称,但现在想使用外部客户端通过 machine.example.org 调用它,那么您需要您使用的证书对 machine.example.org 有效。

如果您需要两者(因为同一台机器可能被称为不同的主机名),请使用主题备用名称扩展并在您的证书中放置多个 DNS 条目。

关于php - 具有自签名证书的私有(private)服务器之间的 cURL PHP Proper SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10901189/

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