客户端使用X.509证书加密消息,并将加密消息发送到我的web服务器。客户端提供了一个没有私钥的X.509证书(导出为DER编码二进制X.509 (.cer))。现在,我的任务是使用我拥有的X.509证书解密消息。
每当我试图解密消息时,就会得到“私钥不存在”异常,因为证书不包含私钥。使用没有私钥的x.509证书解密消息可行吗?
其次,如果客户端分别为证书提供密码,我可以创建一个X509Certificate2实例并使用它解密消息如下:
X509Certificate2 c = new X509Certificate2("filename", "password");发布于 2015-09-21 18:23:41
您将需要私钥来解密消息。例如,您可以要求您的客户端提供一个包含私钥的.pfx文件,但是,这有点向后,通常情况下,对于非对称加密,发送方(客户端)应该使用接收方(您的)公钥加密消息,而您用接收方(您的)私钥解密该消息。这样,私钥就不会被分配给多方,从而减少了被泄露的可能性。私钥的整个概念是它是私有的,只有密钥的所有者才能使用它。
编辑:至于第二个问题,密码不是私钥。您可以生成由密码保护的私钥。这意味着,为了使用私钥进行解密,还必须知道保护该私钥的密码。
编辑2:我不确定这是否有帮助,但我很难理解如何在一段时间前实际应用这些概念,因此我编写了一系列可能对您有所帮助的博客帖子。我不自称是安全专家,但我写的东西可能会让你开始工作。
https://stackoverflow.com/questions/32701441
复制相似问题