V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Servo
V2EX  ›  SSL

OpenSSL 1.1.1(Dev)最近暂不支持 CHACHA20 ?

  •  
  •   Servo · 2018-04-08 23:50:22 +08:00 · 5533 次点击
    这是一个创建于 2427 天前的主题,其中的信息可能已经有所发展或是发生改变。

    无聊更新着玩,OpenSSL 1.1.1-pre5-dev (即 Draft 26 ),密码套件把 ChaCha20 放最前面,但不管是浏览器(每夜版)还是 testssl 测试 TLS1.3 时都是 TLS_AES_256_GCM_SHA384。印象中在 Draft 23 的时候貌似还是 CHACHA20 的 emmm

    ssl_ciphers TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256 ……
    
    第 1 条附言  ·  2018-04-09 11:10:13 +08:00

    个人初步判定,应该是 OpenSSL 改变了相关 API ,Nginx 还没跟进的样子。 emmm 不折腾了 …

    感谢大家回复。

    TLS

    第 2 条附言  ·  2018-04-11 09:36:36 +08:00

    补充:受制于 Nginx 的 Bug /feature ?暂不支持新的 TLS1.3 密码套件指定选项,TLSv1.3 ciphersuite 将会与 1.1/1.2 分开配置,所以暂不支持 CHACHA20-POLY1305-SHA256 密码套件。

    28 条回复    2018-04-09 23:10:43 +08:00
    msg7086
        1
    msg7086  
       2018-04-09 01:07:56 +08:00
    哦?有夜夜版浏览器支持 26 了么?搭了个服务器正愁没浏览器用……
    Love4Taylor
        2
    Love4Taylor  
       2018-04-09 02:55:02 +08:00 via Android
    FF ?目前 Chrome 全线都是 23, 我还是依旧 pre2 得了 23333
    kn007
        3
    kn007  
       2018-04-09 07:40:01 +08:00
    winterbells
        4
    winterbells  
       2018-04-09 08:10:04 +08:00 via Android
    beta2 是可以的
    Servo
        5
    Servo  
    OP
       2018-04-09 08:10:42 +08:00 via Android
    @msg7086 FF Nightly 上个月就更新 26 了。

    @Love4Taylor 嗯,顺带一提,Nginx 把那个编译错误修复了。

    @kn007 多谢,不知大佬能否测试下 Openssl 主分支默认情况下是否真的暂不支持 CHACHA,说不定是我自己的问题,下午我会试试这个补丁的,多谢。
    kn007
        6
    kn007  
       2018-04-09 08:13:42 +08:00 via Android
    @Servo 我晚点试试,这几天又忙起来了。
    我不是大佬啦。
    kn007
        7
    kn007  
       2018-04-09 08:14:20 +08:00 via Android
    FF 动作真快,优化得还好,chrome 真该学习一下。
    Servo
        8
    Servo  
    OP
       2018-04-09 08:14:29 +08:00 via Android
    @winterbells beta2 应该就是 pre-4,我之前测试貌似也不行,尴尬了。
    Servo
        9
    Servo  
    OP
       2018-04-09 08:16:41 +08:00 via Android
    @kn007 小众浏览器,全靠信仰和仅存的一点自定义在用。
    msg7086
        10
    msg7086  
       2018-04-09 09:22:22 +08:00
    我来回测试了一下,感觉是 nginx 的锅,因为我用 openssl s_client 连上去也有 cipher 问题。

    ssl_protocols TLSv1.3;
    ssl_ciphers TLS13-AES-128-GCM-SHA256;

    New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
    Server public key is 256 bit
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    Early data was not sent
    SSL-Session:
    Protocol : TLSv1.3
    Cipher : TLS_AES_256_GCM_SHA384
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1523236776
    Timeout : 7200 (sec)
    Verify return code: 20 (unable to get local issuer certificate)
    Extended master secret: no
    msg7086
        11
    msg7086  
       2018-04-09 09:23:18 +08:00
    目测是 nginx 调用 openssl 设置 ciphers 时候出了问题,没设对。
    Servo
        12
    Servo  
    OP
       2018-04-09 09:32:36 +08:00 via Android
    @msg7086 看来应该是 Nginx 的锅了,多谢测试。
    winterbells
        13
    winterbells  
       2018-04-09 09:48:03 +08:00 via Android
    @Servo 编译 nginx 的时候是用 openssl 1.1.1 吗🤔
    msg7086
        14
    msg7086  
       2018-04-09 10:10:14 +08:00
    @Servo 我看看这几天有没有时间做一个简单的补丁出来。
    Servo
        15
    Servo  
    OP
       2018-04-09 10:38:42 +08:00
    @winterbells 当然咯,直接拉的主分支单独编译的。


    @msg7086 好的,我也去瞧瞧有没有人给 Nginx 提 issue。
    winterbells
        16
    winterbells  
       2018-04-09 10:54:13 +08:00 via Android
    那这个呢🤐
    ssl_ciphers 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:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:!MD5;

    ssl_prefer_server_ciphers on;
    Servo
        17
    Servo  
    OP
       2018-04-09 11:00:09 +08:00
    @winterbells 问题主要是无视 prefer,无论如何设置首选套件都是 TLS_AES_256_GCM_SHA384。
    winterbells
        18
    winterbells  
       2018-04-09 11:06:26 +08:00 via Android
    @Servo 额。不清楚了
    msg7086
        19
    msg7086  
       2018-04-09 11:22:22 +08:00
    msg7086
        20
    msg7086  
       2018-04-09 11:23:35 +08:00
    # nginx -V
    nginx version: nginx/1.13.12
    built with OpenSSL 1.1.1-pre4-dev 28 Mar 2018

    ssl_protocols TLSv1.3;
    ssl_ciphers TLS_CHACHA20_POLY1305_SHA256;


    New, TLSv1.3, Cipher is TLS_CHACHA20_POLY1305_SHA256
    Server public key is 256 bit
    Secure Renegotiation IS NOT supported
    Compression: NONE
    Expansion: NONE
    No ALPN negotiated
    Early data was not sent
    SSL-Session:
    Protocol : TLSv1.3
    Cipher : TLS_CHACHA20_POLY1305_SHA256
    winterbells
        21
    winterbells  
       2018-04-09 11:58:15 +08:00
    Σ(っ °Д °;)っ
    原来你说的是 tls1.3 下不能用 chacha
    眼瞎了(°ー°〃)
    respect11
        22
    respect11  
       2018-04-09 12:00:36 +08:00
    @msg7086 大佬,夜夜版是什么意思。。刚去 google 了下 竟然是 caoliu
    Servo
        23
    Servo  
    OP
       2018-04-09 12:31:37 +08:00   ❤️ 1
    @msg7086 我太菜了,打上补丁还是不行,不知道为什么,不折腾了。依然十分感谢。

    @respect11 nightly (每日 /夜构建)版浏览器,每天更新一到三次。
    msg7086
        24
    msg7086  
       2018-04-09 12:48:37 +08:00
    @Servo 如果是 Stretch 用户的话,可以等我回头打包二进制。
    Servo
        25
    Servo  
    OP
       2018-04-09 12:57:33 +08:00
    @msg7086 谢谢,暂时搁置不弄了。
    msg7086
        26
    msg7086  
       2018-04-09 15:16:20 +08:00
    Debian Stretch Docker 编译脚本,给想要测试的朋友:
    https://g.x86.men/root/nginx-compiler

    ./build.sh stretch-tls13

    # nginx -V
    nginx version: nginx/1.13.12
    built with OpenSSL 1.1.1-pre5-dev 8 Apr 2018
    kn007
        27
    kn007  
       2018-04-09 21:43:58 +08:00
    @Servo 我测试了确实是,优先的是 TLS_AES_256_GCM_SHA384

    @msg7086 在 nginx-1.13.11 打了你的补丁也是一样,还是用了 TLS_AES_256_GCM_SHA384。
    当然如果只定义 TLS_CHACHA20_POLY1305_SHA256,确实会用到 ChaCha20。
    msg7086
        28
    msg7086  
       2018-04-09 23:10:43 +08:00
    @kn007
    ssl_protocols TLSv1.3;
    ssl_ciphers TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384;

    #apps/openssl s_client -connect x:443

    SSL-Session:
    Protocol : TLSv1.3
    Cipher : TLS_CHACHA20_POLY1305_SHA256

    =====

    ssl_protocols TLSv1.3;
    ssl_ciphers TLS_AES_128_GCM_SHA256:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_256_GCM_SHA384;

    #apps/openssl s_client -connect x:443

    SSL-Session:
    Protocol : TLSv1.3
    Cipher : TLS_AES_128_GCM_SHA256

    无法复现你的结果。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2885 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 105ms · UTC 06:46 · PVG 14:46 · LAX 22:46 · JFK 01:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.