如何在Java中将公钥转换为证书

如何在Java中将公钥转换为证书,java,security,keystore,public-key,Java,Security,Keystore,Public Key,我需要存储一个或多个公钥以用于身份验证。我想将它们作为TrustedCertificates存储在密钥库中——有没有办法做到这一点,最好使用标准的java.security类 我已经看到,我可以使用Bouncycastle生成证书,但大多数示例似乎显示了信任链的示例,而在我的示例中,我有单独的受信任密钥。此外,我看到的所有示例都涉及密钥对,但我只对提供的公钥集感兴趣。是否可以创建仅包含公钥的证书 简短回答:您不能创建没有私钥的证书 长答案:,例如:好的,问题是,您想要像X509证书一样的证书,还

我需要存储一个或多个公钥以用于身份验证。我想将它们作为TrustedCertificates存储在密钥库中——有没有办法做到这一点,最好使用标准的java.security类


我已经看到,我可以使用Bouncycastle生成证书,但大多数示例似乎显示了信任链的示例,而在我的示例中,我有单独的受信任密钥。此外,我看到的所有示例都涉及密钥对,但我只对提供的公钥集感兴趣。是否可以创建仅包含公钥的证书

简短回答:您不能创建没有私钥的证书


长答案:,例如:

好的,问题是,您想要像X509证书一样的
证书,还是想使用PKCS12文件将其用作客户端身份验证机制?如果您有PKCS12文件,则需要相应的私钥来使用私钥和X509证书创建PKCS12文件。我不确定您所说的“单个受信任密钥”是什么意思,信任链的整个要点是CA对X509证书进行签名,如果CA是受信任的,那么所有证书也是受信任的。为此,有一个CA通过签署PKCS10 CSR来提供X509Certificate。我个人在一两周前就不得不处理这个问题,但我没有足够的关于您的体系结构的数据来正确回答这个问题。从技术上讲,公钥对于SSL客户端证书身份验证来说没有任何价值,因为它也需要私钥。但如果这不是您需要它的目的,那么我们可能会有所进展。您可能对此感兴趣:我正在使用密钥验证签名JWT(验证加密签名以建立对声明的信任)。因此,我只需要一组公钥。