HTTPS 双向认证那些事

一  名词释义


1.1  什么是HTTPS


HTTPS  =  HTTP + TLS(SSL)

1.1.1  HTTP

HyperText Transfer Protocol  超文本传输协议

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


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)





1.2  什么是 X.509


一种数字证书格式。

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




1.3  证书链


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

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

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






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

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



这是  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




1.5 TrustAnchor


直译过来就是信任锚点

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

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





1.6  OCSP


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

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

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

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



你可能感兴趣的:(HTTPS 双向认证那些事)