最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何配置 Nginx 负载均衡网关以严格校验上游微服务节点返回的 TLS 证书合法性
时间:2026-06-19 09:18:46 编辑:袖梨 来源:一聚教程网
要让Nginx严格校验上游微服务TLS证书,必须同时配置proxy_ssl_verify on、proxy_ssl_trusted_certificate、proxy_ssl_name和proxy_ssl_server_name on四项指令,缺一不可且须同在location或upstream块内;此外建议补充proxy_ssl_verify_depth 3、proxy_ssl_protocols TLSv1.2 TLSv1.3及proxy_ssl_session_reuse off以增强安全性与稳定性。
要让 Nginx 负载均衡网关真正严格校验上游微服务节点返回的 TLS 证书,不能只写 proxy_ssl_verify on。必须四点齐备、协同生效,否则会静默降级或直接返回 502 错误。
必须同时配置的四个核心指令
这四项缺一不可,且需全部写在 location 或 upstream 块内(http 或 server 块中声明无效):
- proxy_ssl_verify on; —— 明确启用上游证书校验开关(默认是 off)
- proxy_ssl_trusted_certificate /etc/nginx/ssl/upstream-ca.crt; —— 指向 PEM 格式的可信根/中间 CA 证书文件,只含证书,不含私钥或终端证书
- proxy_ssl_name "auth-svc.default.svc.cluster.local"; —— 显式声明期望匹配的域名,用于比对证书中的 Subject Alternative Name(SAN),尤其当 upstream 使用 IP 或内部 DNS 名时必须设置
- proxy_ssl_server_name on; —— 启用 TLS SNI 扩展,确保握手时向后端发送正确的 Server Name,对接多租户、泛域名或云服务后端时必不可少
提升校验稳定性和安全性的关键补充
仅配齐四项还不够,以下配置能覆盖常见生产场景:
- proxy_ssl_verify_depth 3; —— 默认只验证 1 层(终端直连根 CA),但多数微服务使用“终端 → 中间 CA → 根 CA”三级链,设为 3 更稳妥
- proxy_ssl_protocols TLSv1.2 TLSv1.3; —— 禁用 TLSv1.0/v1.1,防止协议降级干扰证书验证逻辑
- proxy_ssl_session_reuse off; —— 关闭 TLS session 复用,避免缓存异常证书状态导致后续请求绕过重校验
可信证书文件的准备要点
proxy_ssl_trusted_certificate 所指文件必须满足:
- 格式为纯 PEM,每张证书以
-----BEGIN CERTIFICATE-----开头、-----END CERTIFICATE-----结尾 - 只包含可信根 CA 和中间 CA 证书(可多个拼接),顺序不限
- 路径需 Nginx worker 进程可读(建议权限 644),推荐放在
/etc/nginx/ssl/upstream-ca.crt - 可用命令快速验证:
openssl pkcs7 -print_certs -in /path/to/file.crt -noout能正常输出即为合法
验证是否真正生效的方法
配置重载后,不能只看 Nginx 启动成功:
- 发起真实请求,观察响应状态码;若仍返回 502 或日志出现
certificate verify failed,说明某项配置缺失或不匹配 - 开启 debug 日志(临时):
error_log /var/log/nginx/error.log debug;,查看 TLS 握手细节(注意生产环境慎用) - 重点检查 error log 中是否含
SSL_do_handshake() failed或unable to get issuer certificate等线索
相关文章
- 明末渊虚之羽版本奖励错误如何补偿 07-01
- 原神峡谷盈月之镜解谜方法 07-01
- 末日进化如何升级人物卡 07-01
- 魔兽世界卡格罗什的命运背包位置在哪 07-01
- 沙石镇时光体力恢复方法大全 沙石镇时光快速回满体力的实用技巧 07-01
- 空洞骑士寻神者篇章攻略 07-01