老青菜

TLS1.2 Certificate Verify

2019-06-10

如果Client发送了Client Certificate消息,并且该证书是具有签名能力的,除了那些包含固定DH协商参数的证书(DH协商算法只能协商密钥,不具备签名能力)。如果满足这些条件,紧跟着Client Key Exchange,Client立即发送Certificate Verify,证明自己拥有该证书。

消息格式

Signature Algorithm

签名算法,rsa_pkcs1_sha512,rsa是签名算法;sha512是hash算法,类似md5。

Signature

签名。针对所有握手消息(不包含Client Hello)使用sha512 hash算法生成消息摘要,然后利用rsa私钥加密得到签名,流程如下:

针对Client,生成步骤如下:

  1. Client拿到所有握手消息(不包含ClientHello),记M1。
  2. 对握手消息M1使用sha512加密,生成消息摘要N1。
  3. 使用Client证书里的RSA私钥加密消息摘要N1,得到Signature。

针对Server,验签的流程如下:

  1. Server拿到签名Signature,使用Client证书里的RSA公钥解密,得到消息摘要N1。
  2. Server拿到所有握手消息(不包含ClientHello),记M2,其实和Client的M1是一致的。
  3. 对握手消息M2使用sha512加密,生成消息摘要N2,继续和解密的消息摘要N1对比,如果相同,则验证通过。

参考链接

TLS1.2
TLS1.3
HandShake Protocol

Tags: HTTP
使用支付宝打赏
使用微信打赏

若你觉得我的文章对你有帮助,欢迎点击上方按钮对我打赏

扫描二维码,分享此文章