“您的连接不是私密连接”主因是证书链不完整、ssl协议过时、域名不匹配或客户端时间/软件干扰;需合并站点与中间证书、启用tlsv1.2+、配置san证书,并校准时间、禁用https扫描、清除ssl缓存。

这种情况很常见,证书文件本身没问题、Nginx 配置也写对了路径,但浏览器仍报“此连接非私密”,问题往往出在链路或细节上,而不是配置语法错误。
检查证书链是否完整
只放站点证书(.crt 或 .pem)是不够的。浏览器需要中间证书才能连到根 CA。如果缺失,信任链就断了。
- 用
openssl s_client -connect yourdomain.com:443 -showcerts查看返回的证书数量——正常应输出 2~3 个证书(站点证书 + 中间证书) - 若只看到一个,说明中间证书没传给客户端
- 正确做法:把站点证书和中间证书合并成一个文件(顺序为:站点证书在前,中间证书紧随其后),然后在 Nginx 中用
ssl_certificate指向这个合并后的文件 - 不要包含根证书,它本该存在用户设备里
确认 SSL 协议与加密套件是否过时
现代浏览器(尤其是 Safari 和新版 Chrome)已禁用 TLS 1.0/1.1,若服务器还开着这些旧协议,或用了 RC4、3DES 等弱算法,就会触发警告。
- 在 server 块中强制指定:
ssl_protocols TLSv1.2 TLSv1.3; - 禁用不安全套件,推荐使用:
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256'; - 检测工具推荐:SSL Labs,它会明确标出“Chain issues”“Weak protocols”等具体项
排查域名匹配与证书类型
证书必须覆盖你正在访问的完整域名,包括 www 和非 www 版本。
- 访问
https://example.com,但证书只绑了www.example.com?不行 - 证书是单域名,却想用在子域名(如 api.example.com)?也不行
- 解决办法:申请带 SAN(Subject Alternative Name)的证书,或用通配符证书(
*.example.com) - 用命令快速验证:
openssl x509 -in your.crt -text -noout | grep -A1 "Subject Alternative Name"
别忽略客户端侧干扰因素
有时候不是服务器的问题,而是本地环境导致误判。
- 电脑或手机系统时间偏差超过 5 分钟,证书会被认为“未生效”或“已过期”——务必开启自动校时
- 杀毒软件、企业防火墙、某些国产安全工具会启用 HTTPS 扫描,用自己的根证书做中间人,而该证书未被系统信任
- 浏览器缓存了旧的 SSL 错误状态(比如之前点过“继续前往”),清除 SSL 状态 和 Cookie 后重试
- 用隐身窗口或另一台设备访问,能快速判断是不是本地问题











