HTTPS 双向认证那些事

时间:2021-6-7 作者:qvyue

一  名词释义

1.1  什么是HTTPS


HTTPS  =  HTTP + TLS(SSL)

1.1.1  HTTP

HyperText Transfer Protocol  超文本传输协议

现代互联网的基础,不多赘述

HTTPS 双向认证那些事

1.1.2  SSL

Secure Socket Layer  安全套接层协议 –> 注意断句。

比较老了,将会被TLS协议替代

1.1.3  TLS

Transport Layer Security 安全传输层协议, TLSv1 = SSL3.1, 替代SSL的后浪,也是我们要了解的重点。

TLS标准文档:[rfc2246](https://www.ietf.org/rfc/rfc2246.txt)

HTTPS 双向认证那些事

HTTPS 双向认证那些事

1.2  什么是 X.509


一种数字证书格式。

目前主流的版本是 X.509 v3,  标准文档地址在  [RFC5280](https://www.ietf.org/rfc/rfc5280.txt)

HTTPS 双向认证那些事

HTTPS 双向认证那些事

1.3  证书链


众所知周,一般CA不会直接签发证书,而是通过中间证书,再去签发。

因此,对于客户端来说,当他访问 www.xxx.com的时候,得到的可能并不是  一个x.509格式的证书,而是一串x.509证书。  这就是证书链。 

知乎为例。他的证书链这样的,三层:

HTTPS 双向认证那些事

HTTPS 双向认证那些事

HTTPS 双向认证那些事

HTTPS 双向认证那些事

HTTPS 双向认证那些事

也就是说 对于客户端来说,对于一个站点的校验,大部分情况下是对一整个数字链的校验。

android与java 自带的X509校验源码是不开源的。我这里查看是bouncycastle库,对于X509证书链的校验实现。

HTTPS 双向认证那些事

HTTPS 双向认证那些事

这是  bouncycastle 的官方网站。 www.bouncycastle.org/donate/index.cgi

这里的逻辑十分复杂。具体不展开了。

1.4   PKIX


Public-Key Infrastructure (X.509)    

X.509 标准中对于公钥的基础规范

X.509是一个完整的证书协议,但是对于HTTPS校验信任,实际上主要校验的是公钥。也就是PKIX这部分内容。

wikipedia : https://en.wikipedia.org/wiki/X.509#PKI_standards_for_X.509

HTTPS 双向认证那些事

HTTPS 双向认证那些事

HTTPS 双向认证那些事

1.5 TrustAnchor


直译过来就是信任锚点

这并不是一个协议中规定的东西,而是java代码中抽象出来的一个概念,一个类。

但是他在认证过程中起到了比较重要的作用,需要单独解释。

HTTPS 双向认证那些事

HTTPS 双向认证那些事

HTTPS 双向认证那些事

1.6  OCSP


Online Certificate Status Protocol   数字证书在线状态校验协议

比如CA给 www.a.com 颁发了一个有效期是一年的证书,这个时间是写入证书文件的。 如果这一年内,该网站的证书被吊销,怎么办的。

TLS还提供了 在线数据校验的方法实时校验证书有效性,类似的机制还有 Certificate revocation list  CRL    黑名单机制。

看看 BC中,是如何进行ocsp验证的。

HTTPS 双向认证那些事

HTTPS 双向认证那些事
声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:qvyue@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。