Как использовать сертификат SSL в коде Java в службе приложений Azure
Я пытаюсь вызвать серверный API из Java-клиента, который использует SSL-аутентификацию. Для.Net есть отрывок о том, как добиться этого в документации MS, но нет для Java.
Я добавил настройки приложения - WEBSITE_LOAD_CERTIFICATES с моим отпечатком частного сертификата и WEBSITE_LOAD_USER_PROFILE=1
Я попытался соединить точки и получил код ниже, но получаю ошибку:
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: невозможно найти действительный путь сертификации для запрошенной цели.
Что не так в приведенном выше коде? Есть ли документация о том, как этого можно достичь?