https学习笔记以及在retrofit/okhttp中的使用(超多图,爪机慎入)

2,128 阅读2分钟

说明:
看博客的过程中做的思维导图,截图贴在这里.仅是个笔记和摘要,不能算真正的文章.

证书的分类

按适用的域名数量

按认证等级

按签发主题

这里涉及到证书链的概念.这也是我们后续编程处理需要理解的一个概念

证书链

证书的验证流程

证书链的一些例子

百度的

12306

let`s encrypted

可以看到,根证书的有效期是近20年.而let`s encrypted自己的证书有效期是3年.

不同类型的证书,浏览器不同的安全标识

导出证书

(以导出let`s encrypted网站的证书的根证书DST Root CA X3为例)

证书的选择

以上的都是讲证书,下面看看https通信原理

原理

基本原理

一次通信过程(改进后的tls)

第一次握手

第二次握手

后续真正数据的传输

安全性和算法改进

相关算法

在安卓客户端的使用(retrofit/okhttp中)

https的抓包

抓包工具的原理:

原理就是请求/响应的拦截和转发.
那么,要在拦截https,获取到里面的内容,就应该做到:
对于客户端,抓包工具就是服务器,https前两次握手要通过抓包工具提供的证书完成.通过伪装成服务器,拿到真正的解密后的请求内容.
对于服务器,抓包工具就是客户端,这里通信的前两次握手是利用服务器下发的证书完成的.这个过程相信抓包工具内部已经处理好了.

现在问题是,抓包工具提供的证书一般都是不在系统根证书列表中,所以我们需要做的是,将抓包工具提供的证书安装到我们的手机/模拟器/操作系统,这样https第一次握手就可以通过,然后所有请求就可以经抓包工具显示并转发了.

怎么拿到抓包工具的证书?

很简单,去访问抓包工具的服务器:
比如fiddler:


下载后放到手机里,在"设置-安全-安装凭据"里安装就行了.

当然,fiddler要用https抓包还有开启它的https抓包功能:

那个下拉框可以选择 抓所有进程/只抓浏览器/只抓远程端(手机).

参考/学习资料

图解SSL/TLS协议
SSL/TLS协议运行机制的概述
Retrofit中如何正确的使用https?
HTTPS理论基础及其在Android中的最佳实践