Php 本地SSL https请求上的错误

Php 本地SSL https请求上的错误,php,ssl,curl,https,Php,Ssl,Curl,Https,我在Digital Ocean上有一个UbuntuLamp服务器,并设置了一个SSL证书(工作非常好)。该网站通过https运行(http请求被重定向到https)。在我的一个PHP脚本中,我必须向本地服务器发送一个cURL请求。我基本上是发送一个带有JSON数据的POST请求,该请求将用于在另一端模板化文档。简言之,两端都位于同一站点上: https://example.com/form.php https://example.com/templates/document.php 将数据从

我在Digital Ocean上有一个UbuntuLamp服务器,并设置了一个SSL证书(工作非常好)。该网站通过https运行(http请求被重定向到https)。在我的一个PHP脚本中,我必须向本地服务器发送一个cURL请求。我基本上是发送一个带有JSON数据的POST请求,该请求将用于在另一端模板化文档。简言之,两端都位于同一站点上:

  • https://example.com/form.php
  • https://example.com/templates/document.php
将数据从
form.php
发送到
templates/document.php
时出现的cURL错误是:

SSL证书问题:无法获取本地颁发者证书

我读过至少20篇文章,告诉我在php.ini的原始行位置添加这些行:

  • curl.cainfo=“/etc/ssl/certs/cacert.pem”
  • openssl.cafile=“/etc/ssl/certs/cacert.pem”
CA证书的位置如上所述,但cURL错误仍然存在

我可以通过强制cURL请求本身中的
CURLOPT\u SSL\u VERIFYPEER
false
来绕过此错误。然而,我知道这不是一个在生产模式的网站选择

不可能对自己的主机执行这样的SSL cURL请求吗?还是因为它只是一个本地请求,所以我可以对这个非常特定的请求禁用
CURLOPT\u SSL\u VERIFYPEER

提前谢谢你

编辑:

向cURL请求添加详细选项将显示以下信息:

  • 正在尝试123.456.789.01
  • 已连接到example.com(123.456.789.01)端口443(#0)
  • ALPN,提供http/1.1
  • 密码选择:全部:!出口:!出口40:!出口56:!阿努尔:!低:!RC4:@强度
  • 已成功设置证书验证位置:
  • CAfile:/etc/ssl/certs/cacert.pem CApath:/etc/ssl/certs
  • SSL证书问题:无法获取本地颁发者证书
  • 正在关闭连接0

不过,它似乎没有任何帮助。

我的猜测是,卷曲部分可能无法读取cafile。或者cacert.pem本身有问题。你能通过命令行连接吗?
卷曲吗https://example.com/templates/document.php --verbose--cacert/var/ssl/cacert.pem
工作吗?如果您向Web用户发出su请求,它是否有效?
是否不可能向其自己的主机发出此类SSL cURL请求?
为什么不可能。但是如果我没有弄错的话,
VERIFYPEER
更能防止“中间人”类型的攻击。所以,它可能仍然不理想。恐怕这是另一个问题,但在我的例子中,curl没有连接到123.456.789.01,而是连接到127.0.0.1。这就是解决方案:@DominikSpäte-刚刚尝试过,不幸的是,同样的结果。@StefanM该命令有效,它甚至可以用于webuser www数据。但在PHP中不能使用curl()。我已经仔细检查了我是否使用了相同的参数。