【发布时间】:2020-12-22 23:47:29
【问题描述】:
我想在 nginx (v1.16.1) 中添加一些 TLS 1.2 密码,其中只有 2 个有效。
以下是我希望获得支持的密码列表。
DHE-RSA-AES128-GCM-SHA256;
ECDHE-RSA-AES128-GCM-SHA256; --> 这行得通
DHE-RSA-AES256-GCM-SHA384;
ECDHE-RSA-AES256-GCM-SHA384; --> 这行得通
ECDHE-ECDSA-AES256-GCM-SHA384;
在default.conf中添加以下行
server {
ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers off;
ssl_ciphers "DHE-RSA-AES128-GCM-SHA256 ECDHE-RSA-AES128-GCM-SHA256 DHE-RSA-AES256-GCM-SHA384 ECDHE-RSA-AES256-GCM-SHA384 ECDHE-ECDSA-AES256-GCM-SHA384";
...
}
我正在使用 open ssl 命令来测试它们
openssl s_client -cipher DHE-RSA-AES128-GCM-SHA256 -connect localhost:8443 -tls1_2
openssl s_client -cipher ECDHE-RSA-AES128-GCM-SHA256 -connect localhost:8443 -tls1_2
openssl s_client -cipher DHE-RSA-AES256-GCM-SHA384 -connect localhost:8443 -tls1_2
openssl s_client -cipher ECDHE-RSA-AES256-GCM-SHA384 -connect localhost:8443 -tls1_2
openssl s_client -cipher ECDHE-ECDSA-AES256-GCM-SHA384 -connect localhost:8443 -tls1_2
一个标记的作品给出了结果,其余的都失败了,如下所示
openssl s_client -cipher DHE-RSA-AES128-GCM-SHA256 -connect localhost:8443 -tls1_2
CONNECTED(00000218)
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 7 bytes and written 118 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1599152280
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
---
36400:error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:../openssl-1.1.1d/ssl/record/rec_layer_s3.c:1543:SSL alert number 40
我的配置有问题还是不支持密码。
【问题讨论】:
-
对于 TLS1.2 及以下版本,您需要在文件中创建(或获取)一组 DH 参数,specify it using ssl_dhparam 否则“将不使用 DHE 密码”。
openssl dhparam $nbits是一种生成合适参数的简单方法。 (ECDHE 不同,因为它使用标准化曲线,而不是用户可定义的组。)