生成公钥

时间:2012-03-30 21:25:56

标签: encryption keystore keytool signatures

我为混合概念道歉,但我对非对称Web服务安全的了解很浅。

是的,我有一个包含我的私钥和客户公钥的java密钥库。

在调用客户Web服务时,我收到一条错误消息,说:

  

"签名或解密无效"。

我们发现密钥存储区中的公钥以及根据请求发送的公钥与客户在其服务器上的公钥不同。不知怎的,我给了客户一个不同于我在密钥库中的公钥。

我想要做的是根据密钥存储区中的私钥重新生成公钥,然后再将其发送给客户。是否可以这样做?

说实话,这正是我通过keytool语句所做的。结果,扩展名为.cer的文件。带有.cer的文件是公钥,还是什么?

感谢任何建议。

解决了它:

上面我说我试图从密钥库重新生成公钥,但我不确定这是正确的方法。

无论如何,我向Customer先生提供了这个新生成的公钥,并要求他们将其安装在他们的服务器上。它有效,我们匹配公钥。我使用以下keytool命令重新生成公钥:

  

keytool -export -alias [密钥库中私钥的名称] -file [path   输出] -keystore [.jks密钥库的路径]

1 个答案:

答案 0 :(得分:0)

通常,您在密钥库中拥有私钥和证书(链)。如果您只是使用与私钥相同的别名从链中检索第一个证书,那么您应该拥有正确的证书。

通过使用私钥签署一些任意数据来检查这一点并没有什么坏处,并且当然要使用来自证书的公钥进行验证。 Signature.initVerify()甚至应该直接拿到证书。否则,您也可以比较公钥和私钥的(hash over the)模数。