HTTPS (全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与TCP之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
普通HTTP协议流程如下:
没有任何加密手段,网站发送的消息hello
经过中间路由被篡改为world
如果使用对称加密流程如下:
此时有个问题,浏览器和服务器之间在第一次通信的时候,怎么共享密钥A,必定需要明文传递,容易被中间路由捕获
如果引入非对称加密,私钥保存在服务器、公钥发送给浏览器,浏览器再使用公钥对对称加密密钥A进行加密后发送给服务器,服务器使用私钥进行解密,即可获取本次会话的密钥A,流程如下:
但是这样的话,如果浏览器获取服务器首次发送的公钥被掉包,那么就会引起问题
此时就引出了,CA机构,CA机构专门用于给各个网站签发数字证书,保证浏览器可以安全地获得各个网站的公钥。
从CA机构获取数据就安全了吗,不会被掉包吗?
其实,世界上的网站是无限多的,而CA机构总共就那么几家。任何正版操作系统都会将所有主流CA机构的公钥内置到操作系统当中,所以我们不用额外获取,解密时只需遍历系统中所有内置的CA机构的公钥,只要有任何一个公钥能够正常解密出数据,就说明它是合法的。