Подтвердить что ты не робот

Убедитесь, что 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

Большое спасибо заранее

4b9b3361

Ответ 1

Короткий ответ

Сделайте запрос с 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