You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置HTTPS后浏览器提示证书无效,但openssl测试正常求助

解决自签名SSL证书在浏览器中无效的问题

核心原因

浏览器对证书的校验比openssl s_client更严格,主要触发报错的两个关键点:

  1. 自签名证书不在浏览器的受信任根证书列表中
  2. 证书缺少Subject Alternative Name (SAN)字段,或证书的通用名(CN)与访问的域名/IP不匹配

具体修复步骤

1. 重新生成包含SAN字段的合规自签名证书

现代浏览器要求证书必须包含SAN字段,仅设置CN字段的旧证书会被判定无效。执行以下命令生成符合规范的证书:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt -subj "/CN=<你的服务器域名或IP>" -addext "subjectAltName=DNS:<你的服务器域名>,IP=<服务器公网IP>"

替换命令中的<你的服务器域名或IP>为实际访问时使用的地址,确保两者完全一致。

2. 更新Nginx配置并重启服务

确认Nginx的SSL配置块指向新生成的证书和密钥:

server {
    listen 443 ssl;
    server_name <你的服务器域名或IP>;

    ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt;
    ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key;

    # 保留原有的其他SSL配置内容
}

重启Nginx使配置生效:

sudo systemctl restart nginx

3. 在浏览器中手动信任证书

自签名证书无第三方CA背书,需手动添加到浏览器信任列表:

  • Chrome:访问目标地址后,点击地址栏"不安全"提示 → 查看证书 → 详细信息 → 复制到文件,再通过系统证书管理器导入该证书,并设置为"受信任的根证书颁发机构"。
  • Midori:打开浏览器设置 → 隐私与安全 → 证书 → 导入生成的nginx-selfsigned.crt,勾选信任该证书用于网站认证。

4. 验证证书有效性

用以下命令检查证书是否包含正确的SAN字段:

openssl x509 -in /etc/ssl/certs/nginx-selfsigned.crt -text -noout | grep -A 3 "Subject Alternative Name"

若输出内容包含你设置的域名/IP,说明证书配置符合要求。

内容的提问来源于stack exchange,提问作者stustd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 19:22:02