HTTPS概念:
有人会说既然有了非对称加密算法,那么直接利用它就可以实现浏览器与Web服务器间通信消息的加解密了。但你要明白一切保障信息安全的手段都是在牺牲性能和易用性的代价下展开的,确实可以在消息传递中直接利用非对称加密算法来实现消息的加解密,但在浏览器与Web服务器之间HTTP协议如此频繁和体积巨大的消息通信场景下,非对称加密算法的性能问题就凸显出来,如果直接采用,将极大影响协议的整体性能。于是,人们就采用变通的方法,同时利用非对称加密算法和对称加密算法实现针对HTTP消息传递的加解密,其中非对称加密算法只参与到对对称加密算法密钥(对话密钥)的加密过程中,而大块消息的加解密则由浏览器和Web服务器间协商好的对称加密算法来完成。
另外,任何Web服务器都有可能向浏览器提供建立HTTPS连接所需要的公钥,这里就排除不了一些假冒的服务器提供一些自己伪造的公钥,为了确保Web服务器是值得我浏览器信任的,于是引入了数字证书的概念。为了证明自己是值得信赖的,Web服务器需要向第三方CA机构申请一个数字证书,证书中包含了证书基本信息和服务器的公钥信息,证书的最后面是一个由CA机构的私钥对证书上述信息计算摘要后加密的消息签名信息。浏览器内置了一些权威的根证书,这些根证书中带有对应其发证CA机构的公钥,一旦得到Web服务器的数字证书,浏览器会在第一时间来根据证书信息查找是否存在对应的根证书,如果存在,利用根证书中的公钥解密Web服务器数字证书中的消息签名信息,并与自己计算的证书摘要信息进行比对,从而验证其真实性和完整性,只要通过验证,浏览器会自动信任由这些权威机构颁发的证书。当然在某些特定场景下Web服务器也需要浏览器提供数字证书以证明其可信度。
HTTPS = HTTP + SSL
工作流程:
HTTPS采用SSL/TLS协议实现在通信安全上的保障,主要分为握手阶段和对话阶段。
其中握手阶段的大致的工作流程如下:
(1)首先,浏览器会向服务器发起HTTPS