невозможно найти действительный путь сертификации к запрошенному целевому исключению даже после добавления необходимых сертификатов - PullRequest
0 голосов
/ 10 марта 2020

Даже после выполнения описанных ниже шагов, я не могу установить sh соединение с https ссылкой

  1. Преобразован файл .crt и .key в .p12 через openssl

  2. Конвертировал файл .p12 в файл .jks через keytool (хотя я мог бы прямо упомянуть .p12 в коде)

  3. Добавил сгенерированный файл .jks в cacerts, присутствующие в jdk / jre / lib / security
  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();
Попытка добавления хранилища доверенных сертификатов также в свойстве System, но с той же ошибкой. Попытка добавления хранилища доверенных сертификатов / хранилища ключей в аргументы виртуальной машины, все еще получала ту же ошибку.

Что еще мне следует попробовать заставить его работать?

...