HTTPS基本原理

来源:互联网 发布:河北seo 编辑:程序博客网 时间:2024/05/17 23:45

HTTPS和TLS/SSL


HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),即HTTP+TLS/SSL。HTTPS其实就是在HTTP跟TCP中间加多了一层加密层TLS/SSL

SSL

SSL介于应用层和TCP层之间。应用层数据不再直接传递给传输层,而是传递给SSL层,SSL层对从应用层收到的数据进行加密,并增加自己的SSL头。

TLS

TLS 1.0建立在SSL 3.0协议规范之上,是SSL 3.0的后续版本。两者差别极小,可以理解为SSL 3.1,TLS 1.1为SSL 3.2,TLS 1.2为SSL 3.3。
TLS的主要目标是使SSL更安全,并使协议的规范更精确和完善。

TLS、SSL其实是类似的东西,SSL是个加密套件,负责对HTTP的数据进行加密。TLS是SSL的升级版。现在提到HTTPS,加密套件基本指的是TLS。

RSA性能是非常低的,原因在于寻找大素数、大数计算、数据分割需要耗费很多的CPU周期,所以一般的HTTPS连接只在第一次握手时使用非对称加密,通过握手交换对称加密密钥,在之后的通信走对称加密。


HTTP和HTTPS协议的区别


1、HTTPS的服务器需要到CA申请证书,以证明自己服务器的用途;HTTP协议不需要。

2、HTTP信息是明文传输,不安全;HTTPS信息是密文传输,集合了加密传输,身份认证,更加的安全。

3、HTTP与HTTPS的端口不同,HTTP是80端口,HTTPS是443端口。

HTTPS和HTTP协议相比提供了

数据完整性:内容传输经过完整性校验
数据隐私性:内容经过对称加密,每个连接生成一个唯一的加密密钥
身份认证:第三方无法伪造服务端(客户端)身份


HTTPS的握手过程


HTTPS在传输数据之前需要客户端与服务端之间进行一次握手,在握手过程中确立双方加密传输数据使用的加密算法。握手过程的具体描述如下:

1、客户端将自己支持的加密算法发送给服务端。

2、服务端返回客户端一组加密算法,HASH算法,数字证书。证书包含服务端地址,加密公钥,证书颁发机构等信息。

3、客户端收到服务端返回的数据:

a) 验证证书的合法性(证书颁发机构合法性,证书中服务端地址与正在访问的地址是否一致等),如果证书不受信任,会给出提示。

b) 如果验证通过,客户端会产生一个随机数,作为对称加密算法的密钥,并用证书中的公钥加密。

c) 使用服务端发来的HASH算法计算握手消息的摘要,并使用生成的随机数对消息摘要进行加密,将所有信息发送给服务端。

4、服务端收到客户端发来的数据:

a) 使用私钥解密数据得到随机数,使用随机数解密客户端发来的消息摘要,服务端计算消息摘要并验证是否与客户端发来的一致。

b) 使用随机数加密一段握手消息,发送给客户端。

5、客户端解密并计算握手消息的摘要,如果与服务端发来的一致,此时握手过程结束。之后的通信数据将利用对称加密算法加密。