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

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

  •  
  •   Livid · 150 天前 · 2541 次点击
    这是一个创建于 150 天前的主题,其中的信息可能已经有所发展或是发生改变。

    因为目前 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
        1
    forcecharlie   150 天前 via iPhone
    tlswg wiki 上说 openssl 是 28 了
        2
    wqyyy   150 天前 via iPhone
        3
    Raincal   150 天前 via Android
    我用的 pre2
        4
    msg7086   150 天前
    可以看一下这个帖子 /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   149 天前
    Openssl 主线是 28 没错,浏览器稳定本应该都是 23,Chrome Dev 现在跑的应该是 26,金丝雀不清楚。FF Nightly 一个月前支持的 28。
        6
    Livid   V2EX Moderator   149 天前
    @Servo Canary 目前也是 23
        7
    Servo   146 天前
    @Livid 在推上看到 Canary 昨天到 28 了。
        8
    JemmyLoveJenny   84 天前   ♥ 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
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1246 人在线   最高记录 3762   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 18ms · UTC 16:57 · PVG 00:57 · LAX 09:57 · JFK 12:57
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1