php – file_get_contents():对等证书不匹配

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – file_get_contents():对等证书不匹配脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 PHP 5.5,但我不得不更新它,现在我使用的是PHP 5.6.19.

现在,当我尝试与外部API通信时,我收到警告:

它还没有出现在以前的PHP版本中.

$encryptedencodedData // this is JSON encoded
//array,then encrypted by mcrypt wITh rijndael-128 and finally bin2hex.

    $context = stream_context_create(array(
                        'http' => array(
                            'method' => 'POST','header' => 'Content-tyPE: application/json','content' => $encryptedEncodedData,)
                    ));

    $api = 'https://api.domain.COM/service';

    $response = file_get_contents($api,FALSE,$context);

我不知道这个警告的原因是什么.

我决定禁用peer verfy,直到我的管理员修复了cert的问题,然后我更改了$context:

$context = stream_context_create(array(
                    'http' => array(
                        'method' => 'POST','verify_peer'      => false,'verify_peer_name' => false,),)
                );

但仍然没有工作.我这样做了吗?得到同样的警告.

SSL证书似乎有问题.

但是在PHP 5.6中更改了设置,您可以通过忽略验证来修复此问题,或者当您拥有自签名证书时,allow_self_signed可以相关.

stream_context_create($ourStuff,['verify_peer' => false]);

更多信息和设置:
http://php.net/manual/en/context.ssl.php

这是从http://php.net/manual/en/function.stream-context-create.php提到的

请注意,禁用验证可能存在安全风险,只有在您知道自己在做什么时才应该这样做.

在较新的PHP版本中,verify_peer的认值已更改为true(> = 5.6).这意味着始终存在安全风险.

正如deceze所指出的那样,只有当你确定所有其他东西都像你自己的PHP配置一样时,你才应该这样做:

步骤1:使用Openssl CLI工具或您喜欢的任何其他方法测试远程证书是否有效.如果远程证书是好的.

第2步:找出PHP无法接受的原因.如果是因为PHP验证通配符证书有问题,请查看是否有一些修复.或者,如果是因为PHP没有本地CA存储,这很容易修复.

第3步:禁用对等验证.

脚本宝典总结

以上是脚本宝典为你收集整理的php – file_get_contents():对等证书不匹配全部内容,希望文章能够帮你解决php – file_get_contents():对等证书不匹配所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。