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

访问 a.com 会报错 ERR_SSL_PROTOCOL_ERROR,但访问 www.a.com 没有问题,可能是哪些方面的错误?

  •  
  •   fourstring · 2018-06-13 18:24:00 +08:00 · 4130 次点击
    这是一个创建于 2359 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题。web server 使用的是 nginx-1.15.0,证书是用 certbot 签发的普通 SAN 证书,只包含了 a.comwww.a.com

    nginx -V 输出如下:

    nginx version: nginx/1.15.0
    built by gcc 7.3.0 (Ubuntu 7.3.0-16ubuntu3)
    built with OpenSSL 1.1.1-pre7 (beta) 29 May 2018
    TLS SNI support enabled
    configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-http_v2_module --with-openssl=../openssl-1.1.1-pre7 --with-openssl-opt=enable-tls1_3 --add-module=../nginx-ct
    

    nginx 配置如下:

    server {
        server_name a.com www.a.com;
        listen               443 ssl http2;
        root /home/wwwroot/hexo;
        server_tokens        off;
        ssl_ct on;
        ssl_certificate      /etc/letsencrypt/a.com.rsa.pem;
        ssl_certificate_key  /etc/letsencrypt/a.com.rsa.key;
        ssl_ct_static_scts   /etc/letsencrypt/scts/a.com;
    
        ssl_certificate      /etc/letsencrypt/a.com.ecc.pem;
        ssl_certificate_key  /etc/letsencrypt/a.com.ecc.key;
        ssl_ct_static_scts   /etc/letsencrypt/scts/a.com;
        ssl_dhparam          /etc/letsencrypt/dhparams.pem;
        ssl_ciphers 'TLS13-AES-128-GCM-SHA256:TLS13-CHACHA20-POLY1305-SHA256: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_prefer_server_ciphers  on;
        ssl_ecdh_curve secp384r1;
        ssl_protocols              TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
        ssl_session_cache          shared:SSL:50m;
        ssl_session_timeout        1d;
        ssl_session_tickets        on;
        ssl_stapling               on;
        ssl_stapling_verify        on;
        resolver                   8.8.8.8 8.8.4.4 valid=300s;
        resolver_timeout           10s;
        add_header    Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload';
        add_header    Public-Key-Pins 'pin-sha256="YLh1dUR9y6Kja30RrAn7JKnbQG/uEtLMkBgFF2Fuihg=";pin-sha256="Fbs+o+IxVNTHBpjNQYfX/TBnxPC+OWLYxQLEtqkrAfM=";max-age=2592000; includeSubDomains';
        index index.html;
        location / {
            expires 120s;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
        expires 30d;
        access_log off;
        }
    location ~ .*\.(js|css)?$ {
        expires 7d;
        access_log off;
        }
    }
    
    

    请问可能存在哪些方面的问题?多谢各位指点。

    21 条回复    2018-06-14 08:58:23 +08:00
    qiayue
        1
    qiayue  
       2018-06-13 18:39:33 +08:00   ❤️ 1
    Servo
        2
    Servo  
       2018-06-13 18:41:47 +08:00   ❤️ 1
    1、HPKP 已经凉了,没必要配置了。
    2、letsencrypt 自带 SNI 了,没必要配置了。
    3、TLSv1 TLSv1.1 两个没必要支持了。
    4、ssl_ciphers 关于 TLS 1.3 的部分无意义。
    5、不配置 80 端口真的大丈夫?
    6、编译时不用加 --with-openssl-opt=enable-tls1_3
    fourstring
        3
    fourstring  
    OP
       2018-06-13 18:54:52 +08:00
    @qiayue #1 我所有的 https 服务都打开了 ssl_session_tickets on 的……
    fourstring
        4
    fourstring  
    OP
       2018-06-13 18:55:31 +08:00
    @qiayue #1 而且我访问带 www 的就没问题,但主域名就会报错……
    fourstring
        5
    fourstring  
    OP
       2018-06-13 18:56:14 +08:00
    @Servo #2 请问不配置 TLS13 的 ciphers 的话是否可以支持 tls1.3 ?
    wvc
        6
    wvc  
       2018-06-13 18:58:02 +08:00 via Android
    443 端口只绑定一个域名,然后 80 端口绑定两个,全部 301 到 443 的域名。
    Servo
        7
    Servo  
       2018-06-13 19:25:25 +08:00 via Android   ❤️ 1
    @fourstring Nginx 现在不支持近几个 pre 的密码套件配置,你大可删掉自己试一试。到底支持不支持,取决于你的浏览器支不支持 Draft 26/27/28。
    caola
        8
    caola  
       2018-06-13 20:01:41 +08:00   ❤️ 1
    @Servo tls1 和 tls1.1 都不用考虑的话,那么 rsa 的证书也没必要多此一举了,
    caola
        9
    caola  
       2018-06-13 20:09:57 +08:00   ❤️ 1
    不过只是个人博客的话,放弃支持 tls1 tls1.1 和 rsa 也无所谓了,毕竟这部分的用户比率,已经可以忽略不计了
    wql
        10
    wql  
       2018-06-13 20:12:07 +08:00 via Android   ❤️ 1
    Letsencrypt 自带 sct,所有和 sct 有关的全部去掉。
    fourstring
        11
    fourstring  
    OP
       2018-06-13 20:19:48 +08:00   ❤️ 1
    @wql #10 现在 letsencrypt 已经支持 CA 端的 CT 了?
    3dwelcome
        12
    3dwelcome  
       2018-06-13 21:09:52 +08:00 via Android
    楼主找到问题的原因了吗?回帖真能东拉西扯啊,没一个回答问题的。
    fourstring
        13
    fourstring  
    OP
       2018-06-13 21:13:12 +08:00
    @3dwelcome #12 按照上面各位的建议操作了一下,这个问题暂时不见了……我还不知道问题在哪
    Tink
        14
    Tink  
       2018-06-13 21:59:20 +08:00 via iPhone
    80
    msg7086
        15
    msg7086  
       2018-06-14 02:37:13 +08:00   ❤️ 1
    TLS13-AES-128-GCM-SHA256:TLS13-CHACHA20-POLY1305-SHA256

    这两个好像是无效 cipher 吧?



    Valid TLSv1.3 ciphersuite names are:

    TLS_AES_128_GCM_SHA256
    TLS_AES_256_GCM_SHA384
    TLS_CHACHA20_POLY1305_SHA256
    TLS_AES_128_CCM_SHA256
    TLS_AES_128_CCM_8_SHA256
    An empty list is permissible. The default value for the this setting is:

    "TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256"
    fourstring
        16
    fourstring  
    OP
       2018-06-14 07:56:38 +08:00
    @msg7086 #15 https://www.openssl.org/blog/blog/2018/02/08/tlsv1.3/

    OpenSSL has implemented support for five TLSv1.3 ciphersuites as follows:

    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

    msg7086
        17
    msg7086  
       2018-06-14 08:00:19 +08:00
    @fourstring 那篇文章已经过时了→_→
    fourstring
        18
    fourstring  
    OP
       2018-06-14 08:00:52 +08:00
    @msg7086 #17 请问哪里可以找到最新信息?
    msg7086
        19
    msg7086  
       2018-06-14 08:43:16 +08:00   ❤️ 1
    文章第一行「 See here for the latest version 」。
    fourstring
        20
    fourstring  
    OP
       2018-06-14 08:45:20 +08:00
    @msg7086 #19 噗……好吧是我没看仔细
    wql
        21
    wql  
       2018-06-14 08:58:23 +08:00 via Android   ❤️ 1
    @fourstring 对的,证书开始嵌入 SCT 了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3415 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:31 · PVG 19:31 · LAX 03:31 · JFK 06:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.