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

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

  •  
  •   nikoo · 267 天前 · 1292 次点击
    这是一个创建于 267 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前是:
    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
        1
    mason961125   267 天前
    这些参数里最关键的 ssl_ciphers 你没贴...
        2
    nikoo   267 天前
    @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
        3
    msg7086   267 天前   ♥ 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 试试看。
        4
    DesignerSkyline   267 天前   ♥ 2
    TLS1.3 不支持自己修改 ciphers, 这个就算你不用 nginx 也是一样的。
        5
    nikoo   267 天前
    @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; 有没有什么坑?
        6
    msg7086   267 天前
    @nikoo 我选择按照服务器喜好。
        7
    nikoo   267 天前
    @DesignerSkyline 请教大佬,TLS1.3 不支持自己修改 ciphers 怎么搜相关文档关键字?谢谢!
        8
    nikoo   267 天前
    @msg7086 谢谢,是不是可以这样理解,同 Chrome 访问一个站其显示为 TLS 1.3 + AES_128_GCM
    那么他要不就是设了 ssl_prefer_server_ciphers off; 要不就是用了您刚贴的补丁魔改成了 SB Nginx ?
    正经 nginx 没法做到是吗?
        9
    msg7086   267 天前   ♥ 2
    @nikoo 什么叫正经的 Nginx ……

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

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

    参考:
    https://www.ssllabs.com/ssltest/analyze.html?d=sduoxminty.cn
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2265 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 10:09 · PVG 18:09 · LAX 02:09 · JFK 05:09
    ♥ Do have faith in what you're doing.