5

我正在尝试使用 JavaFX 的 WebView 加载此站点,但我得到的只是一个空白屏幕。WebView 在其他网站上运行良好;它在 ACID3 上获得 100/100 并加载其他 HTTPS 站点而没有任何问题。

我也找不到该网站有什么特别错误的地方。它有一个由适当的 CA 签署的适当的、未过期的证书,并且 SSL 实验室报告为 B 级。我尝试了所有主流浏览器,但没有报告任何证书或 SSL 相关问题;该网站对所有这些都很好。

任何帮助将不胜感激。即使是简单的“是的,我的网站也坏了”或“这里没有问题”也会有很大帮助。

我在 Windows 8.1 64 位上使用 Java SDK 1.8.0_45-b14。

4

1 回答 1

6

原因是java.lang.Throwable: SSL handshake failed

一种解决方案可以是:从这篇文章https://stackoverflow.com/a/5671038/1032167

     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 can not load self signed certificate

我怎么知道那是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到 VMOption 节目

URL-Loader-1,处理异常:javax.net.ssl.SSLHandshakeException:

sun.security.validator.ValidatorException:PKIX 路径构建失败:

sun.security.provider.certpath.SunCertPathBuilderException:

无法找到到所请求目标的有效认证路径

于 2015-06-11T15:37:03.707 回答