TCP/IP协议二十二:HTTPS/SSL协议详解(2)HTTPS三次握手及其详解
TCP/IP协议二十一:HTTPS/SSL协议详解(1)加密原理
参考:
https://blog.csdn.net/lqy971966/article/details/125391235
1. HTTPS/SSL
1.1 HTTPS背景:
HTTP在传输数据时使用的是明文是不安全的,为了解决这一隐患网景公司(Netscape)推出了SSL安全套接字协议层。
SSL是基于HTTP之下TCP之上的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以HPPTS是HTTP+SSL/TCP的简称,Https默认使用端口443
2.1 SSL:
SSL通过互相认证、使用数字签名确保完整性、使用加密确保私密性,以实现客户端和服务器之间的安全通讯。
现在有1,2,3 ,总共3个版本,现在基本使用3.0。
2.1.1 SSL协议组成:SSL记录协议+ SSL握手协议
记录协议(SSL Record Protocol):
它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。
SSL握手协议(SSL Handshake Protocol):
它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。
2.2.2 SSL协议认证流程
1. 客户端向服务器发送一个开始信息“Hello”以便开始一个新的会话连接
2. 服务器根据客户的信息确定是否需要生成新的秘钥对,如需要则服务器在响应客户的“Hello”信息时将包含公钥
3. 客户根据收到的服务器响应信息,产生一个密钥对,并用服务器的公钥加密后将自己的公钥传给服务器;
4. 服务器用私钥解密客户端的公钥,并返回给客户一个用客户端公钥加密的信息,以此让客户认证服务器。
2.2 TLS
2.2.1 TLS说明
可以说TLS就是SSL的新版本3.1
(Transport Layer Security,安全传输层协议)。
TLS是IETF(Internet Engineering Task Force,Internet工程任务组)制定的一种新的协议。
TLS/SSL是一种加密通道的规范。它利用对称加密、公私钥不对称加密及其密钥交换算法,CA系统进行加密且可信任的信息传输。
IETF对SSL3.0进行了标准化,并添加了少数机制(但是几乎和SSL3.0无差异),标准化后的IETF更名为TLS1.0,可以说TLS就是SSL的新版本3.1。 总共有1.0,1.1,1.2三个版本,默认使用1.0
2.2.2 SSL和TLS的区别
在SSL更新到3.0时,IETF对SSL3.0进行了标准化,并添加了少数机制,标准化后的IETF更名为TLS1.0(Transport Layer Security 安全传输层协议),可以说TLS就是SSL的新版本3.1。也可以将TLS看作SSL的升级版
2.3 HTTPS握手过程详解
1. 首先是tcp的三次握手建立连接
2. client发送它支持的TLS版本、随机数client-random和它所支持的加密套件集合(clientHello)
3. server收到信息,返回所支持的TLS版本,选取其中一个加密套件和随机数service-random(serverHello),
随后把数字证书也发给服务端
4. client验证证书有效性,并用client-random+service-random生成随机数pre-master
并通过服务器公钥对其加密,称为预主密钥,发送给server
5. server收到加密后的预主密钥,用私钥解密,得到预主密钥,
根据约定的加密算法对client-random+service-random+预主密钥生成master-secret(会话密匙),然后发送预定成功
6. client也生成同样的master-secert(会话密钥),秘钥传输完毕
7. 接下来传输数据。
RSA 非对称加密原理
https://blog.csdn.net/jijianshuai/article/details/80582187
https://blog.csdn.net/luo_boke/article/details/114220450
2. 数字证书
2.1 数字证书的重要性
数字证书可以确认其内含的公钥确实是这个证书的所有者(Subject)的,或者证书可以用来确认对方的身份。
也就是说,我们拿到一个数字证书,我们可以判断出这个数字证书到底是谁的。
确保了证书的安全可靠才能确保,Https通信传递信息的安全可靠。
2.2 数字证书的特点:
1. 证书有效期: 有效期一般12个月起
2. 证书指纹:证书发布之前会对对证书进行Hash值计算,
然后继续用证书签名算法和私钥对hash值进行加密获得结果为指纹
3. 证书使用者:一般是指申请证书的网站域名
4. 签名算法:指的是这个证书的数字签名加密算法,如sha256RSA算法。
为了加密原始证书指纹,确保源信息指纹不会被篡改
5. 签名哈希算法:又称指纹算法,截图中采用的是sha256算法,
通过该算法可以对信息内容进行hash值V2得计算
2.3 证书发布
在证书的发布机构发布证书时,证书的指纹和指纹算法都会加密后再和证书放到一起发布,以防有人修改指纹后伪造相应的数字证书。这里的是用发证机构自己的私钥进行加密的
用户获得数字证书后,可以用证书发布机构的公钥(RSA算法)对指纹和指纹算法解密,也就是说证书发布机构除了给别人发布证书外,他自己本身也有自己的证书。
2.4 证书的发布及使用流程:
图:
2.5 证书申请及验证流程:
图:
参考:
https://blog.csdn.net/luo_boke/article/details/106018128
TLS/SSL 工作原理及握手过程详解
https://blog.csdn.net/qq_38289815/article/details/107591115