【问题标题】:Generation of public key生成公钥
【发布时间】:2012-04-14 14:09:50
【问题描述】:

我很抱歉混淆了概念,但我对非对称 Web 服务安全性的了解很浅。

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

当我调用客户网络服务时,我收到一条错误消息,说:

“签名或解密无效”。

我们发现我在密钥库中的公钥是根据请求发送的,与客户在其服务器上的公钥不同。不知何故,我给了客户一个不同于我在密钥库中的公钥。

我想做的是根据我在密钥库中的私钥重新生成公钥,然后再次将其发送给 Mr Customer。有可能吗?

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

感谢任何建议。

解决了:

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

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

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

【问题讨论】:

  • 请发布 keytool 声明,以便我们检查它是否正确。
  • @owlstead 遗憾的是,我不记得 keytool 语句。当我星期一回到办公室时,我会提供它。

标签: encryption keystore keytool signatures


【解决方案1】:

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

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

【讨论】:

  • 证书链,那是什么?证书和密钥是一回事吗?
  • 证书链是所有可以相互验证的证书,一直到根证书,根证书通常是自签名和受信任的。根证书通过其他方式信任,例如通过在您喜欢的浏览器中分发。证书包含公钥/私钥对的公钥。 Java KeyStores 主要用于保存两种条目:keystore 用户的私钥及其(部分)证书链,以及显式受信任的证书条目。阅读 PKI,你的知识太少了!
猜你喜欢
  • 2022-01-13
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多