При попытке подключиться к конечной точке SSL с расширением PHP SOAP в Windows я получаю сообщение SoapFault «Не удалось подключиться к хосту».Сертификат клиента не является обязательным требованием службы.
$sslOptions = array(
'ssl' => array(
'cafile' => "c:/inetpub/wwwroot/eServices/Server_DSA_Public_Certificate.pem",
'allow_self_signed' => true,
'verify_peer' => false,
),
);
$sslContext = stream_context_create($sslOptions);
$clientArguments = array(
'stream_context' => $sslContext,
'trace' => true,
'exceptions' => true,
'encoding' => 'UTF-8',
'soap_version' => SOAP_1_1,
);
$oClient = new WSSoapClient("c:/inetpub/wwwroot/eServices/svc.wsdl", $clientArguments);
// WSSoapClient extends SoapClient to add a WS-Security UsernameToken header
$oClient->__setUsernameToken("myusername", "mypassword");
return $oClient->__soapCall($operation, $request);
Я преобразовал в формат .pem самоподписанный сертификат сервера (.cer), который мне дали, и передаю его как 'cacert'.
Могу получить доступ к сервису с помощью soapUI с тем же wsdl.
Вопрос: Нужно ли поместить сертификат сервера в какое-либо хранилище доверенных сертификатов?Я уже использовал Internet Explorer, чтобы добавить его в «Trusted Root Certification Authorities».
Вопрос: Достаточно ли передать PHP «cacert», чтобы узнать, что он может доверять серверу?
Любая помощь или предложения будут высоко оценены.