这看起来像一个标准问题,但我在任何地方都找不到明确的方向。
我有 java 代码试图连接到可能具有自签名(或过期)证书的服务器。代码报告以下错误:
[HttpMethodDirector] I/O exception (javax.net.ssl.SSLHandshakeException) caught
when processing request: sun.security.validator.ValidatorException: PKIX path
building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target
据我了解,我必须使用 keytool 并告诉 java 允许此连接是可以的。
解决此问题的所有说明都假定我完全精通 keytool,例如
为服务器生成私钥并将其导入密钥库
有没有人可以发详细的说明?
我正在运行 unix,所以最好使用 bash 脚本。
不确定它是否重要,但代码在 jboss 中执行。
原文由 Nikita Rybak 发布,翻译遵循 CC BY-SA 4.0 许可协议
您在这里基本上有两个选择:将自签名证书添加到您的 JVM 信任库或将您的客户端配置为
选项1
从浏览器导出证书并将其导入 JVM 信任库(以建立信任链):
选项 2
禁用证书验证:
请注意, 我根本不推荐选项#2 。禁用信任管理器会破坏 SSL 的某些部分,并使您容易受到中间人攻击。首选选项 #1,或者更好的是,让服务器使用由知名 CA 签名的“真实”证书。