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

Nginx 的 TLS 1.3 到底应该怎么配置?

  •  
  •   ech0x · 2019-03-21 10:59:21 +08:00 · 5735 次点击
    这是一个创建于 1834 天前的主题,其中的信息可能已经有所发展或是发生改变。

    Nginx 版本:

    built with OpenSSL 1.1.1  11 Sep 2018
    TLS SNI support enabled
    configure arguments: --add-module=../ngx_brotli --with-openssl=../openssl --with-openssl-opt=enable-tls1_3 --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --user=www --group=www
    

    配置文件

      ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    
      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-SHA
    256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-
    DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA38
    4:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-
    SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CB
    C3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
    

    不知道为什么还是不能启用 TLS 1.3

    15 条回复    2019-03-22 11:07:56 +08:00
    msg7086
        1
    msg7086  
       2019-03-21 11:22:30 +08:00
    ssl_ciphers 去掉试过吗?
    ech0x
        2
    ech0x  
    OP
       2019-03-21 11:47:47 +08:00
    @msg7086 #1 还是不行.....
    msg7086
        3
    msg7086  
       2019-03-21 11:57:09 +08:00
    你如果用 Debian 或者 Ubuntu 的话可以试试 SB,可以看看到底是配置的问题还是编译的问题。
    https://mirrors.xtom.com.hk/sb/nginx/
    ech0x
        4
    ech0x  
    OP
       2019-03-21 12:40:02 +08:00
    @msg7086 #3 好像还是不行.....SB 的 Nginx 没有 enable-tls1_3 ?
    jlkm2010
        5
    jlkm2010  
       2019-03-21 13:06:56 +08:00
    最近用 caddy,感觉美滋滋
    goodryb
        6
    goodryb  
       2019-03-21 13:12:34 +08:00
    cd nginx-1.15.6
    ./configure --prefix=/usr/local/nginx --add-module=../ngx_brotli --with-openssl=../openssl --with-http_v2_module --with-http_ssl_module --with-http_gzip_static_module --with-pcre=../pcre-8.42 --with-zlib=../zlib-1.2.11 --with-openssl-opt='enable-tls1_3'

    这是我的编译参数,能够正常启用
    lhx2008
        7
    lhx2008  
       2019-03-21 13:13:23 +08:00 via Android
    不会浏览器没开启 TLS1.3 吧
    goodryb
        8
    goodryb  
       2019-03-21 13:16:37 +08:00


    可以去这里测试一下 https://www.ssllabs.com/ssltest/index.html
    ech0x
        9
    ech0x  
    OP
       2019-03-21 13:35:54 +08:00 via iPhone
    @lhx2008
    @goodryb
    我测试了一下,应该不是浏览器的问题。
    virusdefender
        10
    virusdefender  
       2019-03-21 13:37:23 +08:00
    tao1991123
        11
    tao1991123  
       2019-03-21 13:42:04 +08:00
    试试这个吧
    https://nginxconfig.io/
    Hardrain
        12
    Hardrain  
       2019-03-21 15:09:47 +08:00   ❤️ 1
    如果$OPENSSL_PATH/lib 不在 ld.so.conf 里,编译时加上 LDFLAGS='-Wl,-rpath=$OPENSSL_PATH/lib'
    否则编译时,ld 会找到自己编译的 OpenSSL 的动态库(libssl.solibcrypto.so)和 Header
    运行时还是调用系统自带的。

    ldd $NGINX_PATH/sbin/nginx 看看 nginx 链接到的动态库是不是 OpenSSL 1.1.1 的?
    Hardrain
        13
    Hardrain  
       2019-03-21 15:11:08 +08:00   ❤️ 1
    此外,如不能指定 TLS 1.3 加密套件顺序,尝试打这个 patch https://github.com/Hardrain980/nginx-tls13-chacha20-patch 后编译

    这是 OpenSSL 用了一个新的函数来定义 TLS 1.3 加密套件导致的。
    ech0x
        14
    ech0x  
    OP
       2019-03-21 16:19:56 +08:00
    @Hardrain #12 好像是这个问题,我看了一眼 libcrypto.so 链接到到还是系统的动态库。
    hsie
        15
    hsie  
       2019-03-22 11:07:56 +08:00
    假如网站打得开,估计是浏览器不支持,我以下的配置没问题。

    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers [TLS13+AESGCM+AES128|TLS13+AESGCM+AES256|TLS13+CHACHA20]:[EECDH+ECDSA+AESGCM+AES128|EECDH+ECDSA+CHACHA20]:EECDH+ECDSA+AESGCM+AES256:EECDH+ECDSA+AES128+SHA:EECDH+ECDSA+AES256+SHA:[EECDH+aRSA+AESGCM+AES128|EECDH+aRSA+CHACHA20]:EECDH+aRSA+AESGCM+AES256:EECDH+aRSA+AES128+SHA:EECDH+aRSA+AES256+SHA:RSA+AES128+SHA:RSA+AES256+SHA:RSA+3DES;
    ssl_prefer_server_ciphers on;
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2996 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 14:48 · PVG 22:48 · LAX 07:48 · JFK 10:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.