技术解析

访问 a.com 会报错 ERR_SSL_PROTOCOL_ERROR,但访问 www.a.com 没有问题,可能是哪些方面的错误?
0
1975-02-21 01:19:00
idczone

如题。web server 使用的是 nginx-1.15.0,证书是用 certbot 签发的普通 SAN 证书,只包含了 a.com 和 www.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;
    }
}

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


看下是不是这个原因 https://www.cnblogs.com/pangxiaox/p/8125006.html

1、HPKP 已经凉了,没必要配置了。
2、letsencrypt 自带 SNI 了,没必要配置了。
3、TLSv1 TLSv1.1 两个没必要支持了。
4、ssl_ciphers 关于 TLS 1.3 的部分无意义。
5、不配置 80 端口真的大丈夫?
6、编译时不用加 --with-openssl-opt=enable-tls1_3

我所有的 https 服务都打开了 ssl_session_tickets on 的……

而且我访问带 www 的就没问题,但主域名就会报错……

请问不配置 TLS13 的 ciphers 的话是否可以支持 tls1.3 ?

443 端口只绑定一个域名,然后 80 端口绑定两个,全部 301 到 443 的域名。

Nginx 现在不支持近几个 pre 的密码套件配置,你大可删掉自己试一试。到底支持不支持,取决于你的浏览器支不支持 Draft 26/27/28。

tls1 和 tls1.1 都不用考虑的话,那么 rsa 的证书也没必要多此一举了,

不过只是个人博客的话,放弃支持 tls1 tls1.1 和 rsa 也无所谓了,毕竟这部分的用户比率,已经可以忽略不计了

Letsencrypt 自带 sct,所有和 sct 有关的全部去掉。

现在 letsencrypt 已经支持 CA 端的 CT 了?

楼主找到问题的原因了吗?回帖真能东拉西扯啊,没一个回答问题的。

按照上面各位的建议操作了一下,这个问题暂时不见了……我还不知道问题在哪

80

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"

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


那篇文章已经过时了→_→

请问哪里可以找到最新信息?

文章第一行「 See here for the latest version 」。

噗……好吧是我没看仔细

对的,证书开始嵌入 SCT 了

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服