nginx证书未生效主因是配置未重载、证书链不完整、混用http资源、域名不匹配、证书过期、系统时间错误或443端口未放行。

证书没真正加载进 Nginx
配置写了不等于生效。常见情况是修改了 ssl_certificate 路径,但没执行 nginx -s reload;或语法有误,nginx -t 没通过就跳过检查。phpEnv 等集成环境还容易自动生成多个 server 块,Nginx 会按顺序匹配,导致实际加载的是其他域名的证书——你访问的是 www.example.com,浏览器却显示 example.net 的证书信息。
建议:
- 运行 nginx -t && nginx -s reload 确认重载成功
- 用 grep -r "server_name\|ssl_certificate" /phpenv/nginx/conf/vhost/ 扫描所有虚拟主机配置,核对目标域名是否唯一且精确(example.com 和 www.example.com 需分开配置或统一写入)
- 临时注释掉其他 server 块,只留一个测试,排除冲突
证书链不完整
Nginx 的 ssl_certificate 文件必须包含两段及以上:你的域名证书 + 中间证书(CA Bundle)。只放了域名证书(.crt),浏览器无法向上验证到受信根证书,就会标记“连接不安全”甚至直接拦截。
建议:
- 打开证书文件,确认内容含至少两个 -----BEGIN CERTIFICATE----- ... -----END CERTIFICATE----- 区块
- 若只有1段,从证书商下载包中找到 xxx_bundle.crt,把中间证书内容追加到域名证书末尾
- 用 SSL Checker 输入域名,查看 “Certificate Chain” 是否显示 Domain → Intermediate → Root 全链有效
页面混用了 HTTP 资源
证书本身没问题,但网页里引用了 http:// 的图片、JS、CSS、iframe 或字体,浏览器判定为“混合内容(Mixed Content)”,地址栏锁图标变黄或标红,提示“此页面包含不安全资源”。
建议:
- 在 Chrome 中按 F12 打开开发者工具,切换到 Console 或 Security 标签页,直接看到哪些资源被阻止
- 把报错的 http 链接复制出来,在浏览器地址栏手动改成 https 访问,能打开就直接代码里替换协议头
- 不能访问的外链,下载到本地服务器,改用相对路径(如 src="/static/js/widget.js")或完整 https 地址调用
其他高频干扰项
容易被忽略但影响直接: - 证书域名不匹配:单域名证书装在泛解析子域,或 www 与非 www 版本未同时覆盖 - 证书已过期:当前时间是 2026 年 5 月,检查证书有效期是否跨过 2026 年 5 月 12 日 - 系统时间错误:服务器或访客本地电脑时间偏差超过几分钟,浏览器会误判证书未生效或已过期 - 443 端口未放行:云服务器安全组、本地防火墙或路由器未开放 HTTPS 默认端口,导致回退到 HTTP 或连接失败











