JavaFX WebView не может загрузить определенные сайты

Я пытаюсь использовать WebView JavaFX для загрузки этого сайта, но все, что я получаю, это пустой экран. WebView отлично работает на других сайтах; он получает 100/100 на ACID3 и загружает другие HTTPS-сайты без каких-либо проблем.

Я не могу найти ничего особенно плохого с сайтом. Он имеет надлежащий сертификат с истекшим сроком действия, подписанный соответствующим центром сертификации, а лаборатории SSL сообщают о значении B. Я попробовал все основные браузеры на нем, и ни один не сообщает о каких-либо проблем с сертификатами или SSL; на сайте все хорошо.

Любая помощь будет принята с благодарностью. Даже простое "да, сайт сломан для меня тоже" или "здесь нет проблем" очень помогло бы.

Я использую Java SDK 1.8.0_45-b14 на 64-битной Windows 8.1.

1 ответ

Решение

Причина в java.lang.Throwable: SSL handshake failed

Одним из решений может быть: из этого поста /questions/4666603/mozhno-li-zastavit-java-ignorirovat-hranilische-doveriya-i-prosto-prinimat-lyuboj-poluchennyij-ssl-sertifikat/4666632#4666632:

     TrustManager trm = new X509TrustManager() {
        public X509Certificate[] getAcceptedIssuers() {return null;}
        public void checkClientTrusted(X509Certificate[] certs, String authType) {}
        public void checkServerTrusted(X509Certificate[] certs, String authType) {}
    };

    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, new TrustManager[] { trm }, null);
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

Также есть пост, вероятно, о похожем случае: JavaFx Webview JDK 8 не может загрузить самозаверяющий сертификат

Откуда я знаю, что это было SSL handshake failed

webView.getEngine().getLoadWorker().stateProperty().addListener(
            new ChangeListener<Worker.State>() {
                public void changed(ObservableValue ov, 
                      Worker.State oldState, Worker.State newState) {
            System.out.println(webView.getEngine().getLoadWorker().exceptionProperty());
             ...

также добавление добавить -Djavax.net.debug=all в ВМО вариант показывает

URL-загрузчик-1, обработка исключения: javax.net.ssl.SSLHandshakeException:

sun.security.validator.ValidatorException: не удалось построить путь PKIX:

sun.security.provider.certpath.SunCertPathBuilderException:

невозможно найти действительный путь сертификации для запрошенной цели

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