一个 web 请求从浏览器到 web 服务器的过程中,会经过许多的网络节点。每一个网络节点都有能力窃听和篡改 http 请求的内容,所以通过 http 进行的传输是不安全的。
运营商劫持
Http 协议之所以很容易被窃听和篡改,那是因为 http 协议是明文传输。
这个问题,我们可以联想到军事上电报的传输上,进而想到将传输内容加密后进行传输。这样即使我们传输的内容被别人窃听了,那么他得到的也只是一堆对他看不懂的乱码。
在 web 传输中,我们可以通过 TLS(SSL)进行加密传输,如今应用比较广的 https 协议就是基于 TLS(SSL)来进行加密传输的。
SSL/TLS 协议的基本思路是采用公钥加密法,也就是说,客户端先向服务器端索要公钥,然后用公钥加密信息,服务器收到密文后,用自己的私钥解密。
即使我们采用了加密传输也会存在一些问题。比如,中间人攻击。浏览器将发送内容加密,然后发送给服务器。但是在传输过程中,我们的请求被中间人截获,那么他就能将我们的内容进行解密,接着篡改我们发送的内容,加密后发送给服务器。通过了中间人这个角色,虽然我们的内容加密了,但是还是被篡改了。
要解决上面的中间人攻击,我们必须要解决的就是一个信任问题,我们需要确保,请求是来自于我们信任的服务器。现在一般采用证书机制,来解决该问题。
确保证书机制的安全要素:
证书无法伪造证书私钥不被泄露域名管理权不被泄露CA 机构保证规范