因为目前 TLS 1.3 还没有正式发布,因此本文中描述的情况只适用于此时此刻:2018 年 5 月中旬。
目前 Chrome 支持的是 draft-23,这个版本里的 TLS 1.3 相关的 cipher 名字是:
这些值也就是你需要在 NGINX 配置文件的 ssl_ciphers
里加入的。
但是,在目前最新的 OpenSSL 1.1.1-pre6 里,TLS 1.3 相关的 ciphers 的名字变成了:
所以,目前如果用 NGINX 配合 OpenSSL 1.1.1-pre6 编译来打开 TLS 1.3 支持的话,即使 NGINX 上的配置完全正确,那么可能会要么无法获得 TLS 1.3 (降级到 1.2 且有 1.2 的 cipher 可用),要么直接看到 ERR_SSL_VERSION_OR_CIPHER_MISMATCH (如果只配置了 TLS 1.3 的 cipher 进行测试的话)。
所以结论是,目前( 2018 年 5 月)如果用 OpenSSL 1.1.1-pre6 编译的话,应该是暂时还没有浏览器支持。
OpenSSL 开发组关于 TLS 1.3 支持的一些说明:
1
forcecharlie 2018-05-21 23:17:42 +08:00 via iPhone
tlswg wiki 上说 openssl 是 28 了
|
2
wqyyy 2018-05-21 23:31:29 +08:00 via iPhone
https://trac.nginx.org/nginx/ticket/1533
https://trac.nginx.org/nginx/ticket/1529 nginx 方面的态度貌似是 wontfix |
3
Raincal 2018-05-21 23:47:56 +08:00 via Android
我用的 pre2
|
4
msg7086 2018-05-22 00:04:46 +08:00
可以看一下这个帖子 /t/445216。
我自己编译的 nginx 是可以用夜夜版 FF 跑通的。 https://g.x86.men/root/nginx-compiler/src/branch/master/stretch-tls13/Dockerfile 加注了 ssl_ciphers 调用 SSL_CTX_set_ciphersuites() 的补丁。 |
5
Servo 2018-05-22 08:03:44 +08:00
Openssl 主线是 28 没错,浏览器稳定本应该都是 23,Chrome Dev 现在跑的应该是 26,金丝雀不清楚。FF Nightly 一个月前支持的 28。
|
8
JemmyLoveJenny 2018-07-26 23:20:56 +08:00 1
看一下这个 Openssl 补丁,挺好用的
https://github.com/hakasenyang/openssl-patch/ 用_ciphers 的补丁就可以在 nginx 里设置 TLS1.3 的 CipherSuite 了 更好的是还能支持等价加密算法组! 我的 nginx 配置是 ssl_ciphers "[TLS_AES_128_GCM_SHA256|TLS_CHACHA20_POLY1305_SHA256]:[TLS_AES_256_GCM_SHA384|TLS_AES_128_CCM_8_SHA256|TLS_AES_128_CCM_SHA256]:[ECDHE-ECDSA-CHACHA20-POLY1305|ECDHE-ECDSA-AES128-GCM-SHA256|ECDHE-RSA-CHACHA20-POLY1305|ECDHE-RSA-AES128-GCM-SHA256|DHE-RSA-CHACHA20-POLY1305]:[ECDHE-ECDSA-AES256-GCM-SHA384|ECDHE-RSA-AES256-GCM-SHA384]:[ECDHE-ECDSA-AES128-SHA|ECDHE-RSA-AES128-SHA]:[ECDHE-ECDSA-AES256-SHA|ECDHE-RSA-AES256-SHA]:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA"; 前面的几个"TLS_"开头的就是 TLS1.3 的 CipherSuite |