У меня проблема с PHP с API, который требует использования сертификатов SSL. Проблема в том, что когда я запускаю свой PHP-код, я получаю «Не могу подключиться к хосту».SOAP с двумя файлами сертификатов и «Не удалось подключиться к хосту»
я смог подключиться к поставщику услуг с помощью 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) У меня есть один file.pfx с паролем, я выполните следующую команду для извлечения 2 файла из него OpenSSL PKCS12 -in cert_name.pfx -nocerts отъезда cert_name. ключ и OpenSSL PKCS12 -в cert_name.pfx -clcerts -nokeys -out certificate.crt я бегу следующие commanf OpenSSL RSA -in cert_name.pem -out newkey.pem , так что я потерял, я действительно не знаю, что у меня есть – marvillous
как и для (2) Я попытался установить 'verify_peer' => false, я получил ту же ошибку – marvillous