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

2018-06-13 18:24:00 +08:00
 fourstring

如题。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;
    }
}

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

4002 次点击
所在节点    NGINX
21 条回复
qiayue
2018-06-13 18:39:33 +08:00
Servo
2018-06-13 18:41:47 +08:00
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
2018-06-13 18:54:52 +08:00
@qiayue #1 我所有的 https 服务都打开了 ssl_session_tickets on 的……
fourstring
2018-06-13 18:55:31 +08:00
@qiayue #1 而且我访问带 www 的就没问题,但主域名就会报错……
fourstring
2018-06-13 18:56:14 +08:00
@Servo #2 请问不配置 TLS13 的 ciphers 的话是否可以支持 tls1.3 ?
wvc
2018-06-13 18:58:02 +08:00
443 端口只绑定一个域名,然后 80 端口绑定两个,全部 301 到 443 的域名。
Servo
2018-06-13 19:25:25 +08:00
@fourstring Nginx 现在不支持近几个 pre 的密码套件配置,你大可删掉自己试一试。到底支持不支持,取决于你的浏览器支不支持 Draft 26/27/28。
caola
2018-06-13 20:01:41 +08:00
@Servo tls1 和 tls1.1 都不用考虑的话,那么 rsa 的证书也没必要多此一举了,
caola
2018-06-13 20:09:57 +08:00
不过只是个人博客的话,放弃支持 tls1 tls1.1 和 rsa 也无所谓了,毕竟这部分的用户比率,已经可以忽略不计了
wql
2018-06-13 20:12:07 +08:00
Letsencrypt 自带 sct,所有和 sct 有关的全部去掉。
fourstring
2018-06-13 20:19:48 +08:00
@wql #10 现在 letsencrypt 已经支持 CA 端的 CT 了?
3dwelcome
2018-06-13 21:09:52 +08:00
楼主找到问题的原因了吗?回帖真能东拉西扯啊,没一个回答问题的。
fourstring
2018-06-13 21:13:12 +08:00
@3dwelcome #12 按照上面各位的建议操作了一下,这个问题暂时不见了……我还不知道问题在哪
Tink
2018-06-13 21:59:20 +08:00
80
msg7086
2018-06-14 02:37:13 +08:00
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
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
2018-06-14 08:00:19 +08:00
@fourstring 那篇文章已经过时了→_→
fourstring
2018-06-14 08:00:52 +08:00
@msg7086 #17 请问哪里可以找到最新信息?
msg7086
2018-06-14 08:43:16 +08:00
文章第一行「 See here for the latest version 」。
fourstring
2018-06-14 08:45:20 +08:00
@msg7086 #19 噗……好吧是我没看仔细

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/462860

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX