签名证书和加密证书有啥区别?

Posted

技术标签:

【中文标题】签名证书和加密证书有啥区别?【英文标题】:What is the difference between signing Certificate and Encryption Certificate?签名证书和加密证书有什么区别? 【发布时间】:2010-11-28 09:33:29 【问题描述】:

签名证书和加密证书有什么区别?

我看到签名证书不能用于加密仅数据加密证书。技术上的区别是什么?两者都有公钥和私钥还是只有加密证书才有 PP 密钥?

【问题讨论】:

属于服务器故障。 【参考方案1】:

即使这是一个旧线程,我也一直在为那些证书、加密/解密概念而苦苦挣扎,把我的两分钱放在这上面,短的:

签名证书和加密证书使用不同的证书方案,主要区别(对我来说)是:签名证书将私钥设置为加密密钥,将公钥设置为解密密钥,其中加密证书完全相反。

长篇:

两个证书都使用非对称加密算法,有两个密钥,一个用于加密消息,另一个用于解密消息,我认为加密/解密密钥不能双向使用,这意味着给定一对两个密钥,并且只有一个可以用作加密密钥,另一个用作解密密钥。 签名过程:先用hash算法计算一个消息hash,然后用Signer的证书私钥加密这个hash,把消息+加密hash+Signer的证书(包括公钥)一起,然后发送出去,之后加密的哈希可以使用签名者的证书公钥解密。 加密过程:通常发送方使用接收方证书的公钥加密消息,接收方收到消息后,使用自己的证书私钥解密消息。 签名过程通常不针对特定端点,它可以自我证明,并且可以发送到任何地方,加密过程通常有两个端点,它们使用彼此的公钥加密数据以进行通信......李>

【讨论】:

【参考方案2】:

唯一的区别是证书中目的字段的值。证书的颁发者选择创建证书的目的。

【讨论】:

感谢您的回答。但是值或属性如何限制证书的功能?加密证书不会用于签名和签名用于加密?当我们在两个证书中都有公钥和私钥时,它将如何受到限制? 证书说明了它的用途。执行签名和验证的应用程序检查目的字段。如果您编写了自己的工具链,则可以忽略该字段 --- 但会给其他人带来错误。底层签名算法中没有任何内容会因目的而改变(将字节流转换为另一个字节数组)。【参考方案3】:

证书仅包含公共证书。没有什么能阻止你使用私有 key 来做任何你想做的事情。

如前所述,证书是由对方处理的——在你对某物进行签名或加密之后,对方需要做出决定是否满意。然后,它会检查证书及其标志,以确保它可以在为对方设置的策略下用于操作。

【讨论】:

【参考方案4】:

除了证书中的“密钥使用”字段外,一些密钥对使用的算法只能进行签名或加密(密钥交换)。例如,DH 和 DSA。 RSA 对两者都有好处,因此从技术上讲,您可以随心所欲。但正如其他答案所指出的那样,验证您的签名的代码可能会拒绝它,因为证书被用于错误的目的。

【讨论】:

以上是关于签名证书和加密证书有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

自己做的ssl证书和ca证书有啥区别

成为您自己的证书颁发机构并为您的电子邮件加密进行自签名有啥问题?

用openssl生成的ssl证书和付费的有啥区别

SSL证书代码签名证书文档签名证书及邮件签名证书有什么区别

代码签名证书与SSL证书区别

什么是自签名SSL证书?