HTTPS

https:超文本传输安全协议。在HTTP下加入了SSL层,从而具有了保护数据隐私完整性和提供对网站服务器身份认证的功能。简单来说,他就是安全版的HTTP。

HTTPS_第1张图片

 

SSL

Security Sockets Layer,安全套接层

为网络通信提供安全及数据完整性的一种安全协议

位于TCP与各应用层之间,是操作系统对外的API,SSL3.0后更名为TLS。

SSL采用身份验证和数据加密保证网络通信的安全和数据的完整性。

 

加密的方式

数据在http协议中传输时均采用明文方式传输,这样就会造成不安全性,所以需要对数据进行加密。

  1. 对称加密:加密和解密都使用同一个密钥
  2. 非对称加密:加密使用的密钥(公钥)和解密使用的密钥(私钥)是不相同的。这种加密方式性能比较低
  3. 哈希算法:将任意长度的信息转换为固定长度的值,算法不可逆。常见的就是MD5算法
  4. 数字签名:证明某个消息或者文件是某人发出/认同的

在信息的后面加上一段内容,这段内容是经过哈希后的值,证明信息没有被修改过,哈希值一般会经过加密后进行传输,以保证这个哈希值不被修改。

 

HTTPS使用的是证书配合各种加密手段的方式。

HTTPS数据传输流程

HTTPS在进行数据传输前会与网站服务器和Web浏览器进行一次握手,在握手时确定对方的加密密码信息。具体过程如下:

  1. 浏览器将支持的加密算法信息发送给服务器
  2. 服务器选择一套浏览器支持的加密算法,将验证身份的信息以证书的形式回发浏览器。
  3. 浏览器验证证书合法性,证书受到浏览器信任后,web浏览器会随机生成一串密码并使用证书中的公钥加密,使用约定好的哈希算法加密握手消息,并生成随机数对消息进行加密,将信息回发给服务器。
  4. 服务器使用私钥解密信息确定密码,通过密码解密浏览器发送过来的握手信息,并验证哈希是否与web浏览器一致,服务器使用密码加密新的握手信息,回发给浏览器。
  5. 浏览器解密并计算经过哈希算法计算过的握手消息,如果与服务器发送过来的哈希值一致,则服务器和浏览器会使用浏览器之间生成的随机密码和对称加密算法进行加密交互数据。

 

HTTP和HTTPS的区别

  1. HTTPS需要到CA申请证书,HTTP不需要
  2. HTTPS密文传输,HTTP明文传输
  3. 连接方式不同,HTTPS默认使用443端口,HTTP使用80端口
  4. HTTPS=HTTP+加密+认证+完整性保护,较HTTP安全

 

HTTPS真的安全吗?

  1. 浏览器默认填充http://,请求需要进行跳转,有被劫持的风险
  2. 可以使用HSTS(HTTP Strict Transport Security)优化

你可能感兴趣的:(计算机网络)