签名证书和加密证书有啥区别?
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 对两者都有好处,因此从技术上讲,您可以随心所欲。但正如其他答案所指出的那样,验证您的签名的代码可能会拒绝它,因为证书被用于错误的目的。
【讨论】:
以上是关于签名证书和加密证书有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章