V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Livid
V2EX  ›  NGINX

尝试给 NGINX 编译 TLS 1.3 支持时踩到的一个命名坑

  •  
  •   Livid · 2018-05-21 19:58:47 +08:00 · 5798 次点击
    这是一个创建于 2138 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为目前 TLS 1.3 还没有正式发布,因此本文中描述的情况只适用于此时此刻:2018 年 5 月中旬。

    目前 Chrome 支持的是 draft-23,这个版本里的 TLS 1.3 相关的 cipher 名字是:

    • TLS13-AES-256-GCM-SHA384
    • TLS13-CHACHA20-POLY1305-SHA256
    • TLS13-AES-128-GCM-SHA256
    • TLS13-AES-128-CCM-8-SHA256
    • TLS13-AES-128-CCM-SHA256

    这些值也就是你需要在 NGINX 配置文件的 ssl_ciphers 里加入的。

    但是,在目前最新的 OpenSSL 1.1.1-pre6 里,TLS 1.3 相关的 ciphers 的名字变成了:

    • TLS_AES_256_GCM_SHA384
    • TLS_CHACHA20_POLY1305_SHA256
    • TLS_AES_128_GCM_SHA256

    所以,目前如果用 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 支持的一些说明:

    https://www.openssl.org/blog/blog/2018/02/08/tlsv1.3/

    8 条回复    2018-07-26 23:20:56 +08:00
    forcecharlie
        1
    forcecharlie  
       2018-05-21 23:17:42 +08:00 via iPhone
    tlswg wiki 上说 openssl 是 28 了
    wqyyy
        2
    wqyyy  
       2018-05-21 23:31:29 +08:00 via iPhone
    Raincal
        3
    Raincal  
       2018-05-21 23:47:56 +08:00 via Android
    我用的 pre2
    msg7086
        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() 的补丁。
    Servo
        5
    Servo  
       2018-05-22 08:03:44 +08:00
    Openssl 主线是 28 没错,浏览器稳定本应该都是 23,Chrome Dev 现在跑的应该是 26,金丝雀不清楚。FF Nightly 一个月前支持的 28。
    Livid
        6
    Livid  
    MOD
    OP
       2018-05-22 11:16:19 +08:00
    @Servo Canary 目前也是 23
    Servo
        7
    Servo  
       2018-05-25 10:48:13 +08:00
    @Livid 在推上看到 Canary 昨天到 28 了。
    JemmyLoveJenny
        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
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1404 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:35 · PVG 01:35 · LAX 10:35 · JFK 13:35
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.