V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
nikoo
V2EX  ›  问与答

Nginx + TLS 1.3 如何设置默认 AES_128_GCM?

  •  
  •   nikoo · 2019-03-23 10:41:14 +08:00 · 4311 次点击
    这是一个创建于 2049 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前是:
    The connection to this site is encrypted and authenticated using TLS 1.3, X25519, and AES_256_GCM.

    nginx 配置为:
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ...

    想将 AES_128_GCM 作为 prefer server cipher 替代目前的 AES_256_GCM,应做怎样的修改?
    15 条回复    2019-04-09 10:50:55 +08:00
    mason961125
        1
    mason961125  
       2019-03-23 10:51:40 +08:00
    这些参数里最关键的 ssl_ciphers 你没贴...
    nikoo
        2
    nikoo  
    OP
       2019-03-23 10:55:43 +08:00
    @mason961125 ssl_ciphers 是 Let's Encrypt 默认的:

    ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS";

    奇怪的是,无论如何修改这个 ssl_ciphers 的值,甚至乱写:
    ssl_ciphers "1234567";
    都能通过 nginx -t 配置检测,也能启动 nginx,启动后仍然是 using TLS 1.3, X25519, and AES_256_GCM
    msg7086
        3
    msg7086  
       2019-03-23 11:18:11 +08:00   ❤️ 1
    如果是 Debian 系的话可以试试 SB Nginx,有补丁。

    补丁: https://g.x86.men/root/nginx-pika/commit/c157c72e85517742a26d4f7993957c47e6de139f
    安装: https://mirrors.xtom.com.hk/sb/nginx/

    然后在 ciphers 里加入 TLS_AES_128_GCM_SHA256 试试看。
    DesignerSkyline
        4
    DesignerSkyline  
       2019-03-23 11:18:43 +08:00   ❤️ 2
    TLS1.3 不支持自己修改 ciphers, 这个就算你不用 nginx 也是一样的。
    nikoo
        5
    nikoo  
    OP
       2019-03-23 11:23:06 +08:00
    @msg7086 @DesignerSkyline 谢谢,如果将
    ssl_prefer_server_ciphers on;
    改为
    ssl_prefer_server_ciphers off;
    即按客户端偏好选择 ciphers 的话,用 Chrome 打开可以看到是想要的 using TLS 1.3, X25519, and AES_128_GCM

    另外问一下,如果设置 ssl_prefer_server_ciphers off; 有没有什么坑?
    msg7086
        6
    msg7086  
       2019-03-23 11:33:45 +08:00
    @nikoo 我选择按照服务器喜好。
    nikoo
        7
    nikoo  
    OP
       2019-03-23 11:37:28 +08:00
    @DesignerSkyline 请教大佬,TLS1.3 不支持自己修改 ciphers 怎么搜相关文档关键字?谢谢!
    nikoo
        8
    nikoo  
    OP
       2019-03-23 11:40:36 +08:00
    @msg7086 谢谢,是不是可以这样理解,同 Chrome 访问一个站其显示为 TLS 1.3 + AES_128_GCM
    那么他要不就是设了 ssl_prefer_server_ciphers off; 要不就是用了您刚贴的补丁魔改成了 SB Nginx ?
    正经 nginx 没法做到是吗?
    msg7086
        9
    msg7086  
       2019-03-23 11:45:01 +08:00   ❤️ 2
    @nikoo 什么叫正经的 Nginx ……

    官方的 Nginx 现在的确没有去支持选择 TLS 1.3 的 cipher,因为 TLS 1.3 用了另一个函数接口去选择 cipher (看我的补丁源码),而原来的接口只支持 TLS 1.2 以下的 cipher。所以要么改 Nginx,要么改 OpenSSL,都可以。官方以后也很有可能加代码去支持 TLS 1.3 的接口,只是现在还没有开始做。
    giuem
        10
    giuem  
       2019-03-23 11:47:49 +08:00 via iPhone   ❤️ 1
    nikoo
        11
    nikoo  
    OP
       2019-03-23 12:04:58 +08:00
    @msg7086 谢谢大佬,请问如果没有很大的连接安全需求,那么需要为了性能考虑去将 AES_256_GCM 改为 AES_128_GCM 吗?这两者性能差别大吗?(您在生产服用的 256 还是 128 ?)
    nikoo
        12
    nikoo  
    OP
       2019-03-23 12:10:30 +08:00
    @msg7086 因为我看
    https://www.cloudflare.com/
    https://www.mozilla.org/en-US/
    都是 TLS 1.3 + AES_128_GCM

    所以不知道生产环境用 AES_256_GCM 稳不稳,小鸡受不受得住
    isCyan
        13
    isCyan  
       2019-03-23 12:15:55 +08:00 via Android   ❤️ 1
    @nikoo 杞人忧天,256 位完全没有任何问题
    当然你不喜欢可以改成 128 位嘛
    msg7086
        14
    msg7086  
       2019-03-23 12:31:04 +08:00   ❤️ 1
    @nikoo 服务器一般是硬件指令集辅助运算吧,128 和 256 差距大概也就 15%这个级别,我觉得不必太过担心。
    suduo1987
        15
    suduo1987  
       2019-04-09 10:50:55 +08:00
    tls 1.3 的配置可以使用 openssl.cnf

    参考:
    https://www.ssllabs.com/ssltest/analyze.html?d=sduoxminty.cn
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3244 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 00:40 · PVG 08:40 · LAX 17:40 · JFK 20:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.