Https相关文章推荐

最近遇到了Andorid客户端验证Https服务器证书的问题,所以在网上找了一些资料。

Https中的Http指的是Http协议,s指的是SSL/TLS协议。SSL/TLS协议位于Http协议和TCP协议之间,主要两点作用:
1.用于判断数据是否到达了正确的服务器或/和客户端,这主要是验证的功能。

2. 将HTTP协议的数据加密,即在TCP传输过程中时密文。

具体的细节信息请阅读参考文章。

Https验证分为单向验证和双向验证。单向验证,顾名思义,是一方验证另一方是否值得信任。如Android客户端验证服务器证书是否可信任,或者服务器验证发送请求的客户端是否值得信任。双向验证,就是双方互相验证。只有验证通过了,后续通信才能继续进行。

单向验证,以Android客户端验证服务器为例。服务器需要一份证书,作为公钥。客户端请求服务器后,服务器将证书发送给客户端。客户端从自己的信任列表中查找是否存在服务器发送的证书,如果存在,说明该服务器值得信任,继续传输数据,如果不存在,直接关闭连接。同理,服务器验证客户端的过程也是一样,只不过这次是客户端有证书,服务器没有。单向验证需要一对证书(公钥)和私钥,公钥和私钥是匹配的,即一份公钥只能匹配一份私钥,反之一样。

双向验证,需要有两对公钥和私钥。即服务器有证书1,客户端有证书2。客户端验证服务器的证书1,服务器验证客户端的证书2。只有两次验证都信任,通信才能继续,否则中断连接。

简单概述先写到这里。

#参考文章:

  1. Android Https相关完全解析 当OkHttp遇到Https,简单介绍Https原理,以及如何用Android验证自签名证书。
  2. HTTPS理论基础及其在Android中的最佳实践,介绍了Https的理论和原理,并介绍在Android中如何验证证书。
  3. Android 偶遇HTTPS,纯Andorid代码。
  4. Android HTTPS详解,简单理论配合Android代码。
  5. 公钥,私钥和数字签名这样最好理解,介绍公钥、私钥和签名这些概念。
  6. 谷歌官网, 如何在Andorid中验证服务器证书,以及一些常见的证书出错问题。