非对称加密和证书认证

服务端生成一对公私钥,私钥自己保留,公钥通过给客户端
客户端通过公钥加密数据后传送给服务端,服务端通过私钥解密收到的数据
只要私钥不泄露,数据都是安全的

但是如果中间有人截取了服务器和客户端的通信,拿到了服务器的公钥,将自己的公钥发送给客户端(客户端不知道公钥到底是谁的)
每次服务器给客户端发数据时,都被中间人截取,中间人用服务器的公钥解密,然后用自己的私钥加密再传给客户端
每次客户端给服务器发数据时,也被中间人截取,中间人用自己的私钥解密(因为客户端用中间人的公钥加密的),然后再用服务器的公钥加密再传给服务器
这样每次信息通信的数据都被中间人拿到了,所以不安全

客户端需要验证服务器的真实性才能保证传输安全,所以可以使用数字证书
服务器先去CA证书中心申请证书,其中包括服务器的公钥,CA用自己的私钥将服务器相关的信息加密
客户端收到服务器数据时,先用CA的公钥解密服务器信息,拿到服务器公钥,然后用服务器公钥解密服务器过来的数据,给服务器传数据也是用服务器的公钥加密了。
如果中间人截取数据,因为用的是自己的私钥加密的,所以浏览器可以分辨出数据不是从真实服务器传过来的。

参考链接:
数字签名是什么? - by 阮一峰
数字签名、数字证书、SSL、https是什么关系? - by 知乎

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容