https的安全通信

参考:https://www.cnblogs.com/zhuoqingsen/p/9456787.html

首先:用公钥可以解密用私钥加密的内容,用私钥可以解密用公钥加密的内容,因此只要双方都有对方的公钥,发送数据时用对方的公钥加密,对方就能用自己的私钥解密,从而达到安全的通信。

过程:
1.浏览器向服务器发送https://xxx
2.服务器返回签过名的数字证书(数字证书+数字签名)+机构公钥
3.浏览器用机构公钥验证数字证书和数字签名,验证后得到服务器的公钥
4.浏览器生成自己的公钥,用服务器的公钥加密,发给服务器
5.服务器用自己的私钥解密得到浏览器的公钥
6.自此,双方都得到了对方的公钥,就可以进行加密的通信了

签发证书的过程
1.撰写证书元数据:包括 签发人(CA)、地址、签发时间、有效期 等,还包括证书持有者(Owner)基本信息,比如 DN(DNS Name,即证书生效的域名)、 Owner 公钥 等信息
2.使用通用的 Hash 算法(如SHA-256)对证书元数据计算生成:数字摘要
3.使用 CA 的私钥对该数字摘要进行加密,生成一个加密的数字摘要,也就是CA的 数字签名
4.将数字签名附加到数字证书(其实就是元数据)上,变成一个 签过名的数字证书
5.将签过名的数字证书与 CA 的公钥,一同发给证书使用者(注意,将公钥主动发给使用者是一个形象的说法,只是为了表达使用者最终获取到了 CA 的公钥)

验证证书的过程
1.证书使用者获通过某种途径(如浏览器访问服务器)获取到该数字证书,解压后分别获得 证书元数据(数字证书)数字签名
2.使用同样的Hash算法计算证书元数据的 数字摘要
3.使用 CA 的公钥 对数字签名进行解密,得到解密后的数字摘要
4.对比 2 和 3 两个步骤得到的数字摘要值,如果相同,则说明这个数字证书确实是被 CA 验证过合法证书,证书中的信息(最主要的是Owner 的公钥)是可信的

总结:
数字证书-(Hash)->数字摘要-(CA私钥)->数字签名
数字证书+数字签名=签名后的数字证书
通过解密数字签名和数字证书是否相符从而验证对方(服务器)公钥的正确性

参考
https://www.jianshu.com/p/fcd0572c4765

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值