Java SSLHandshakeException с самозаверяющим сертификатом

Я пытаюсь получить доступ к локальному сайту https с помощью самозаверяющего сертификата. Я изменил файл хоста и назначил IP-адрес своему локальному сайту; код, который я использую, чтобы попасть на сайт:

 String httpsURL = "https://test-ssl.com";
    URL myurl = new URL(httpsURL);
    HttpsURLConnection con = (HttpsURLConnection)myurl.openConnection();
    InputStream ins = con.getInputStream();
    InputStreamReader isr = new InputStreamReader(ins);
    BufferedReader in = new BufferedReader(isr);

    String inputLine;

    while ((inputLine = in.readLine()) != null)
    {
      System.out.println(inputLine);
    }

    in.close();
  }

и я получаю это сообщение об ошибке:

Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
    at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
    at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)

Я импортировал самозаверяющий сертификат в хранилище ключей, используя следующую команду:

keytool -import -alias site-ssl -keystore cacerts -file site-ssl.com.cer

Сертификат был успешно импортирован

что мне здесь не хватает?

1 ответ

Вы должны попробовать это с именем хоста вместо IP-адреса в URL. Он пытается выполнить проверку имени хоста, а сертификат не содержит альтернативного имени субъекта для 192.168.1.6,

Другие вопросы по тегам