mTLS 通信流程
1 证书准备:
服务端和客户端都拥有各自的 X.509 证书和私钥
证书由同一个受信任的 CA 签发(可以是私有 CA)
2 握手过程(TLS Handshake):
客户端发起连接请求
服务端返回其证书
客户端验证服务端证书(CA 签名 + 域名匹配)
客户端也发送自己的证书
服务端验证客户端证书
双方协商会话密钥 R,建立加密通道
3 通信加密:
所有数据通过协商出的密钥进行加密传输(R为对称加密秘钥,不再使用公钥加密)
双方身份已验证,通信安全可信
公钥加密是为“身份验证 + 密钥协商”服务的,不是为了日常数据传输。真正保护数据的是协商出来的对称密钥 R。
nginx实现方式:
server { listen 443 ssl; server_name api.example.com; ssl_certificate /etc/nginx/certs/server.crt; ssl_certificate_key /etc/nginx/certs/server.key; ssl_client_certificate /etc/nginx/certs/ca.crt; ssl_verify_client on; # 强制客户端提供证书 location / { proxy_pass http://backend; } }
参考:https://help.aliyun.com/zh/api-gateway/traditional-api-gateway/user-guide/mutual-tls-authentication
原创文章,转载请注明。本文链接地址: https://www.rootop.org/pages/5560.html