聊一聊https吧
明文的 http 很危险!
http 明文传输会带来数据被监听的风险,所以
对称加密
对数据的加密传输脱颖而出。
加个密吧!
对称加密在双方都拿到正确的密钥时确实能防止窃听风险,那怎样才能防止密钥在传输过程中被中间人窃取呢?
非对称加密!
那非对称加密算法就很合适了,公钥可以随意给,但是只有私钥才能进行解密。
客户端在请求服务端后,服务端返回公钥给客户端,客户端将自己选择好的对称加密算法的密钥用服务端的公钥进行加密再传给服务端,这样就实现了保证对称加密密钥的正确传输。
注意:由于非对称加密比较耗时,在正确交换了对称加密密钥后,客户端和服务端一直会用对称加密的密钥进行加密通信。
你以为这样就安全了?
如果中间人把服务端的公钥换成自己的公钥,客户端傻傻的就把自己想用的对称加密的密钥给了中间人,中间人再用原来的正确公钥包装给服务端。这样客户端一直在和中间人通信,信息安全还是得不到保证。
第三方证明人。
CA 机构 就是这样的权威并且值得信任的第三方
- 服务端会用自己的 CSR 文件和公钥到 CA 机构申请数字证书,CA 用一种加密方法来对网站信息进行加密(比如 md5)生成
加密的网站信息
- 然后用自己的私钥把
加密的网站信息
再次进行加密生成数字签名
- 最后把这份有着
加密网站信息
和数字签名
的证书给到服务端。这是世界上具有唯一性的证书。 - 客户端会预置一些知名 CA 机构的公钥信息,所以拿到服务端的证书之后,客户端就会解密证书上的
加密网站信息
得到网站信息
,和用 CA 机构公钥解密数字签名
得到的网站信息,经过对比确认是否是可信任的服务端。 - 如果是可信任的服务端,客户端就取出证书中的公钥,对自己想用的对称密钥进行加密,然后传输给服务端。
- 最后就可以一直使用对称密钥进行加密传输数据啦!