PHP SoapClient поверх подписанного сертификата, SOAP-ERROR: синтаксический анализ WSDL: невозможно загрузить из https: //

Я три дня просматриваю сеть и до сих пор не могу решить свою проблему … Поэтому и прошу вашей помощи 🙂

Я пытаюсь вызвать веб-сервис через https с подписанным сертификатом, и я получаю следующую ошибку: SOAP-ERROR: Синтаксический анализ WSDL: Не удалось загрузить из https: // …

Мой код:

$streamContext = stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'allow_self_signed' => true
)
));
$client = new SoapClient("https://DOMAIN/ws.php?wsdl", array(
'trace' => true,
'stream_context' => $streamContext
));
$client->method($params);

Я пытался :

  • Изменить значения опций «verify_peer» и «allow_self_signed»;
  • Заменить ключ «ssl» на «https» в массиве stream_context;
  • Загрузите файл WSDL локально, но я получаю следующую ошибку: Не удалось подключиться к хосту (моя конечная точка: https: //DOMAIN/ws.php);
  • Очистить мой клиентский кеш;
  • Используйте Zend_Soap_Client и библиотеку nusoap.

Кроме того, я проверил соединение между клиентом и сервером с помощью следующих команд «ping DOMAIN» и «telnet DOMAIN 443», и все в порядке.

Кажется, опция stream_context игнорируется или проблема в другом месте ?!
Это ошибка PHP?

Все предложения будут оценены.
Спасибо

0

Решение

У меня была очень похожая проблема, и я добавил 'verify_peer_name' => false в контексте потока. Так…

$streamContext = stream_context_create(array(
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
));

Примечание редактора: отключение проверки SSL имеет последствия для безопасности. Без проверки подлинности соединений SSL / HTTPS злоумышленник может выдать себя за доверенную конечную точку (например, GitHub или другой удаленный хост Git), и вы будете уязвимы для Атака «Человек посередине». Убедитесь, что вы полностью понимаете проблемы безопасности, прежде чем использовать это в качестве решения.

1

Другие решения

Других решений пока нет …