【发布时间】:2021-09-30 18:15:53
【问题描述】:
我正在使用 NGINX 作为 DNS over TLS 服务器。
然而,Android“私有 DNS”突然停止在所有设备上运行。
使用 kdig 仍然可以正常工作
kdig -d @my.dns.server +tls-ca +tls-host=my.dns.server example.org
然而,Android 请求却失败了,我在 NGINX 日志中收到以下错误
SSL_do_handshake() failed (SSL: error:14094415:SSL routines:ssl3_read_bytes:sslv3 alert certificate expired:SSL alert number 45) while SSL handshaking, client: **.**.**.**, server: 0.0.0.0:853
证书仍然有效,但我不确定它为什么会抛出此错误。
我的 NGINX SSL 配置是
ssl_certificate /etc/letsencrypt/live/my.dns.server/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/my.dns.server/privkey.pem; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-SHA";
ssl_handshake_timeout 10s;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 4h;
【问题讨论】:
-
请务必查看letsencrypt.org/2020/12/21/extending-android-compatibility.html LE Root 证书今天已过期。
-
@PatrickMevzek 有没有办法强制 certbot 使用“ISRG Root X1”替代链?
-
根据给定的链接,是的,似乎有可能:“备用链呢?今天,如果用户配置了备用链,一些 ACME 客户可以改为请求备用链。我们目前提供获取链的选项:Subscriber Certificate
-
是的,我找到了。您可以将
--preferred-chain "ISRG Root X1"添加到certbotCLI 命令。现在效果很好。再次感谢@PatrickMevzek -
你应该根据你的发现写一个答案,然后选择它作为最佳答案。但是,我不是 100% 确定您的问题与编程无关,可能在 Server Fault 上更好