场景说明
架构:防火墙拥有公网 IP,内网多台服务,全部共用一张通配符 SSL 证书(*.example.com)思路:证书只部署在防火墙,防火墙做 SSL 卸载(终止 HTTPS),再反向代理到内网各服务;内网服务可以只用 HTTP,不用装证书。
域名示例:a.example.com、b.example.com、c.example.com,证书*.example.com
⚠️前提:
域名*.example.com解析全部指向防火墙公网 IP
防火墙支持 SSL 卸载 + 基于 Host 的反向代理(SNI),主流:深信服、H3C、华为、pfSense、OPNsense、NGINX、Traefik 都可以
通配符证书必须包含*.example.com,且私钥完整(证书文件 + 私钥,不要分开丢失私钥)
一、证书准备(通用)
拿到证书一般 3 个文件:
证书公钥:*.example.com.crt(服务器证书)
证书私钥:*.example.com.key(重点!不能泄露)
中间证书 / CA 链:ca.crt(证书链,很多设备需要拼接)
部分防火墙要求证书 + 中间证书合并成一个 pem
# linux下合并证书链(顺序:服务器证书在前,中间证书在后)
cat *.example.com.crt ca.crt > fullchain.pem
最终上传到防火墙的一般是:fullchain.pem + private.key
二、防火墙配置核心逻辑(SNI + 反向代理)
在防火墙【SSL 证书管理】导入通配符证书(fullchain + 私钥),命名:wildcard-example
新建公网 HTTPS 监听:端口 443,绑定刚才导入的通配符证书,开启 SNI(必须开,否则无法区分域名)
配置基于 Host 域名的反向代理规则:
访问 a.example.com:443 → 解密 SSL → HTTP 转发内网 192.168.1.10:80
访问 b.example.com:443 → 解密 SSL → HTTP 转发内网 192.168.1.11:80
访问 c.example.com:443 → 解密 SSL → HTTP 转发内网 192.168.1.12:80
可选:公网 80 端口监听,配置 HTTP 自动跳转到 HTTPS
防火墙放行策略:公网 → 防火墙 443 端口;防火墙到内网服务器放行 80,内网服务器不需要开放公网
数据流:
用户 HTTPS 请求 → 防火墙 (公网 IP) → 防火墙用通配符证书完成 SSL 握手解密 → 内网 HTTP 明文访问业务 → 返回,防火墙再加密 HTTPS 给用户
三、不同设备简要操作
方案 A:防火墙内置 NGINX(软防火墙 / OPNsense/pfSense)
导入证书到系统证书库,然后写代理配置示例:
server {
listen 443 ssl;
server_name *.example.com;
ssl_certificate /etc/ssl/fullchain.pem;
ssl_certificate_key /etc/ssl/private.key;
# 根据域名转发内网
if ($host = a.example.com) {
proxy_pass http://192.168.1.10:80;
}
if ($host = b.example.com) {
proxy_pass http://192.168.1.11:80;
}
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# http跳转
server {
listen 80;
server_name *.example.com;
return 301 https://$host$request_uri;
}方案 B:华为 / 华三 / 深信服等硬件防火墙(SSL 卸载 + 虚拟服务器 / 应用交付)
对象管理→SSL 证书:上传证书 + 私钥 + CA 链,启用
新建虚拟服务器,端口 443,开启SSL 卸载,选择上面的通配符证书,打开 SNI
配置域名匹配策略:
安全策略:允许外网访问该虚拟服务 443
注意:部分老硬件防火墙SNI 支持差,如果不支持 SNI,这种多域名共用一张证书方案会失效。
四、两种备选架构(区分:SSL 卸载 vs SSL 透传)
上面是【SSL 卸载(推荐)】:防火墙解密,内网 http,内网机器不用管证书。
不推荐:SSL 透传(防火墙只做端口映射,不处理证书)
防火墙直接 443 端口映射到内网一台机器,证书要部署在内网服务器,这种不能多内网服务共用同一张证书,只能一台机器。👉 不符合你的需求,不要选。
五、常见坑点
❗必须开启 SNI:浏览器携带访问域名,防火墙才能匹配不同后端;关闭 SNI,无法区分a/b域名。
证书域名匹配:通配符*.example.com不能匹配xxx.a.example.com(仅一级子域名)。
证书链不全:部分浏览器报不安全,就是缺少中间 CA 证书,一定要合并 fullchain。
Host 头丢失:反向代理必须传递Host头,很多内网业务依赖 Host 识别域名,否则页面异常、跳转错误。
内网服务不要强制 HTTPS:防火墙已经卸载 SSL,如果内网服务强制 HTTPS,会变成防火墙解密后再发起 HTTPS,变成双层 SSL,配置更复杂。
源 IP 问题:内网日志看到的是防火墙内网地址,需要开启X-Real-IP传递真实客户端 IP。
六、测试验证
浏览器访问 https://a.example.com,查看证书,确认是*.example.com
访问 https://b.example.com,同一张证书,业务正常
在线 ssl 检测工具(sslshopper)检查证书链、SNI 是否正常
补充:如果内网业务必须保留 HTTPS(双层 SSL)
防火墙依然用通配符证书对外做 SSL;防火墙和内网之间走 HTTPS,内网服务器单独配置自签证书。一般没必要,增加性能开销。