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

网站SSL证书配置问题求助:Nginx部署自签证书后遭浏览器警告

问题描述

按照ArchWiki指南生成自签SSL证书,执行命令如下:

# mkdir /etc/nginx/ssl
# cd /etc/nginx/ssl
# openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 1095
# chmod 400 server.key
# chmod 444 server.crt

部署到Nginx后,浏览器弹出「您的连接不是私密连接」的安全警告,Nginx核心配置片段如下:

server {
    server_name www.example.com;
    listen 443 ssl;
    listen [::]:443 ssl;
    ssl_certificate /path/server.crt;
    ssl_certificate_key /path/server.key;
...
}
原因分析
  • 自签证书无权威CA背书:浏览器默认只信任由全球公认的根证书颁发机构(CA)签发的证书,你生成的自签证书未经过这类机构认证,因此被判定为不安全连接。
  • 证书域名不匹配(潜在因素):如果生成证书时填写的Common Name(CN)与www.example.com不一致,或者未添加该域名作为Subject Alternative Name(SAN),也会触发域名不匹配的警告。
解决方法

方案一:本地信任自签证书(仅适用于测试/开发环境)

操作步骤:

  1. 从服务器将server.crt证书文件复制到本地机器。
  2. 根据操作系统添加到信任列表:
    • Linux:
      sudo cp server.crt /usr/local/share/ca-certificates/
      sudo update-ca-certificates
      
    • Windows:双击证书文件,点击「安装证书」→选择「本地计算机」→「将所有证书放入下列存储」→选择「受信任的根证书颁发机构」完成安装。
    • macOS:双击证书文件,在钥匙串访问中找到该证书,右键「显示简介」→「信任」选项卡设置「使用此证书时」为「始终信任」。
    • 浏览器单独配置:部分浏览器(如Chrome)可在安全设置中手动导入证书并标记为受信任。

方案二:使用权威CA签发的免费证书(适用于生产环境)

推荐使用Let's Encrypt提供的免费可信证书,通过certbot工具一键部署:

操作步骤:

  1. 安装certbot及Nginx插件(Arch Linux环境):
    sudo pacman -S certbot certbot-nginx
    
  2. 生成并自动部署证书:
    sudo certbot --nginx -d www.example.com
    
    该命令会自动修改Nginx配置、安装证书,并设置证书自动续期。

额外优化:确保自签证书域名匹配

若坚持使用自签证书,重新生成时需明确指定域名信息,避免不匹配问题:

openssl req -new -x509 -nodes -newkey rsa:4096 -keyout server.key -out server.crt -days 1095 \
  -subj "/CN=www.example.com" \
  -addext "subjectAltName=DNS:www.example.com,DNS:example.com"

这条命令直接设置CN为www.example.com,同时添加SAN字段包含主域名和裸域名,覆盖常见的域名匹配场景。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 03:37:16