【转】http和https

臭大佬 2020-09-07 10:19:52 2252
简介 http和https

HTTP协议

超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加 密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此,HTTP协议不适合传输一些敏感信 息,比如:信用卡号、密码等支付信息。

HTTPS协议

为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基 础上加入了SSL/TLS协议,SSL/TLS依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

HTTPS和HTTP的主要区别

https协议需要到CA申请证书,一般免费证书较少,因而需要一定费用。

http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议。

http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

http的连接很简单,是无状态的;HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

客户端在使用HTTPS方式与Web服务器通信时的步骤

服务端会生成一对公私钥(PUB_KEY+PRI_KEY)。

特征: 私钥可以解密公钥加密的内容, 公钥可以解密私钥加密的内容

公钥(PUB_KEY)公开,客户端和中间人(攻击者)都可以得到,整个通信过程如下:

客户端向服务端发送SSL握手,服务端返回一个SSL证书,证书中包含公钥(PBU_KEY)

  1. 客户端验证SSL证书是否有效,有效则生成秘钥(AES_KEY),同时,使用证书中的公钥(PUB_KEY)非对称加密,得到AES_KEY_SECRET。
  2. 服务端利用私钥(PRI_KEY),对AES_KEY_SECRET解密,得到秘钥(AES_KEY)。

  3. 然后就可以通过秘钥(AES_KEY)对信息进行对称加密传输了。

总结:用非对称加密解密AES_KEY_SECRET,获得AES_KEY,用对称加密传递信息。

客户端是如何校验服务器 SSL 证书的安全性?

客户端需要对服务器返回的 SSL 证书进行校验,所有的证书都是由权威机构来颁发,而权威机构的证书都是已经在操作系统中内置的,

可以在浏览器中internet选项中查看,比如我的臭大佬网站证书:

客户端通过证书里的公钥来对服务器的证书指纹进行解密得到签名(sign1),再通过签名算法算出服务器证书的签名(sign2),通过对比sign1和sign2,如果相等就说明证书是没有被篡改也不是伪造的。

这里有趣的是,证书校验用的 RSA 是通过私钥加密证书签名,公钥解密来巧妙的验证证书有效性。