Я хотел знать, конфигурирую ли я свой сервер openssl для явного использования TLSv1.2, должен ли я также упомянуть, что не следует использовать 3DES (добавив в строку "! 3DES"), или явное использование TLSv1.2 удалит поддержка 3DES.
Из этот ссылка Я вижу, что TLS1.2 не имеет 3DES в списке доступных шифров. Так что, я думаю, не поддерживает?
Строка, которую я использую, "HIGH+TLSv1.2:!MD5:!SHA1"
TLS 1.2 можно использовать с любыми шифрами, определенными для SSL 3.0 и более поздних версий. Сюда входят шифры 3DES (DES-CBC3). какой вы ссылаетесь на не является списком, какие шифры можно использовать с какой версией SSL / TLS, а с какой версией SSL / TLS был введен шифр.
Доказательство:
terminal_1 $ openssl s_server -cipher '3DES' -cert cert.pem -key key.pem
...
terminal_2 $ openssl s_client -connect 127.0.0.1:4433
...
Protocol : TLSv1.2
Cipher : ECDHE-RSA-DES-CBC3-SHA
...
Еще одно доказательство: Стандарт TLS 1.2 (RFC 5246) перечисляет в приложении A.5 множество шифров, которые можно использовать с TLS 1.2, в том числе несколько шифров 3DES.
Я использую строку «HIGH + TLSv1.2:! MD5:! SHA1».
С этой строкой шифров вы разрешаете только шифры, представленные в TLS 1.2. Поскольку в TLS 1.2 не было добавлено никаких новых шифров 3DES, никакие шифры 3DES не будут использоваться с этой строкой. Но ни один клиент TLS 1.0 или TLS 1.1 не сможет подключиться к серверу, поскольку ни один из предлагаемых вами шифров не поддерживается этими старыми клиентами. Хотя все современные браузеры поддерживают TLS 1.2, некоторые приложения до сих пор не поддерживают. Это особенно верно для старых приложений Java или для приложений на основе OpenSSL в Mac OS X, поскольку они поставляются с очень старой версией OpenSSL.
Вы правы, TLSv1.2 не поддерживает DES:
$ openssl ciphers -tls1 -v | grep TLSv1.2
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
DHE-DSS-AES256-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(256) Mac=SHA256
ECDH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(256) Mac=AEAD
ECDH-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(256) Mac=AEAD
ECDH-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(256) Mac=SHA384
ECDH-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(256) Mac=SHA384
AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD
AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
DHE-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256
DHE-DSS-AES128-SHA256 TLSv1.2 Kx=DH Au=DSS Enc=AES(128) Mac=SHA256
ECDH-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AESGCM(128) Mac=AEAD
ECDH-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(128) Mac=AEAD
ECDH-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH/RSA Au=ECDH Enc=AES(128) Mac=SHA256
ECDH-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AES(128) Mac=SHA256
AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD
AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
Вам не нужно явно отклонять DES, потому что он не будет доступен с отключенными более старыми наборами.