理解mTLS

为 Ingress-nginx 配置双向认证(mtls)

转载: 为 Ingress-nginx 配置双向认证(mtls) - 知乎 (zhihu.com)

首先什么是 mtls (双向认证)?它是一个过程,在这个过程中,客户机和服务器都通过证书颁发机构彼此验证身份。
相信 tls 大家都比较熟悉,就是 server 端提供一个授信证书,当我们使用 https 协议访问server端时,client 会向 server 端索取证书并认证(浏览器会与自己的授信域匹配或弹出不安全的页面)。
mtls 则是由同一个 root ca 生成两套证书,即客户端证书和服务端证书。客户端使用 https 访问服务端时,双方会交换证书,并进行认证,认证通过方可通信。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以尝试以下实验步骤: 1. 首先,使用 OpenSSL 生成 服务器和客户端的证书和私钥。例如: ``` openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 365 -out server.crt openssl req -newkey rsa:2048 -nodes -keyout client.key -x509 -days 365 -out client.crt ``` 2. 创建一个服务器端实现,将证书和私钥加载到 SSL 上下文中,并在服务器上启动双向认证。例如: ``` SSL_CTX *ctx = SSL_CTX_new(TLSv1_2_server_method()); SSL_CTX_use_certificate_file(ctx, "server.crt", SSL_FILETYPE_PEM); SSL_CTX_use_PrivateKey_file(ctx, "server.key", SSL_FILETYPE_PEM); SSL_CTX_load_verify_locations(ctx, "client.crt", NULL); SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL); ``` 3. 创建一个客户端实现,将证书和私钥加载到 SSL 上下文中,并在客户端上启动双向认证。例如: ``` SSL_CTX *ctx = SSL_CTX_new(TLSv1_2_client_method()); SSL_CTX_use_certificate_file(ctx, "client.crt", SSL_FILETYPE_PEM); SSL_CTX_use_PrivateKey_file(ctx, "client.key", SSL_FILETYPE_PEM); SSL_CTX_load_verify_locations(ctx, "server.crt", NULL); SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL); ``` 4. 启动服务器和客户端,并通过 SSL 建立双向认证连接。例如: ``` SSL *ssl = SSL_new(ctx); SSL_set_fd(ssl, sockfd); SSL_accept(ssl); SSL *ssl = SSL_new(ctx); SSL_set_fd(ssl, sockfd); SSL_connect(ssl); ``` 5. 在双向认证连接上发送和接收数据。例如: ``` SSL_write(ssl, buf, len); SSL_read(ssl, buf, len); ``` 希望这个实验对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值