security — PHP-соединение с сервисом WSDL разрывается после обновления сертификата сервера.

Новый сертификат — «Symantec Class 3 EV SSL CA — G3». У клиента есть CentOS. Нет контроля над сервером, это третье лицо. Когда адрес WDSL https загружен в Firefox и Chrome, в обоих браузерах отображается сообщение «Безопасное соединение», никаких проблем.

Адрес WSDL https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL

Тестовый код:

$success = false;
$attempts = 0;

while (($success === false) && ($attempts < 10)) {
$attempts ++;
echo 'Attempt ' . $attempts . '<br>';

try {
$wsdl = 'https://palena.sii.cl/DTEWS/CrSeed.jws?WSDL';
$entity_loader_status_old = libxml_disable_entity_loader(false);
$SoapClient = new SoapClient($wsdl);
$seed = $SoapClient -> getSeed();
libxml_disable_entity_loader($entity_loader_status_old);
$success = true;
} catch (Exception $Exception) {
echo $Exception -> getMessage() . '<br>';
}
}

if ($success === true) {
echo 'SUCCESS';
} else {
echo 'ERROR';
}

По умолчанию соединение защищено, потому что версия PHP 5.6.22 (более 5.5.x).

0

Решение

Возможный дубликат: OpenSSL: не удалось проверить первый сертификат для URL Experian

Чтобы решить создать cafile.pem и объедините необходимые сертификаты Symantec (основной промежуточный и корневой), как показано в приведенной выше ссылке возможного дублирования вопроса (см. spuderответ)

cafile.pem создать, как указано в spuder:

-----BEGIN CERTIFICATE-----
(Your Primary SSL certificate: your_domain_name.crt)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Intermediate certificate: DigiCertCA.crt)
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
(Your Root certificate: TrustedRoot.crt)
-----END CERTIFICATE-----

Тогда в PHP используйте следующий $options для создания SoapClient объект:

$options = [
'stream_context' => stream_context_create([
'ssl' => [
'cafile' => __DIR__ . '/cafile.pem',
],
]),
];

$SoapClient = new SoapClient($wsdl, $options);
0

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

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

По вопросам рекламы [email protected]