HTTPS
2018-06-06 11:50:07 0 举报
HTTPS通信以及握手原理分析
作者其他创作
大纲/内容
Server
使用session key做交互密钥
这一步是提前准备的,为了方便流程理解,放在这里来展示
1. request url(client hello)https://www.baidu.com
Client
HTTPS通信以及握手原理分析
3. server hello
传输的内容:使用pre-master对(服务端握手消息和握手消息的hash值)做加密的值
2. 如果是https请求,server端会预先向CA机构申请证书
a. client random num(用于稍后生成对话密钥)b. 支持的加密类型有哪些c. 支持的SSL版本
7. client验证server相关信息
6. server验证client相关信息
步骤:a. 生成随机数pre-master,使用server.pub加密b. 生成握手消息c. 握手消息hash计算d. 使用随机数pre-master对(握手消息和握手消息的hash值)做签名
4.验证server端的CA证书
Server端生成server.pubserver.pri
5. client生成随机数并加密传输
a. server random num(用于稍后生成对话密钥)b. 确认使用的加密类型c. 确认使用的SSL版本d. 申请好的服务器证书
传输的内容:a. pre-master用server.pub加密后的值b. 使用pre-master对(握手消息和握手消息的hash值)做加密的值
CA机构
CA机构也会有 ca.pub和ca.pria. 使用server端支持的hash算法对一部分server内容(server.pub、server域名)进行加密,生成消息摘要。b. 然后使用ca.pri对这段摘要进行加密。生成一个数字签名。c. 最后将签名、server.pub、证书颁发机构、证书过期时间、server网站域名等基本信息一起组成证书返还给server端。返还形式可能是邮件发送给你,也可能是自己下载。
根据浏览器中内置的CA公钥证书来验证服务器证书的有效性,浏览器调用系统的证书管理器接口对证书路径中所有的证书一级一级验证,只有路径中所有的证书都是可信的,验证结果才是可信的,验证通过后,会拿到server.pub。验证不通过,会提示安全访问,是否信任?验证步骤有如下:a. 验证颁发机构b. 过期时间c. 证书是否被吊销d. 公钥解密数字签名,得到消息摘要,浏览器用同样的hash算法对相同的证书内容做hash,比较最终的值是否和消息摘要一致。
步骤:a. 使用私钥server.pri对pre-master加密的值进行解密,得到pre-masterb. 使用pre-master解密握手信息和握手消息hash后的加密值,得到握手信息和握手信息的hash值c. 重新计算握手信息的hash值,将它和解密得到的hash值做比较,如果一致代表中途没有被篡改d. 使用pre-master重新加密一段握手信息(握手信息和握手信息的hash值),并将它发给client
a. server.pubb. server端的基本内容(域名信息,公司名称等)c. 支持的hash签名算法
CA机构数字证书
收藏
收藏
0 条评论
回复 删除
下一页