[英]Do Windows or browsers save the signature of X509 certificate?
Windows具有用于证书数据的类X509Certificate2
和X509Certificate
。 但是没有人提供原始签名,只有指纹。 它们提供了RawData
字段,但它只是证书本身,因为我对其进行了哈希处理,并且它与X509Certificate提供的哈希值匹配。
Windows具有将每个证书保存到不同格式的文件中的工具,但它们似乎都不包含签名。 Firefox拥有自己的实用程序来在证书上显示签名的地方显示证书,但它似乎是一个错误,因为签名与X509Certificate
返回的RawData
的最后字节匹配,并且此RawData
是没有签名的原始证书。
我尝试了HTTPS会话中的CA证书和服务器证书,但都不包含签名。 好像Windows验证了签名,将其转换为指纹,然后丢弃了签名。 为什么?
TL; DR:是的, 即使未显示签名也已保存。 创建签名链需要签名。 签名由大量的二进制数据组成,因此将其显示给用户并不是很有用。
你很困惑 证书的最后一部分是签名值,如X.509规范所示 。
所显示的证书在散列不被用于生成签名的散列。 它是构成证书的所有二进制数据( 包括签名 )的单独哈希,而证书中的哈希仅在证书的TBSCertificate
-To To Signed部分上。
此外,通常使用一种特定的哈希算法来计算所有证书上的指纹。 这样可以轻松比较指纹。 在证书本身中指定了用于签名的哈希算法-统称为signatureAlgorithm
。 尽管它可以与指纹使用相同的算法,但是它通常是一种更现代的哈希函数,不允许发生冲突。 指纹通常仍为SHA-1或MD-5,虽然安全性较差,但更容易被人窃取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.