HTTPS的双向认证(一)

本系列文章会讲解HTTPS的双向握手的机制,然后给出基于nginx的demo,此外还会使用curl作为客户端工具进行双向认证的测试,并使用wireshark进行协议分析。因为涉及内容会比较多,所以拆分成几篇文章来写。

本文先讲解基本的架构和思路。以下是本文要用到的SSL双向认证的架构图:

可以看到上面的架构和普通的HTTPS单向认证相比,多了一个客户端向服务端出示证书的动作。所以说在双向认证的场景下,不光是「客户端」要验证「服务端」的身份,还要「服务端」验证「客户端」的身份。

因此,相比单项验证,就多出来一些操作:

注意服务端的证书都要保管好,因为服务端包含:

其中服务端证书要配置进nginx服务器,当用户进行https连接的时候,要向客户端出示服务端证书,然后CA证书用来给客户端证书签名,并且后续nginx拿来验证客户端证书的签名。

两张证书的密钥文件无比重要,因为openssl生成的密钥文件里面包含私钥,一旦私钥泄露,那么任何人都可以拿着私钥进行签名和解密,安全性也就不能保障了。

关于公钥加密和非对称加密算法不是文本讨论的重点,可以自行系统学习。本系列的第一篇就写这么多,下一篇来介绍架构里面三张证书的创建和签名过程。

Powered by Jekyll and Theme by solid