当前位置: 首页 > 知识库问答 >
问题:

PHP CURLCURLOPT_SSL_VERIFYPEER忽略

穆才良
2023-03-14

由于某些原因,我无法将CURL与HTTPS一起使用。在我升级curl库之前,一切都很正常。现在,我在尝试执行CURL请求时遇到了这种响应:SSL CA证书(路径?访问权限?)有问题

以下是关于相关问题的建议,我试图做到以下几点:

>

curl_setopt($cHandler, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);

启用CURLOPT_SSL_VERIFYPEER并指向从http://curl.haxx.se/docs/caextract.html下载的cacert.pem

curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);  
curl_setopt($cHandler, CURLOPT_CAINFO, getcwd() . "/positiveSSL.ca-bundle");

我也试着用positiveSSL做同样的事情。ca bundle,作为我尝试连接的服务器的捆绑ca证书提供。

编辑php ini设置与curl.cainfo=cacert.pem(文件在同一目录和apache访问)

/etc/pki/nssdb重命名为/etc/pki/nssdb.old

不幸的是,以上这些都不能解决我的问题,我经常遇到SSL CA证书(路径?访问权限?)的问题消息

我一开始就不需要这种验证(我知道安全问题)。

有人有其他建议吗?

使现代化

更新到最新的库并重启整个盒子后,不仅仅是apache,我正在做这一切似乎现在又开始工作了!!!

共有2个答案

朱俭
2023-03-14

我们在CentOS7机器上也遇到了同样的问题。禁用VERIFYHOSTVERIFYPEER并没有解决问题,我们不再有cURL错误,但响应仍然无效。对与cURL相同的链接执行wget也会导致证书错误。

-

对我们来说,这似乎是一个内存损坏问题。重新启动VPS将库重新加载到内存中,现在它可以工作了。因此,如果上述来自@clover的解决方案不起作用,请尝试重新启动计算机。

卞浩漫
2023-03-14

根据文档:要验证主机或对等证书,您需要使用CURLOPT\u CAINFO选项指定备用证书,或者可以使用CURLOPT\u CAPATH选项指定证书目录。

还要看CURLOPT_SSL_VERIFYHOST:

  • 1检查SSL对等证书中是否存在公共名称
  • 2检查是否存在公共名称,并验证其是否与提供的主机名匹配
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
 类似资料:
  • 问题内容: 我正在开发一个使用Spring-boot,关系数据库和Elasticsearch的应用程序。 我在代码的2个不同位置使用JSON序列化: 在REST API的响应中。 当代码与Elasticsearch交互时。 我在Elasticsearch中需要一些属性,但我想向应用程序用户隐藏(例如,来自关系数据库的内部ID)。 这是一个实体的例子: 问题 :当对象持久化在Elasticsearc

  • 问题内容: 我正在某个网站上插入一些标题中的换行符。假设我无法编辑源HTML,是否有CSS可以忽略这些中断的方法? 我正在移动网站的优化,所以我真的不想使用JavaScript。 问题答案: 使用css,您可以“隐藏” br标签,它们不会起作用: 如果只想在特定的标题类型中隐藏某些内容,只需使CSS更具体即可。

  • 问题内容: 这是我的实体: 这是我获得人员名单的方式: 如果我正确理解提取图,则它必须仅加载我指定的那些字段。但是,字段“ birthDate”也已加载。此外,我看到在hibernateSQL查询中选择了4列。 如何解决?我使用hibernate 5.1.0作为JPA提供程序。 问题答案: 实体图旨在控制延迟或渴望加载哪些关系(例如,一对一,一对多等)。它们可能不适用于加载各个列(取决于提供程序)

  • 我在一些字段上有@NotNull注释。然而,当我尝试生成diffChangelog时,它会删除所有非空约束 示例类: 差异集: 唯一的解决方案似乎是在每个字段上添加一个额外的注释@列(nullable=false)。我可以做任何事情,这样我就不必在每个字段上添加额外的注释。

  • 如果某个接口不需要进行验证工作,可以在@Api注解上设置属性ignoreValidate=true(默认false)。这样调用接口时,不会进行验证操作。 同样的,在@ApiService注解里也有一个对应的ignoreValidate属性,设置为true的话,Service类下面所有的接口都忽略验证。 忽略所有接口验证 设置ApiConfig.setIgnoreValidate(true),所有接

  • 忽略域名 您可能要从mitmproxy的拦截机制中免除部分流量的主要原因有两个: 证书固定:使用证书固定保护某些流量, 而mitmproxy的拦截会导致错误。例如,如果mitmproxy处于活动状态,则Twitter应用程序,Windows Update或Apple App Store无法工作。 便利性:您实际上并不关心某些流量,而只是希望它们消失。请注意,在这里,mitmproxy的Limit选