10. PKI - HTTPS单向认证和双向认证

10. PKI - HTTPS单向认证和双向认证

  • 1. 单项认证
  • 2. 双向认证
  • 参考

所谓的HTTPS单项认证和双向认证,其实是SSL/TLS的单项认证和双向认证。在8. PKI - SSL/TLS Handshake Protocol(TLS握手详解)已经对TLS协议有了一个比较详细的介绍。那单向认证和双向认证是怎么回事呢?

其实可以简单的理解为:

  • 单项认证是客户端要对服务器进行认证;
  • 双向认证是客户端要对服务器进行认证,同时服务器也要对客户端进行认证。

单项认证多用于B2C模式;双向认证多用于B2B模式。

下面从TLS报文角度对单项认证做一下分析:

1. 单项认证

如下图单项认证的报文中,虚线部分是省略掉的可选报文。其大致过程如下:

1)客户端发起ClientHello;
2)服务端回应SeverHello,该过程中服务器会将自己的证书发送给客户端;
3)客户端回应:客户端收到后,检查证书是否合法,主要检查下面4点:

  • 检查证书是否过期
  • 检查证书是否已经被吊销
  • 证书是否可信
  • 检查收到的证书中的域名与请求的域名是否一致

4)服务器的最后回应

10. PKI - HTTPS单向认证和双向认证_第1张图片

2. 双向认证

在双向认证的报文中,多了一下三个报文:

  • Client Certificate Request
  • Client Certificate
  • Certificate Verify

1)Client Certificate Request:服务器在SeverHello消息中,会要求客户端提供“客户端的证书”
2)Client Certificate:客户端发送证书给服务器
3)Certificate Verify:客户端将之前所有收到的和发送的消息组合起来,并用hash算法得到一个hash值,然后用客户端的私钥对这个hash进行签名,并发送给服务器

服务器收到客户端证书后:

a)验证客户端证书的合法性,如果验证不通过则会拒绝连接;
b)用客户端证书中的公钥去验证收到的Certificate Verify消息中的签名。这一步的作用是为了确认证书确实是客户端的。

10. PKI - HTTPS单向认证和双向认证_第2张图片

参考

HTTPS实战之单向验证和双向验证

你可能感兴趣的:(PKI)