我有从不同地方收到的证书和私钥。仅给定这两个抽象对象,我可以验证证书是否与给定的 PrivateKey 关联,或者是否是给定 PrivateKey 的证书?
我知道这些是否用于 RSA 密钥,我可以将它们转换为 RsaPublicKey / RsaPrivateKey 并验证指数和模数是否匹配,但如果它们是 ECDSA 怎么办?其他类型呢?
我最终想将密钥存储到以证书作为其证书链的密钥库中,如果我尝试使用另一个密钥的证书加载密钥,我希望这会引发异常或导致某种错误。但这似乎并不重要?
我有从不同地方收到的证书和私钥。仅给定这两个抽象对象,我可以验证证书是否与给定的 PrivateKey 关联,或者是否是给定 PrivateKey 的证书?
我知道这些是否用于 RSA 密钥,我可以将它们转换为 RsaPublicKey / RsaPrivateKey 并验证指数和模数是否匹配,但如果它们是 ECDSA 怎么办?其他类型呢?
我最终想将密钥存储到以证书作为其证书链的密钥库中,如果我尝试使用另一个密钥的证书加载密钥,我希望这会引发异常或导致某种错误。但这似乎并不重要?
首先,可以肯定的是,您可以使用您的私钥对随机数据块进行签名,并使用公钥对其进行验证。公钥是证书的一部分。它适用于所有签名算法。
私钥结构包含匹配的公钥也很常见。您应该检查它 - 搜索匹配的密钥会更容易。
你不应该有私钥。它是私人的。您只需要他们的公钥,然后通过 Certificate.verify(PublicKey key) 验证证书。
谁把私钥给了你,就已经严重损害了他们的安全。他们需要创建一个新的私钥、签名证书等,并部署它,并停止对先前密钥的所有使用。他们还需要将新的私钥保密。