# 1、HTTP 与 HTTPS 的区别

HTTP+信息加密+身份验证+完整性保护 = HTTPS

  • HTTP 是明文传输,HTTPS 通过 SSL\TLS 进行了加密。
  • HTTP 的端口号是 80,HTTPS 是 443。
  • HTTPS 需要到 CA 申请证书,一般免费证书很少,需要交费。
  • HTTP 的连接很简单,是无状态的;HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。

# 2、为什么要使用HTTPS?

  • 对数据进行了加密,建立一个信息安全通道,来保证数据传输的安全
  • 对网站服务器进行真实身份认证

# 3、加密算法

  • 对称加密: 通俗的讲,就是你知道加密,也知道解密,也就是加密和解密的秘钥是相同的。对称加密的速度是非对称加密的100倍左右。容易受到中间人攻击。(信息加密
  • 非对称加密: 服务端将公钥发送给客户端,客户端使用公钥加密信息,服务器接收到消息后使用私钥解密。公钥加密的内容,必须用私钥才能解密,私钥加密的内容,只有公钥才能解密。(主要作用是身份验证和秘钥协商

# 4、客户端和服务器端建立安全连接的握手过程

  • 1、client向server发起安全连接的https请求
  • 2、server返回数字证书,client验证数字证书(使用CA验证)正确,得到server公钥。
  • 3、client随机生成对称加密的密码,client用server的公钥对随机密码加密后传输给server。
  • 4、服务器通过私钥解密对称加密的密码,然后client和server就可以通过对称加密安全的传输数据了。

# 5、HTTPS中间人攻击

  中间人攻击过程如下:

  • 1、服务器向客户端发送公钥。
  • 2、攻击者截获公钥,保留在自己手上。
  • 3、然后攻击者自己生成一个伪造的公钥,发送给客户端。
  • 4、客户端收到伪造的公钥后,生成加密的hash值发送给服务器。
  • 5、攻击者获得加密的hash值后,用自己的私钥解密获得真秘钥。
  • 6、同时生成假的加密hash值,发送给服务器。
  • 7、服务器用私钥解密获得假秘钥。
  • 8、服务器用假的秘钥加密传输信息。

防范方法:服务器在发送给浏览器的公钥中加入CA证书,浏览器可以验证CA证书的有效性。

参考文档
1、HTTP和HTTPS详解 (opens new window)
2、谈谈 HTTPS (opens new window)

Last Updated: 1/29/2021, 9:39:36 PM