当前位置:首页 > 技术 > 正文内容

内网HTTPS服务自签名证书配置:支持虚拟IP与多服务器节点

访客 技术 2026年7月6日 1

内网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证书。

操作流程如下:

  1. 登录WAF管理界面
  2. 找到当前配置的HTTPS证书
  3. 替换为新生成的 ssl_certificate.crt 内容
  4. 更新私钥为 ssl_private.key
  5. 保存并重新加载配置

❗ 否则,用户访问时看到的是旧证书,浏览器仍会提示"证书不安全"。


六、总结要点

步骤 操作说明
1 使用OpenSSL配置文件定义多个IP(VIP + 多实机IP)
2 生成带subjectAltName扩展的自签名证书
3 在Nginx中正确引用证书路径并启用SSL
4 将证书导入客户端系统信任库
5 若存在中间安全设备,必须同步更新其证书

完成以上流程后,内网环境下的HTTPS服务即可稳定运行,支持跨多服务器节点访问,且不受浏览器安全警告干扰。

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。