SSL-соединение с CURL (PHP) работает в Linux, такой же код не работает в Windows

Я написал скрипт, который использует наши банки WSDL-сервисом, используя Nusoap. Запросы подписываются сертификатом. Этот скрипт отлично работает на Ubuntu, Apache 2.2, PHP 5.4.

При попытке добиться того же в Windows 7 (64-битная версия, Apache 2.2, PHP 5.4) я получаю эту ошибку, полученную с помощью Curl:

**SSL read: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure, errno 0**

Я отключил брандмауэр и антивирус. Я могу предоставить детали опций Curl, или любой другой фрагмент кода или информацию. Спасибо!

РЕШЕНИЕ:

curl_setopt ($ this-> ch, CURLOPT_SSLVERSION, 3);

2 ответа

Решение

Для работы с SSL-соединениями необходимо включить php_openssl.dll в вашем php.ini

И когда вы работаете с curl, общая проблема заключается в том, что модуль openssl работает с неверной версией SSL по умолчанию. В большинстве случаев вы должны установить версию SSL на 3.

curl_setopt($curl, CURLOPT_SSLVERSION,3); 

У меня была такая же проблема до нескольких дней.

Если вы используете nfephp-org lib на сервере под управлением Linux, вы можете использовать этот код для изменения протокола ssl:

$nfe = new ToolsNFe(MY_CONFIG_PATH);
$nfe->setSSLProtocol('SSLv3');

Когда MY_CONFIG_PATH - это путь к вашему файлу конфигурации.

Само собой разумеющееся в использовании в качестве коммьюнити erro em servidores linux, mude o protocolo ssl, como no código acima.

Другие вопросы по тегам