首页 > 解决方案 > 即使添加了所需的证书,也无法找到请求的目标异常的有效证书路径

问题描述

即使执行了以下步骤,我也无法建立到 https 链接的连接

  1. 通过 openssl 将 .crt 和 .key 文件转换为 .p12

  2. 通过 keytool 将 .p12 文件转换为 .jks 文件(虽然我可以在代码中直接提到 .p12 )

  3. 将生成的 .jks 文件添加到 jdk/jre/lib/security 中的 cacerts
  4. 我的客户代码在这里
KeyStore trustStore = KeyStore.getInstance("JKS");
trustStore.load(new FileInputStream("test.jks"), "changeit".toCharArray());
TrustManagerFactory tmf = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
tmf.init(trustStore);
TrustManager[] tms = tmf.getTrustManagers();
System.out.println(tms.length);
//this is gives me 1
SSLContext sslContext = null;
sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tms, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.getSocketFactory());
URL url;
url = new URL(" https://testurl.com");
HttpsURLConnection urlConn = (HttpsURLConnection) url.openConnection();
urlConn.setRequestMethod("POST");
urlConn.setRequestProperty("Content-Type", "application/json; utf-8");
urlConn.setRequestProperty("Accept", "application/json");
urlConn.setDoOutput(true);
urlConn.setDoInput(true);
urlConn.connect();
  1. 尝试在系统属性中添加信任库,但同样的错误。
  2. 尝试在 VM 参数中添加信任库/密钥库,仍然得到相同的错误。

我还应该尝试什么让它发挥作用?

标签: javawebservice-client

解决方案


推荐阅读