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.