0

我正在尝试从使用 SSL 身份验证的 Java 客户端调用后端 API。对于 .Net,在 MS 文档中有一个关于如何实现这一点的片段,但对于 Java 没有。

我已使用我的私人证书指纹和 WEBSITE_LOAD_USER_PROFILE=1 添加了应用程序设置 - WEBSITE_LOAD_CERTIFICATES

我试图连接这些点并最终得到以下代码,但我收到错误:

      KeyStore ks;
      ks = KeyStore.getInstance("Windows-MY");
      ks.load(null, null); 
      Certificate cert = ks.getCertificate("<subject-cn>");
      TrustManagerFactory trustManagerFactory = 
      TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); 
      trustManagerFactory.init(ks);
      SSLContext sslContext = SSLContext.getInstance("TLS");
      sslContext.init(null, trustManagerFactory.getTrustManagers(), null);
      SSLSocketFactory factory = sslContext.getSocketFactory();
      HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
      conn.setSSLSocketFactory(factory);
      conn.setRequestMethod("GET");
      conn.setRequestProperty("Accept", "application/json");

错误::javax.net.ssl.SSLHandshakeException: PKIX 路径构建失败:sun.security.provider.certpath.SunCertPathBuilderException: 无法找到请求目标的有效证书路径。

上面的代码有什么问题?有没有关于如何实现这一点的文档?

4

0 回答 0