Rootop 服务器运维与web架构

mTLS双向认证

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

作者:Venus

服务器运维与性能优化

评论已关闭。