gpt4 book ai didi

php - 带有两个证书文件和 "Could not connect to host"的 SOAP

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

我在将 PHP 与需要使用 SSL 证书的 API 连接时遇到问题。问题是当我运行 PHP 代码时出现“无法连接到主机”。

我能够像这样使用 CURL 连接到服务提供商:

$wsdl       = 'https://example.com/Case.svc';
$certFile = getcwd() . '/certificate.crt';
$keyFile = getcwd() . '/key.pem';
$password = 'password';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $wsdl);
curl_setopt($ch, CURLOPT_SSLCERT, $certFile);
curl_setopt($ch, CURLOPT_SSLKEYPASSWD, $password);
curl_setopt($ch, CURLOPT_SSLKEY, $keyFile);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$output = curl_exec($ch);

var_dump(curl_errno($ch));
var_dump(curl_error($ch));

但是,我无法使用 SOAP 执行此操作:

$options=array(
'soap_version' => SOAP_1_2,
'trace' => true,
'cache_wsdl' => WSDL_CACHE_NONE,
'exceptions' => 1,
'encoding' => 'UTF-8',
'stream_context'=>stream_context_create(
array(
'ssl'=>array(
'verify_peer'=>true
,'allow_self_signed'=>false
,'cafile'=>'certificate.crt'
,'verify_depth'=>5
)
)
),
'local_cert' => 'key.pem',
'passphrase' => 'password',
);

$client = new SoapClient("Case.wsdl", $options);

它导致“无法连接到主机”。

问题可能出在证书本身,也许我需要将两个证书合并到一个文件中。我可以看到很多人遇到同样的问题,但大多数人都没有得到答案。

为什么 SOAP 代码返回“无法连接到主机”,我该如何解决?

最佳答案

一些你可以开始的地方:

1) certificate.crt 到底是什么?它是客户端证书还是 CA 证书?您正在使用 CURLOPT_SSLCERT(设置客户端证书),但在 SoapClient 中使用“cafile”文件指令(设置 CA 证书文件)。

2) 您使用的是 CURLOPT_SSL_VERIFYPEER = false,但在另一个片段中您使用的是 verify_peer。

因此,请尝试使用相同类型的环境对这些更改进行更多调试。

关于php - 带有两个证书文件和 "Could not connect to host"的 SOAP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551344/

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