В моем приложении PHP я использую PHP CURL и openssl, чтобы подключаться и разговаривать с помощью SOAP. До сих пор удаленный сервер поддерживал SSL и TLS, но из-за ошибки «пудель» администратор решил отключить SSL и использовать только TLS. SSL поддерживается до конца января.
Я изменил свой код, добавив:
curl_setopt($objCurl, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
Теоретически это должно заставить скручиваться использовать TLSv1.2.
Но это теория – мне нужно проверить, что она действительно использует TLS – есть ли какой-нибудь метод для этого? Существует метод curl_getinfo (), но информация, которую он возвращает, мне не пригодится:
[url] => https://www.example.com/soap/MessagingPort [content_type] => text/xml;charset=utf-8 [http_code] => 200 [header_size] => 293 [request_size] => 882 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.164487 [namelookup_time] => 3.4E-5 [connect_time] => 3.4E-5 [pretransfer_time] => 0.000122 [size_upload] => 604 [size_download] => 178 [speed_download] => 1082 [speed_upload] => 3672 [download_content_length] => 178 [upload_content_length] => 604 [starttransfer_time] => 0.164477 [redirect_time] => 0
Большое спасибо заранее
Короткий ответ
Сделайте запрос с curl на https://www.howsmyssl.com/
<?php $ch = curl_init('https://www.howsmyssl.com/a/check'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); curl_close($ch); $json = json_decode($data); echo $json->tls_version;
который должен выводить версию TLS для подключения.
Копать глубже
Curl полагается на базовую библиотеку OpenSSL (или NSS) для согласования безопасного соединения. Поэтому я считаю, что правильный вопрос, который задают здесь, – это то, что может использовать библиотека OpenSSL. Если он может обрабатывать TLS-соединение, то завиток может обрабатывать TLS-соединение.
Итак, как определить, на что способна библиотека openssl (или NSS)?
<?php $curl_info = curl_version(); echo $curl_info['ssl_version'];
который собирается сбросить что-то вроде
OpenSSL/1.0.1k
Затем вы можете взглянуть на примечания к выпуску для этой версии и посмотреть, включает ли она поддержку TLS.
Примечания к выпуску OpenSSL – https://www.openssl.org/news/openssl-1.0.1-notes.html
Замечания по выпуску NSS – https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_Releases
Осторожно, спойлеры