nginx 网站访问报错 ERR_SSL_PROTOCOL_ERROR
今天迁移了一个网站到新服务器,用 certbot 安装证书后访问报错 ERR_SSL_PROTOCOL_ERROR
。
看了下 nginx 的错误日志:
2024/04/16 19:17:14 [crit] 1286606#1286606: *8 SSL_do_handshake() failed (SSL: error:0A0000BA:SSL routines::bad cipher) while SSL handshaking, client: xxx.xxx.xxx.xxx, server: 0.0.0.0:443
奇怪的是,其他网站都是正常的。
检查配置,发现迁移网站的 nginx 配置跟其他网站的区别有一个:
ssl_prefer_server_ciphers off;
将 off
改为 on
后 service nginx reload,问题解决。
需要注意的是,由于 ssl 是 certbot 自动配置的,所以这个配置项在 /etc/letsencrypt/options-ssl-nginx.conf
这个文件里。
PS: 如果不在这个文件夹里,可以参见你的站点配置文件 include 了哪个配置文件。