параллельные сертификаты ECDSA/RSA и @SECLEVEL

edo1 nginx-forum на forum.nginx.org
Пн Июн 27 19:24:48 UTC 2022


Дано:
nginx 1.23 (сборка под bullseye с nginx.org), openssl 1.1.1n (из debian)
два сертификата от LE, RSA и P-256.
testssl.sh

Нужно сделать, чтобы старые клиенты, умеющие только TLSc1/RSA, могли
подключаться.
Запускаем testssl.sh, TLSv1 и 1.1 не работают (только 1.2):
 SSLv2      not offered (OK)
 SSLv3      not offered (OK)
 TLS 1      offered (deprecated)
 TLS 1.1    offered (deprecated)
 TLS 1.2    offered (OK)
 TLS 1.3    not offered and downgraded to a weaker protocol

Убираем один из сертификатов — TLSv1 появляется, с двумя — только 1.2

Идём, например, на 
https://ssl-config.mozilla.org/#server=nginx&version=1.23&config=old&openssl=1.1.1n&hsts=false&ocsp=false&guideline=5.6
прописываем ssl_ciphers оттуда.
Не помогает.

Добавляем в конец списка шифров :@SECLEVEL=0
TLSv1 начинает работать.

Решил редуцировать пример, дошёл до такого:
a. ssl_ciphers AES128-SHA;
TLSv1 работает

b. ssl_ciphers AES128-SHA:ECDHE-ECDSA-AES128-SHA;
TLSv1 работает

c. ssl_ciphers ECDHE-ECDSA-AES128-SHA:AES128-SHA;
TLSv1 НЕ работает

d. ssl_ciphers ECDHE-ECDSA-AES128-SHA256:AES128-SHA;
TLSv1 работает

e. ssl_ciphers ECDHE-ECDSA-AES128-SHA:AES128-SHA:@SECLEVEL=0;
TLSv1 работает


:@SECLEVEL=0 прописать недолго, тем более, что, если я ничего не путаю, с
переходом на openssl3 так и так придётся это делать; но неконсистентность
поведения удивила.
это вообще баг или фича? )

за десять минут просмотра кода нжинкса возникло ощущение, что дело не в нём,
а так срабатывают какие-то эвристики в openssl. 
код openssl пока не смотрел.

Posted at Nginx Forum: https://forum.nginx.org/read.php?21,294596,294596#msg-294596



Подробная информация о списке рассылки nginx-ru