浏览器报"您的连接不是私密连接"(Chrome 里通常是 NET::ERR_CERT_*),本质是 HTTPS 握手阶段证书校验没过。按出现时机分几种最常见情况,对号入座:
点开"高级"/"详细信息",看具体是哪种:
错误码 | 含义 | 高频原因 |
|---|---|---|
NET::ERR_CERT_DATE_INVALID | 证书过期/未生效 | 服务器时间不对、证书真过期了 |
NET::ERR_CERT_AUTHORITY_INVALID | 不受信任的 CA | 自签证书没导入系统、Let's Encrypt 中间证书缺失 |
NET::ERR_CERT_COMMON_NAME_INVALID | 域名不匹配 | 访问的域名不在 SAN 里(比如证书是 www.xxx.com,你访 xxx.com) |
NET::ERR_CERT_REVOKED | 证书被吊销 | 少见,CA 主动吊销 |
sudols /etc/letsencrypt/live/yourdomain.com/
sudo nginx -T | grep ssl_certificate
常见坑:
Certbot 拿到了证书,但Nginx 配置里路径还是旧的 / 自签的→ 改完没 nginx -s reload
-d只写了 example.com,没写 www.example.com,访 www就报错 → 重新跑:sudo certbot --nginx -d example.com -d www.example.com
sudo certbot certificates
sudo certbot renew
sudo systemctl reload nginx
如果续失败,多半是80 端口被占 / 国内未备案被拦 / DNS 没生效——Certbot 的 HTTP-01 挑战要走 80 让 CA 回源验证。
自签的本来就不会被浏览器信任,提示"不是私密连接"是正常现象,要点"高级 → 继续前往(不安全)"才能进。想要 🔒 绿锁就得:
把自签 CA 根证书导入系统/浏览器信任区,或者
直接用 mkcert 这种会自动装本地 CA 的工具重签
Let's Encrypt 不给纯 IP 发证书,访 https://1.2.3.4必炸。要么走 HTTP,要么配个域名。
timedatectl status
sudo ntpdate -s time.nist.gov
证书"未生效 / 已过期"的判断全靠双方时间,差几个月就直接红屏。
curl -vI https://yourdomain.com 2>&1 | grep -E "expire|issuer|subject"
openssl s_client -connect yourdomain.com:443 -servername yourdomain.com | openssl x509 -noout -dates -subject
能看到证书过期日和 CN/SAN,对不上就是配置问题。