HTTPS
超文本传输安全协议
端口:443
SSL/TLS
TLS(Transport Layer Security),译为:传输层安全性协议
前身是SSL(Secure Sockets Layer),译为:安全套接层
HTTPS = HTTP+SSL/TLS
FTPS = FTP + SSL/TLS
SMTPS =SMTP + SSL/TLS
OpenSSL 是SSL/TLS协议的来源实现
可以使用OpenSSL构建一套属于自己的CA,自己给自己颁发证书,称为“自签名证书”
HTTPS vs HTTP
优点:安全
缺点:
- 证书的费用
- 加解密计算性能消耗
- 降低访问速度
HTTPS 的通信过程
- TCP的3次握手
- TLS 的链接
- HTTP请求和响应
TLS 链接过程 1.2
HTTPS-TLS过程-
Client Hello
TLS 版本号,支持的加密组件列表,一个随机数
-
Server Hello
TLS的版本号,选择的加密组件,一个随机数
-
Certificate
- 服务器的公钥证书(被CA签名过的)
-
Server Key Exchange
- 用以实现ECDHE(秘钥交换算法)算法的一个参数(Server Params)。Server Params经过服务器私钥签名
-
Server Hello Done
告知客户端:协商部分结束
目前为止,客户端和服务器之间通过明文共享了 Client Random、Server Random、Server Params
而且,客户端也已经拿到了服务器的公钥证书,接下来,客户端会验证证书的真实有效性
-
Client Key Exchange
用以实现ECDHE算法的另一个参数(Client Params)
目前为止,客户端和服务器都拥有了ECDHE算法需要的2个参数:
Server Params、Client Params
客户端、服务器都可以 使用ECDHE算法根据Server Params、Client Params计算出一个新的随机密钥串:Pre-master secret
然后结合Client Random、Server Random、Pre-master secret生成一个主密钥
最后利用主密钥衍生出其他密钥:客户端发送用的会话密钥、服务器发送用的会话密钥等
-
Change Cipher Spec
告知服务器:之后的通信会采用计算出来的会话密钥进行加密
-
Finished
- 包含连接至今全部报文的整体校验值(摘要),加密之后发送给服务器
- 这次握手协商是否成功,要以服务器是否能够正确解密该报文作为判定标准
-
Change Cipher Spec
-
Finished
到此为止,客户端服务器都验证加密解密没问题,握手正式结束
后面开始传输加密的HTTP请求和响应
HTTPS抓包
Charles抓包
help --> SSL Proxying --> 选择模拟器,移动设备,本机电脑
选择要抓包的接口 enable SSL Proxying
Wireshark
设置环境变量SSLKEYLOGFILE(浏览器会将key信息导出到这个文件)
设置完成后,最好重启一下操作系统
在Wireshark中选择这个文件 编辑 → 首选项 → Protocols → TLS
配置服务器HTTPS - 配置Tomcat
将证书*.jks文件放到TOMCAT_HOME/conf目录下
修改TOMCAT_HOME/conf/server.xml中的Connector
HTTPS-Tomcat配置
网友评论