1. HTTP协议可以和SSL(Secure Socket Layer,安全套接层)或者TLS(Transport Layer Security,安全层传输协议)组合使用来做到通信加密。
1.1 一种是将通信线路加密
HTTPS(超文本传输安全协议)或HTTP over SSL:与SSL组合使用的HTTP.
SSL处于应用层和TCP/IP之间。
当使用SSL 时,则演变成先和SSL通信,再由SSL和TCP通信了
1.2 一种是将参与通信的内容本身加密的方式
需要考虑报文的完整性,防篡改。
1.3 CA认证-> 不验证通信方的身份就可能遭遇伪装
SSL不仅提供加密处理, 还支持CA证书,CA证书由值得信任的第三方CA机构颁发,用来证明服务器的身份真实性。
CA认证流程:
step1. 由于服务端要下发公钥给客户端,公钥可能在下发过程中被篡改,因此需要验证服务端下发公钥的可靠性。
step2. 服务端会向CA机构申请公钥,CA会用自己的私钥对将要下发给服务端的公钥进行签名,并嵌入证书发给服务端,服务端将这个CA签发的公钥证书发给客户端即可。
客户端浏览器内置了CA机构的公钥,会对服务端下发的公钥证书的签名进行校验,校验通过说明公钥证书确实是CA机构颁发的,值得信任(中间篡改者没有CA的私钥因此无法篡改公钥的签名信息)。
step3. 客户端就可以用服务端发的这个公钥对自己生成的对称秘钥进行加密,发给服务端,之后的请求就用该对称秘钥加密内容即可。
有些机构自己颁发证书,这些证书不内置在浏览器里,因此称为自签名证书,服务端下发此类证书时,我们要么直接信任该证书,要么在客户端事先植入自签名公钥等。
转载:https://blog.csdn.net/thefist11cc/article/details/116463562