gpt4 book ai didi

Php SoapClient verify_peer=>true 使用 ca 签名证书失败

转载 作者:太空宇宙 更新时间:2023-11-03 12:56:58 24 4
gpt4 key购买 nike

当使用 php:s SoapClient 向 https soap 服务器发出 soap 请求失败并出现 SoapFault 时:

faultstring: Could not connect to hostfaultcode: HTTP

I have to be sure that the soap servers ssl certificate is valid so i am using

 <?php
$soap=new SoapClient("mwsdl.wsdl"
,array(
"location"=>"https:examplesoapserver.com"
,"trace"=>1
,"stream_context"=>stream_context_create(array(
"ssl"=>array(
"verify_peer"=>true
,"allow_self_signed"=>false
)
)
)
)
);

但这给了我 SoapFault。

我已经用不同的设置进行了测试:

OKlocation: has self-signed certificateverify_peer=>trueallow_self_signed=>true
OK (without setting verify_peer)location: has self-signed certificateallow_self_signed=>false
NOT OKlocation: has self-signed certificateverify_peer=>trueallow_self_signed=>false
OK (without setting verify_peer)location: ca-signed certificateallow_self_signed=>false
NOT OKlocation: ca-signed certificateverify_peer=>trueallow_self_signed=>false

我有:

php version: 5.3.3CentOS 6.4Apache/2.2.15

询问更多细节是否有助于解决问题。

提前感谢您的帮助!

最佳答案

问题是 php 在默认情况下有不安全的设置来处理 https 请求。它不会验证证书或检查证书中的域是否正确。

您也必须自己下载用于验证证书的文件。

您可以在以下网址下载一个:http://curl.haxx.se/ca/cacert.pem

正确处理它们的设置是

<?php
$client = new SoapClient("my-wsdlfile.wsdl"
,array(
"location"=>"https://examplesoapserver.com"
,"stream_context"=>stream_context_create(
array(
"ssl"=>array(
"verify_peer"=>true
,"allow_self_signed"=>false
,"cafile"=>"path/to/cacert.pem"
,"verify_depth"=>5
,"CN_match"=>"examplesoapserver.com"
)
)
)
)
);

其他可以使用 https 的 php 函数(如 file_get_contents )也存在同样的问题,因此确保其安全的相同解决方案应该有效。

默认情况下,CURL 具有安全设置,因此如果可能的话,它更易于使用。

这里有一个关于 php 如何处理 https 的更详细的解释:

http://phpsecurity.readthedocs.org/en/latest/Transport-Layer-Security-(HTTPS-SSL-and-TLS).html#php-streams

关于Php SoapClient verify_peer=>true 使用 ca 签名证书失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18465567/

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