内网HTTPS服务自签名证书配置:支持虚拟IP与多服务器节点
内网HTTPS服务自签名证书部署方案(兼容多节点与浏览器信任)
在企业内部网络中,当通过虚拟IP(VIP)访问多个后端服务器的HTTPS服务时,若使用自签名证书,浏览器会因证书不被信任而发出安全警告。本指南介绍如何通过OpenSSL生成一张涵盖虚拟地址与多台真实服务器IP的自签名证书,并完成Nginx配置、客户端信任导入及WAF证书同步。
一、核心目标
- 生成一张可同时匹配 虚拟IP 与 多个实际服务器IP 的证书
- 实现基于Nginx的HTTPS服务正常运行
- 消除浏览器安全提示,实现全链路信任
- 若存在安全网关(如WAF),确保其证书与前端一致
二、证书生成步骤
1. 创建自定义配置文件 cert_config.cnf
创建一个名为 cert_config.cnf 的配置文件,内容如下:
[req]
default_bits = 2048
prompt = no
default_md = sha256
distinguished_name = dn
x509_extensions = v3_ext
[dn]
C = CN
ST = Beijing
L = Beijing
O = InternalService
OU = ITDepartment
CN = 11.196.188.25 # 虚拟IP地址
[v3_ext]
subjectAltName = @alt_names
[alt_names]
IP.1 = 11.196.188.25 # VIP
IP.2 = 11.196.188.2 # 后端主机1
IP.3 = 11.196.188.3 # 后端主机2
✅ 关键点:
subjectAltName必须包含所有需被识别的IP地址,否则浏览器将拒绝连接。
2. 生成证书与私钥
执行以下命令生成证书文件 ssl_certificate.crt 和私钥 ssl_private.key:
openssl req -x509 -nodes -days 36500 -newkey rsa:2048 \
-keyout ssl_private.key \
-out ssl_certificate.crt \
-config cert_config.cnf
⚠️ 建议有效期设置为10年(36500天),避免频繁更新。
三、Nginx 配置部署
将生成的两个文件复制至目标服务器(建议部署在处理请求的负载均衡或反向代理节点上)。
修改Nginx配置示例:
server {
listen 11.196.188.25:8008 ssl;
server_name 11.196.188.25;
ssl_certificate /etc/nginx/ssl/ssl_certificate.crt;
ssl_certificate_key /etc/nginx/ssl/ssl_private.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512;
location / {
proxy_pass http://backend_pool;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
验证配置并重载服务:
nginx -t && systemctl reload nginx
四、客户端证书信任设置
由于是自签名证书,需手动添加到操作系统信任库中:
- Windows:双击
ssl_certificate.crt→ "安装证书" → 选择"本地计算机" → 存放于"受信任的根证书颁发机构" - macOS:打开"钥匙串访问" → 导入证书 → 双击证书 → 设置"始终信任"
- Linux(Ubuntu/Debian):
sudo cp ssl_certificate.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates
完成之后重启浏览器访问:
👉 https://11.196.188.25:8008,应显示安全锁图标,无警告。
五、WAF/防火墙证书同步(关键!)
如果您的虚拟IP前有安全设备(如WAF、防火墙、负载均衡器),请务必同步更新其上的SSL证书。
操作流程如下:
- 登录WAF管理界面
- 找到当前配置的HTTPS证书
- 替换为新生成的
ssl_certificate.crt内容 - 更新私钥为
ssl_private.key - 保存并重新加载配置
❗ 否则,用户访问时看到的是旧证书,浏览器仍会提示"证书不安全"。
六、总结要点
| 步骤 | 操作说明 |
|---|---|
| 1 | 使用OpenSSL配置文件定义多个IP(VIP + 多实机IP) |
| 2 | 生成带subjectAltName扩展的自签名证书 |
| 3 | 在Nginx中正确引用证书路径并启用SSL |
| 4 | 将证书导入客户端系统信任库 |
| 5 | 若存在中间安全设备,必须同步更新其证书 |
完成以上流程后,内网环境下的HTTPS服务即可稳定运行,支持跨多服务器节点访问,且不受浏览器安全警告干扰。