欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

SSL根证书里的公钥为什么是密文?

SSL根证书里的公钥为什么是密文?

根证书里存放的是CA的公钥,用于验证证书的真伪,问题来了,我看了下根证书的公钥也是用了RSA加密的,如果是用CA私钥加密的,那怎么解密呢(解密用的公钥被加密了)?

被浏览
7,649

5 个回答

数字证书到底是干嘛的?

在回答这个问题之前,先来回顾一下在现实生活中如何证明你就是你?

身份证可以证明你自己吗?在一定程度上可以,如果这个世界上有人和你长得非常相似(肉眼辨别不出),盗窃你合法身份证,完全可以蒙混过关,那么你就被假冒了,所以单纯依靠肉眼的识别是有风险的。

唯一性
但是人类的指纹、瞳孔、DNA却是唯一的,换句话说,这个世界没有两个人这些生物信息是完全匹配的,基于这个事实,如果在身份证的芯片里写入持有人的指纹信息,且无法更改(写保护),那么当持有人出示身份证时,同时验证指纹信息,当存储的指纹与采样的指纹完全匹配时,认证通过,你就是你!

RSA算法(公钥算法)
基于RSA算法的数字证书,权威的CA公司,利用RSA算法,生成一对(私钥,公钥),好比公老虎、母老虎的关系,具有唯一的对应关系:

私钥加密的数据,公钥可以解密;
公钥加密的数据,私钥可以解密;

私钥只有CA公司知道,其他任何人、任何机构都不会知道,如果你拥有该CA公司的合法公钥,并且你能够解密对方的数据,很显然对方是使用CA私钥加密的,既然只有CA公司唯一知道私钥,那么对方就是CA公司无疑,只有真正读懂了这段话,才能继续看。

数字证书
CA公司的公钥以何种格式分发给每台电脑呢?
用自签名的方式,生成数字证书,一般格式:

谁是签发者:自己喽
公钥:1024/2048位公钥(明文)
有效期:xx
哈希算法:将公钥生成哈希
加密算法:将哈希用私钥加密,生成指纹
指纹:见上

又是如何安全可靠的分发出去的?
Windows操作系统预装

当你拿到一台崭新的电脑时,其实已经拥有了各大权威CA公司的自签名数字证书,也称为根证书,我一般称为公钥,因为只有公钥是真正干活的!

当你访问某台HTTPS服务器时,TLS连接过程中,对方出示了某CA公司的数字证书链,先从根证书开始层层校验,由于你已经拥有CA的公钥,可以解密对方指纹,你可以认证对方是真正的CA,既然CA合法,CA签发的第三方也是合法的,进而完成认证,完成TLS协商。

所以题主所说的加密,只是指纹,而不是公钥。
予人玫瑰,手有余香
还没有人赞赏,快来当第一个赞赏的人吧!

怎么可能公钥是密文,头一回听说

另外,公私钥在证书应用中,是做签名的,保护完整性而不是保护机密性。虽然rsa算法中是用了私钥加密的方法做签名、做完整性保护。

很多做签名算法都不是直接用私钥加密的

公钥是明文的。你所谓的密文很可能是指的“签名”。


签名的过程是CA对服务器的公钥进行确认后使用自己私钥计算出一段校验的值(签名),客户端拿到这个签名后,可以用它的公钥进行验证,确认是不是合法的。


另外,一般HTTPS握手过程中也不会出示CA的公钥,因为CA一般内置在操作系统(浏览器)中了,大部分情况下只会出示服务器的公钥(签名后的证书)、中级证书。中级证书的签发者一般是CA,就能直接从系统(浏览器)中读取到了。


详情可见 HTTPS自建CA及自签名证书不完全指南(理论篇)

你要解密这个密文, 就必须要更上一级的证书的公钥去解密, 直至根证书, 这样保证了信任的关系链。

因为你看错了,证书就是用来告诉别人自己的公钥的,不可能加密。要不然你把那个证书发出来让大家鉴赏一下。


来自  https://www.zhihu.com/question/61761633

普通分类: