Я успешно сгенерировал хранилище ключей, используя

keytool -genkeypair -alias SomeAlias -keyalg RSA -validity 365 -keystore NAME.keystore -storetype JKS

поместил его в каталог конфигурации tomcat и обновил файл server.xml, включив прослушивание порта 8443.

Так что я могу получить доступ к https://localhost:8443/MyApp

Но когда я пытаюсь отправить некоторые данные из https://localhost:8443/MyApp в https://localhost:8443/MyApp

sun.security.validator.ValidatorException: не удалось построить путь PKIX: sun.security.provider.certpath.SunCertPathBuilderException: невозможно найти действительный путь сертификации для запрошенной цели

моя функция POST:

    public void HttpsPostData(String data, URL url){
    try {
        String encodedData = URLEncoder.encode("data", "UTF-8") + "=" + URLEncoder.encode(data, "UTF-8");
        HttpsURLConnection con = (HttpsURLConnection)url.openConnection();

        con.setDoOutput(true);
        OutputStreamWriter wr = new OutputStreamWriter(con.getOutputStream());
        wr.write(encodedData);
        wr.flush();

        BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));

        String inputLine;

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

        in.close();
    } catch (IOException ex) {
        Logger.getLogger(Sender.class.getName()).log(Level.SEVERE, null, ex);
    }
}

чего мне не хватает?

1 ответ1

1

Вам придется доверять сертификату сервера, даже если это был localhost. Вероятно, самый простой способ - использовать приложение Java с именем InstallCert. Смотрите сообщение в блоге здесь.

Быстрые шаги:

  1. Скомпилируйте InstallCert.java с помощью javac InstallCert.java .
  2. Вызовите java InstallCert localhost:8443 , поверьте сертификату, и InstallCert создаст файл с именем jssecacerts .
  3. Скопируйте jssecacerts в свой каталог JDK в каталоге jre/lib/security .

и программа должна быть в состоянии доверять сертификату.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .