Мне нужна интеграция веб-сайта моей компании с внешними веб-службами, для которых требуется Curl и TLS 1.2.
Я включил php_curl.dll и установил curl.cainfo с правильным путем к файлу pem на php.ini.
Теперь curl работает, но только с TLS 1.0, даже если для параметра CURLOPT_SSLVERSION установлено значение 6:
$c = curl_init();
curl_setopt($c, CURLOPT_URL, "https://www.howsmyssl.com/a/check");
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_SSLVERSION, 6);
Я работаю над сервером WAMP с Apache 2.4, PHP 5.4.16 - MSVC9 - NTS - CGI / FastCGI.
Прокручивая страницу phpinfo (), я вижу в разделе "Переменные PHP"
_SERVER["SERVER_SOFTWARE"] Apache/2.4.10 (Win32) OpenSSL/1.0.1j mod_fcgid/2.3.9
_SERVER["SSL_VERSION_LIBRARY"] OpenSSL/1.0.1j
в то время как в разделе "openssl" я вижу
OpenSSL Library Version OpenSSL 0.9.8y 5 Feb 2013
OpenSSL Header Version OpenSSL 0.9.8y 5 Feb 2013
и в разделе "завиток":
cURL support enabled
cURL Information 7.30.0
SSL Yes
SSL Version OpenSSL/0.9.8y
Может кто-нибудь сказать мне, почему PHP использует OpenSSL 1.0.1j и Curl 0.9.8y?
Как установить Curl на TLS 1.2 без обновления PHP?
Подумайте, что соответствующая часть дубликата - «Принудительное использование TLS 1.1 и 1.2 поддерживается только с curl 7.34.0».
почему ты не хочешь обновить свою версию php? он устарел с сентября 2015 года ... вам действительно стоит обновить его до более новой версии, которая исправит многие недостатки безопасности, а также повысит производительность. (то же самое для openssl и curl)
Я знаю, что должен обновить версию PHP, и я сделаю это, но это долгая работа, потому что мне нужно найти идеальную конфигурацию php с конкретными расширениями, которые мне нужны, и я протестировал все сайты и приложения, размещенные на совместимость с новыми версиями php и расширения. А теперь мне нужен TLS 1.2 для скорейшей интеграции с некоторыми веб-сервисами.
В SERVER_SOFTWARE вы видите версию OpenSSL, используемую Apache (та, с которой он был скомпилирован), которая полностью отличается от того, что библиотека PHP / cURL внутри PHP использует для OpenSSL. Также все это ясно показывает, что пришло время обновить весь ваш стек. Тогда у вас будет гораздо меньше проблем, чем пытаться втиснуть новые функции TLS в старое программное обеспечение ...
О да, я в курсе, спасибо. Я сделаю это. Но теперь мне нужно заставить его работать с этой версией. Что я могу делать? Обновить php_curl.dll или php_openssl.dll? Где найти скомпилированные библиотеки для WIN32?






Возможный дубликат TLS 1.2 не работает в cURL