HTTPS = HTTP (应用层) + SSL/TLS(传输层)
https协议通信图那什么是SSL/TLS呢?
SSL = Secure Sockets Layer (现在技术上称为传输层安全协议(TLS))用于在客户端与服务器之间进行加密通信。
那SSL是如何工作的呢?
how ssl work步骤一:协商算法。
1.客户端生成随机数RNC(Random Client),发送SSL算法信息(密码套件)和RNC
2.服务端生成随机数RNS,并且发送服务端支持的SSL算法信息(服务单支持的密码套件)和RNS
协商算法步骤二:验证证书
客户端用已知的CA列表来认证证书
验证证书步骤三:密钥协商
目的:构建主密钥Master Secret
密钥协商步骤四:构建回话密钥
构建会话密钥步骤五:正式加密交互
正式加密交互再来说一说证书。
为什么需要证书?
服务器证明自己是靠谱的。
举个例子。假如我们要去买一颗价值不菲的钻石,那么我们肯定很关心我们想买的钻石的真伪,但是我们对甄别钻石的真伪不是很在行,那么我们怎么办?其实每颗钻石都有一个证书,这个证书就是为了证明钻石的真伪的。那么第一个问题来了,我们怎么知道这个钻石的证书不是伪造的呢?每个证书都是由机构颁发的。那第二个问题来了,我怎么知道这个机构是不是权威的机构呢?而且第二个问题整个问题的关键所在。因为如果机构有问题,那么下面的所有的东西都可能是假的。要想得到客户的信任,那么这个机构肯定是得到业界的认可。
在Https验证证书也是这样的,怎么验证证书是合法的,首先证书是由受信任的数字证书颁发机构CA[Certificate Authority] 颁发的,为什么要说是受信任的呢?并不是所有CA机构签发的SSL证书都受浏览器信任,不受浏览器信任的SSL证书会报错该证书不受信任。如果该CA机构被WebTrust机构认证,那么该CA机构是被信任的。
服务器证书包含什么内容?
1、web站点的名称和主机名
2、web站点的公开密钥
3、签名颁发机构的名称
4、来自签名颁发机构的签名
证书链和根证书
有时一个被信任的证书机构可能授权另一个证书机构颁发证书,也就是说会出现多个认证层级,这样就出现了证书链。
证书链证书的类型
1、X.509证书通常用于包含一个公钥
2、PKCS12证书通常用来包含一个私钥,PKCS12需要密码才能打开
WireShark解析SSL过程
wireShark解析ssl
Server Key Exchange
这个消息是用来发送密钥交换算法相关参数和数据的。这里要提前提一下,就是根据密钥交换算法的不同,传递的参数也是不同的。 常用的密钥交换算法:RSA、DH(Diffie-Hellman)、ECDH(Elliptic curve Diffie–Hellman)
Finished(Encrypted Handshake Message)
这个包表明握手已经完成,并且对之前发过的数据进行加密发送给对方做校验,防止被篡改。同时也验证一下,加密算法、密钥工作是否正常
参考
1、图解SSL/TLS协议http://www.ruanyifeng.com/blog/2014/09/illustration-ssl.html
2、SSL/TLS协议运行机制的概述http://www.ruanyifeng.com/blog/2014/02/ssl_tls.html
3、数字签名是什么?http://www.ruanyifeng.com/blog/2011/08/what_is_a_digital_signature.html
4、Https到底是啥玩意儿http://www.toutiao.com/a6263385790367678721/
5、http://www.aneasystone.com/archives/2016/04/java-and-https.html
网友评论