http是超文本传输协议,以明文的方式传输信息,所以容易被攻击者获取到敏感信息。https在http的基础上加入了ssl,包装了传输通道的安全性和网站的真实性。(https://blog.csdn.net/xiaoming100001/article/details/81109617,https://www.cnblogs.com/zhenguoli/p/8622933.html)
https的实现原理
在了解原理之前,我们需要知道几种加密方式,对称加密和非对称加密。
对称加密,原文通过密钥得到密文,密文通过密钥也能获取原文。
非对称加密,分开为公钥和私钥,私钥加密后,公钥能解密,公钥加密只能通过私钥解密。
步骤一
https传输通道的安全性,我们可以理解为,只有客户端和服务器能知道传输的内容,第三方(攻击者)知道了也无法获取真实信息。所以如果我们能让客户端和服务器通过特定的对称加密方式对内容进行加密,就能保证通道的安全性。
步骤二
那么客户端和服务器是如何确定密钥的呢,肯定所有的客户端不能用一个密钥,而且客户端和服务器也不可能保存起来。既然不可以保存,就只能在建立连接的时候确定密钥,那么如何保证确定密钥过程是安全的呢?这个时候,我们可以使用非对称加密的方式,客户端将密钥通过公钥加密发送给服务器,服务器用私钥解密拿到密钥。但是在这个过程,有可能被中间人(攻击者)偷梁换柱,中间人伪造假的公钥发给客户端,这样中间人就很容易拿到客户的对称加密的密钥。
步骤三
使用第三方机构私钥加密(服务器的公钥)后证书,发给客户端,客户端会保存第三方机构的公钥,这样就能拿到正确的公钥。然而事实上,第三方不可能只对一家公司制作证书,所以还是会有被中间人掉包的可能,因为中间人会拿自己家的数字证书传给客户端。
步骤四
客户端需要能辨别数字证书的真伪,通过校验证书编号的方式可以确定真伪,客户端拿到证书之后,根据证书上生成编号的方法,将自己生成的证书编号于传来的证书编号进行对比,就可以校验有效性。