Я сделал несколько скриптов, работающих с внешним WSDL. Я столкнулся с одним, я должен интегрировать в нашу систему, что я не могу получить работу. Я пытался целую неделю безрезультатно.
Сценарий уже не может создать конструктор:
$client = new SoapClient("https://webtjener09.kred.no/TestWebservice/OppdragServiceSoapHttpPort?WSDL");
выдает ошибку:
PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn't load from 'https://webtjener09.kred.no/TestWebservice/OppdragServiceSoapHttpPort?WSDL' : failed to load external entity "https://webtjener09.kred.no/TestWebservice/OppdragServiceSoapHttpPort?WSDL"
У меня есть openssl, установленный и работающий с PHP, и я помню, что у меня уже есть другие рабочие SOAP-вызовы к другим WSDL через SSL. Я обнаружил, что не могу решить эту проблему с помощью сертификата, так как он не работает уже в конструкторе.
Но:
Я попытался подключиться к удаленному серверу с помощью командной строки openssl, и эта команда также не удалась:
openssl s_client -connect webtjener09.kred.no:443 -state
Но затем я попытался принудительно установить SSL3, и он отлично работал, например:
openssl s_client -ssl3 -connect webtjener09.kred.no:443 -state
Так что это заставило меня задуматься о том, что я должен соответствовать версии SSL удаленного сервера. Для двойной проверки я также попытался установить соединение cURL через PHP, и это не удалось, пока я не добавил принудительное использование версии SSL, например:
curl_setopt($ch, CURLOPT_SSLVERSION, 3);
Добавление CURLOPT_SSLVERSION к соединению cURL позволило. И тогда корень моего вопроса:
Как заставить PHP мыльный конструктор / вызов также использовать SSL3. Мне кажется, что это должно быть решением. Но я не смог выяснить, как настроить функцию PHP SOAP на использование только SSL3. Так как обе команды командной строки -openssl- и PHP cURL работают с принудительным использованием SSL3, я предполагаю, что то же самое произойдет с моей SOAP-функцией?
Входы, пожалуйста?
(Использование Ubuntu Linux, PHP 5.3.3)