我使用SSL在用Java编写的两个组件之间进行通信.我不能使用CA,所以我必须自我签名.不幸的是,这意味着当我尝试握手时,我得到一个SunCertPathBuilderException.我可以创建我自己的X509TrustManager,它只信任所有东西,但这种方式违背了签署证书的目的.
我想,在第一次建立连接时,提示用户"使用无效证书进行SSL握手.将证书添加到商店?" 或类似的东西,所以他们可以将它添加到他们的证书商店,就像网页浏览器在无效证书的网站上做的那样.我可以在网上找到很多通过命令行向商店添加证书的例子,但我无法弄清楚如何以编程方式进行.有没有办法做到这一点?
对的,这是可能的.
有一些代码在这里,我曾经使用过.我不得不修改它来做我想做的事情,我怀疑你也会这样做但是这应该让你接近 - 你不是想要导入一个键,所以理论上你应该能够简化一些事情.无论如何,您可以了解您需要什么.
JDK中的JavaDoc java.security.KeyStore中是非常有用的.