В Java почему использование URL-адреса дает исключение SSLHandshakeException с одним портом, но не с другим портом с тем же сертификатом? - PullRequest
0 голосов
/ 29 января 2019

В следующем Java-коде я использую два разных URL с одинаковым именем хоста, но с разными номерами портов.Они оба обслуживают один и тот же сертификат (я скачал и распространил их).Но тот с портом 6443 дает SSLHandshakeException, в то время как тот с портом 443 успешен.Почему Java возражает против сертификата для 6443 URL?

package httpsrequesttest;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;

public class HttpsRequestTest {

  public static void main(String[] args) {
    String[] urls = new String[]{
      "https://geoeventsample1.esri.com:6443",
      "https://geoeventsample1.esri.com"
    };
    for (String url : urls) {
      try {
        InputStream inputStream = new URL(url).openStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
        System.out.printf("%s\n\tSuccess\n\tFirst line: %s\n", url, in.readLine());
      } catch (IOException ex) {
        System.out.printf("%s\n\tFailure\n\tError message: %s\n", url, ex.getClass().getSimpleName() + ": " + ex.getMessage());
      }
    }
  }

}

Вывод:

https://geoeventsample1.esri.com:6443
    Failure
    Error message: SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
https://geoeventsample1.esri.com
    Success
    First line: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...