Як змусити всі з'єднання Apache використовувати TLSv1.1 або TLSv1.2


3

Я не зміг знайти рішення для цього, якщо є, будь ласка, зверніться до нього.

Запуск:

  • Windows7 x64
  • Apache 2.4.4
  • OpenSSL 1.0.1j

і мати таке в моєму httpd_ssl

SSLStrictSNIVHostCheck off  
SSLProtocol All -SSLv2 -SSLV3  
SSLCompression off  
SSLInsecureRenegotiation off  
SSLHonorCipherOrder on  

SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 
EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL 
!LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"

SSLUseStapling on  
SSLStaplingResponderTimeout 5  
SSLStaplingReturnResponderErrors off  

Питання:

Що б я не робив, я не можу ввімкнути TLSv1.1 та TLSv1.2.
Перемістив сценарій ServerSSLTest, і я отримую лише підтримувані версії: TLSv1.0

Що я пропускаю?

Відповіді:


5

По-перше, вам потрібно мати підтримку TLSv1.1 і V1.2 в OpenSSL - з вашим v1.0.1j, ви це робите.

Далі - підтримка Apache V2.2.24 (або пізнішої) для елементів конфігурації, що стосуються SSL. Зокрема, щоб вказати що-небудь пізніше TLS1 (тобто TLSv1.1 TLSv1.2), вам потрібна ця пізніша версія. У вас 2.4.4, так що це повинно бути добре.

Далі, є це «взаємодія» між параметрами конфігурації Apache: SSLProtocolі SSLCipherSuite.

Отже, для потрібної конфігурації, TLSv1.1 та TLSv1.2, вам знадобиться щось на кшталт:

SSLProtocol=All -SSLv2 -SSLV3 -TLSv1
SSLCipherSuite HIGH:!aNULL:!MD5:!RC4

Я вдячний, що у вас є більш конкретний список шифрів:

EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4

Однак, коли я перевірив за допомогою мого openssl (v1.0.1 stream), я виявив, що такі пакети попереднього TLSv1.2 підтримуються:

 openssl ciphers -s -v 'EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4'

ECDHE-RSA-AES256-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(256)  Mac=SHA1
ECDHE-ECDSA-AES256-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(256)  Mac=SHA1
ECDHE-RSA-AES128-SHA    SSLv3 Kx=ECDH     Au=RSA  Enc=AES(128)  Mac=SHA1
ECDHE-ECDSA-AES128-SHA  SSLv3 Kx=ECDH     Au=ECDSA Enc=AES(128)  Mac=SHA1
DHE-RSA-AES256-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(256)  Mac=SHA1
DHE-RSA-CAMELLIA256-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(256) Mac=SHA1
DHE-RSA-AES128-SHA      SSLv3 Kx=DH       Au=RSA  Enc=AES(128)  Mac=SHA1
DHE-RSA-SEED-SHA        SSLv3 Kx=DH       Au=RSA  Enc=SEED(128) Mac=SHA1
DHE-RSA-CAMELLIA128-SHA SSLv3 Kx=DH       Au=RSA  Enc=Camellia(128) Mac=SHA1

Потім перевірте тут (розділ A.5), http://tools.ietf.org/html/rfc4346 Я не думаю, що жоден із підтримуваних пакетів, перелічених у моєму Opensl, насправді TLSv1.1 не дійсний, тому ви закінчите лише після TLSv1.2 під час тестування (скажімо, на Qualys https://www.ssllabs.com/ssltest/ ).

Нарешті, є вся проблема підтримки клієнтів - вище посилання Qualys зручно, оскільки в ньому перераховано, який тип клієнта (наприклад, до конкретних версій Android, наприклад, міг би підключитися до поданого тестового сервера). Оскільки ви досить специфічні для шифру, я думаю, ви не збираєтеся занадто ризикувати, дозволяючи TLSv1 (для якого читати v1.0), а також V1.1 та V1.2, якщо ви не знаєте, що база відвідувачів не включатиме TLSv1 тільки здібні клієнти.


Привіт, дякую за вашу відповідь. Нічого не працювало до вчора, коли я отримав мені новий ssd та чистий встановлений на ньому свій win10: D
deltaRoot


0

Спробуйте видалити SSLCipherSuiteта змінити SSLProtocolрядок на:

SSLProtocol -All +TLSv1.1 +TLSv1.2

Я вважаю, що SSLCipherSuite переможе SSLProtocol у випадку, коли це випливає з файлу конфігурації.


Дякую за відповідь, але я вже спробував: SSLProtocol -All + TLSv1.1 + TLSv1.2 і спробував це зараз без сміливого CipherSuite, сервер не запускається. CipherSuite не повинен викликати проблем. І якщо я налагоджую, я отримую синтаксичну помилку: SSLProtocol: Незаконній протокол 'TLSv1.1'
deltaRoot

Цікаво ... У документації [1] сказано, що вона мала працювати. [1] httpd.apache.org/docs/current/mod/mod_ssl.html#sslprotocol
kronenpj

Ось що мене спантеличує. Як ви вважаєте, Apache потрібно перекомпілювати?
deltaRoot

Не впевнений у самому Apache, але, можливо, mod_ssl. Також ви можете спробувати SSLProtocol All -SSLv2 -SSLv3 -TLSv1замість того, щоб починати з-All
kronenpj

Чи знаєте ви, як найкращий спосіб скласти mod_ssl або я відкрию нове запитання? Спробувавши це, я отримую "Операцію не вдалося" і жодної інформації через налагодження
deltaRoot
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.