TLS/SSL数字证书里的指纹算法、签名算法和签名哈希算法各是做啥用的

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TLS/SSL数字证书里的指纹算法、签名算法和签名哈希算法各是做啥用的相关的知识,希望对你有一定的参考价值。

签名哈希算法
当用公钥解密出数据后,通过签名哈希算法计算出传输内容的hash值,同时比对随内容一起传过来的hash值,确定传输内容是否被篡改
签名算法
传递信息的hash指纹是加密后随内容一起传递的,这为了防止不会好意的人同时修改信息内容和其中的hash值,达到相匹配,让签名哈希算法步骤失去真正作用。所以hash值发出前都需要加密,这是为了数据传输更安全上的一道保险锁。
签名算法就是为了解密被加密的传递信息的hash指纹
指纹算法
简单来讲就是验证收到的数字证书本身有没有问题。
通过指纹算法计算证书hash值(指纹),和证书中给出的指纹比对,确认证书正确。
参考技术A

签名算法:sha256RSA指的是用SHA256和RSA两种算法共同进行签名

签名哈希算法:指的是签名算法中的哈希算法是用sha256

指纹算法:是用来做用户认证的

其实没必要了解的那么清楚的,表情(哭唧唧)!

参考技术B 签名算法:sha256RSA指的是用SHA256和RSA两种算法共同进行签名
签名哈希算法:指的是签名算法中的哈希算法是用sha256
指纹算法:是用来做用户认证的

SSL证书

指纹:hash(指纹算法)过后的证书信息,用来保证证书信息完整性,防止黑客篡改。hash是单向的,只能通过内容生成hash值,不能反推
签名:通过非对称加密算法和其私钥(CA私钥)对指纹加密,形成签名。
浏览器验证证书:通过公钥(这个公钥并不是证书中的公钥,证书中的公钥是服务器提供的公钥,这里的是CA的公钥)解密签名,然后用同样的的指纹算法hash证书信息,最后验证是否和指纹相同。

重点:
step1: “客户”向服务端发送一个通信请求

“客户”->“服务器”:你好

step2: “服务器”向客户发送自己的数字证书。证书中有一个公钥用来加密信息,私钥由“服务器”持有

“服务器”->“客户”:你好,我是服务器,这里是我的数字证书

step3: “客户”收到“服务器”的证书后,它会去验证这个数字证书到底是不是“服务器”的,数字证书有没有什么问题,数字证书如果检查没有问题,就说明数字证书中的公钥确实是“服务器”的。检查数字证书后,“客户”会发送一个随机的字符串给“服务器”用私钥去加密,服务器把加密的结果返回给“客户”,“客户”用公钥解密这个返回结果,如果解密结果与之前生成的随机字符串一致,那说明对方确实是私钥的持有者,或者说对方确实是“服务器”。

“客户”->“服务器”:向我证明你就是服务器,这是一个随机字符串 //前面的例子中为了方便解释,用的是“你好”等内容,实际情况下一般是随机生成的一个字符串。

“服务器”->“客户”:{一个随机字符串}[私钥|RSA]

step4: 验证“服务器”的身份后,“客户”生成一个对称加密算法和密钥,用于后面的通信的加密和解密。这个对称加密算法和密钥,“客户”会用公钥加密后发送给“服务器”,别人截获了也没用,因为只有“服务器”手中有可以解密的私钥。这样,后面“服务器”和“客户”就都可以用对称加密算法来加密和解密通信内容了。

“服务器”->“客户”:{OK,已经收到你发来的对称加密算法和密钥!有什么可以帮到你的?}[密钥|对称加密算法]

“客户”->“服务器”:{我的帐号是aaa,密码是123,把我的余额的信息发给我看看}[密钥|对称加密算法]

“服务器”->“客户”:{你好,你的余额是100元}[密钥|对称加密算法]




转载来源:https://www.jianshu.com/p/e2f2c3043c87

以上是关于TLS/SSL数字证书里的指纹算法、签名算法和签名哈希算法各是做啥用的的主要内容,如果未能解决你的问题,请参考以下文章

EMQ X 服务器 SSL/TLS 安全连接配置指南

https 单向双向认证说明_数字证书, 数字签名, SSL(TLS) , SASL

如何让 python 信任我服务器的 TLS 自签名证书:ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败

SSL/TLS工作原理的朴素理解和演绎

SSL/TLS工作原理的朴素理解和演绎

TLS协议扫盲(握手,非对称加密,证书,电子签名等)