尝试使用自签名或过期 SSL 证书连接到服务器时,Java 客户端可能会遇到指示无效证书路径的错误。此错误可以通过建立信任链或禁用证书验证来解决。
使用 Linux Bash:
将服务器的证书导出到文件:
openssl s_client -connect server:port -showcerts > server.cer
将证书导入 JVM 信任库:
keytool -import -v -trustcacerts -alias server-alias -file server.cer -keystore cacerts.jks -keypass changeit -storepass changeit
使用 Java代码:
创建一个信任管理器,通过覆盖验证方法来允许所有证书:
TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { ... (overridden methods here) } };
安装信任管理器并将其设置为 SSL 的默认值连接:
SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
强烈建议使用选项 1,因为它建立信任链而不是禁用证书验证。这确保了服务器的身份可以得到验证并减轻中间人攻击。
以上是如何在我的 Java 客户端中接受自签名 SSL 证书?的详细内容。更多信息请关注PHP中文网其他相关文章!