Новый сертификат «Symantec Class 3 EV SSL CA – G3». Клиент имеет CentOS. Контроль над сервером отсутствует, он сторонний. Когда адрес https WDSL загружается в 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).
Возможный дубликат: OpenSSL: невозможно проверить первый сертификат для URL-адреса Experian
Чтобы решить, создайте cafile.pem
и cafile.pem
требуемые сертификаты Symantec (первичный промежуточный и корневой), как показано в возможной дублированной ссылке вопроса выше (см. Ответ спудера ).
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);