← 中文资源

简体中文版本

为服务间调用强制 mTLS

签发客户端证书、配置服务器要求并校验证书,验证证书链与身份,使只有受信服务能连接。

阅读英文原文

概述

内部 API 若信任网络上的任何来源,一旦攻击者进入集群即可无凭证横向移动。mTLS 要求调用方出示受信客户端证书,把身份验证从网络位置转移到可验证的密码学身份。

关键步骤

  1. 由内部 CA 签发带明确主体或 SAN 身份的客户端证书。
  2. 配置服务器要求并校验客户端证书链。
  3. 把证书身份映射为授权主体。
  4. 轮换客户端证书并拒绝过期或已吊销者。

验证

  • 无证书或证书不受信任的客户端在握手阶段被拒绝。
  • 授权基于证书身份而非 IP。
  • 证书轮换后连接正常。
  • 过期或吊销的证书被拒绝。

注意事项

  • mTLS 需要证书生命周期管理,比静态凭证更重。
  • 它无法防范合法持有有效证书的被攻陷服务。

适用范围

本条目围绕「为服务间调用强制 mTLS」给出可复制的步骤、验证方式与常见问题,适合需要按此流程落地的工程团队。执行时请结合自身上下文调整命令与阈值,并在变更前后留存证据,便于后续复核与回滚。

openssl verify -CAfile ca.crt client.crt
# nginx
ssl_client_certificate /etc/ssl/ca.crt;
ssl_verify_client on;