Я пытаюсь отправить запрос на мыло на какой-то URL. Мои варианты SOAP:
array(
'location' => 'https://some_url/',
'features' => SOAP_SINGLE_ELEMENT_ARRAYS,
'trace' => 1,
'soap_version' => SOAP_1_2,
'connection_timeout' => 60,
'stream_context' => stream_context_create([
'ssl' => [
'verify_peer' => true,
'verify_peer_name' => true,
'allow_self_signed' => true,
'cafile' => 'cacert.crt', // This file really exists, checked that
]
])
);
Я получаю следующую ошибку:
SoapClient::__doRequest(): SSL operation failed with code 1. OpenSSL Error messages:
error:0407006A:rsa routines:RSA_padding_check_PKCS1_type_1:block type is not 01
error:04067072:rsa routines:RSA_EAY_PUBLIC_DECRYPT:padding check failed
error:0D0C5006:asn1 encoding routines:ASN1_item_verify:EVP lib
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Так что я погуглил «тип блока не 01», но результаты довольно скудны. Кто-то может подумать, что сертификат является неправильным, но я получил его с помощью инструментов разработчика Chromium (вкладка «Безопасность»), когда находился на странице, представляющей мой URL. Просто чтобы убедиться, что все в порядке, я помещаю его в свой браузер, и эта страница открывается без каких-либо предупреждений безопасности, показывая мне ответ XML.
Помещение в / usr / share / ca-сертификаты / также не имело никакого эффекта.
Сертификат имеет кодировку pem.
Параметр verify_peer, установленный в false, конечно, не вариант.
Моя версия php 5.5.17-2, такое же поведение наблюдается на PHP 7.0.21-1, хотя. ОС Ubuntu 16.04. OpenSSL 1.0.1 14 марта 2012 г., тот же эффект на OpenSSL 1.0.2g-fips 1 марта 2016 г.
Какие-нибудь мысли?
Задача ещё не решена.
Других решений пока нет …