Убедитесь, что curl использует TLS

В моем приложении 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

Осторожно, спойлеры

  • openssl включает поддержку TLS v1.1 и TLS v1.2 в OpenSSL 1.0.1 [14 марта 2012]
  • NSS включала поддержку TLS v1.1 в 3.14
  • NSS включила поддержку TLS v1.2 в 3.15