Как использовать ECDHE-шифры в PHP CURL?

Я использовал nmap для сканирования, это результат:

введите описание изображения здесь

Похоже, они поддерживают только ECDHE, из вывода openssl_get_cipher_methods()нет ECDHE шифра! Итак, мой вопрос, как я могу подключиться к удаленному серверу с помощью клиента PHP CURL?

Это мой пример кода PHP, который возвращается false с сообщением:

"Неизвестный шифр в списке: ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-A256 ECDHE-RSA-AES128-SHA", код ошибки скручивания номер 59 (не удалось использовать указанный шифр.)

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES128-SHA"); 
curl_setopt($ch, CURLOPT_SSLVERSION, 6); 
curl_setopt($ch, CURLOPT_URL, "xxxxxxxxxxxxxxx"); 
var_dump(curl_exec($ch)); 
var_dump(curl_error($ch)); 
var_dump(curl_errno($ch));

Я использую PHP 5.3.29, openssl 1.0.1e-fips 11 февраля 2013 г.

2 ответа

Формат CURLOPT_SSL_CIPHER_LIST зависит от библиотеки, с которой связан ваш cURL. Если вы работаете в Linux на основе RedHat, то это NSS, а не GNUTLS (Ubuntu) или OpenSSL, поэтому вам нужно будет соответствующим образом преобразовать имена.

Следующий вопрос должен помочь вам:

https://unix.stackexchange.com/questions/208437/how-to-convert-ssl-ciphers-to-curl-format

Я нашел основную причину, я запускаю CentOS с пакетом NSS 3.19. По умолчанию в этой версии не включены шифры ECC (ECDHE - один из шифров ECC), исправлена ​​после обновления до NSS 3.21+.

https://bugzilla.mozilla.org/show_bug.cgi?id=1205688
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/NSS_3.21_release_notes
https://tools.ietf.org/html/rfc4492
Другие вопросы по тегам