Может кто-нибудь сказать мне, как я могу продолжать отображать веб-страницы, используя самозаверяющий сертификат https в WebView после обновления до JavaFX 14?
До JavaFX 14 мы работали с этим путем реализации пользовательского TrustHandler и HostnameVerifier с использованием HttpsURLConnection.setDefaultSSLSocketFactory и HttpsURLConnection.setDefaultHostnameVerifier. Когда я переключаюсь на JavaFX 14 и WebView пытается загрузить самозаверяющие веб-страницы, которые они не загружают, пользовательский код TrustHandler больше не вызывается, и я получаю его обратно из webView.getEngine (). GetLoadWorker (). GetException () :
java.lang.Throwable: SSL handshake failed
at javafx.web/javafx.scene.web.WebEngine$LoadWorker.describeError(WebEngine.java:1431)
at javafx.web/javafx.scene.web.WebEngine$LoadWorker.dispatchLoadEvent(WebEngine.java:1370)
at javafx.web/javafx.scene.web.WebEngine$PageLoadListener.dispatchLoadEvent(WebEngine.java:1231)
at javafx.web/com.sun.webkit.WebPage.fireLoadEvent(WebPage.java:2514)
at javafx.web/com.sun.webkit.WebPage.fwkFireLoadEvent(WebPage.java:2359)
at javafx.web/com.sun.webkit.network.URLLoaderBase.twkDidFail(Native Method)
at javafx.web/com.sun.webkit.network.HTTP2Loader.notifyDidFail(HTTP2Loader.java:624)
at javafx.web/com.sun.webkit.network.HTTP2Loader.lambda$didFail$18(HTTP2Loader.java:606)
at javafx.web/com.sun.webkit.network.HTTP2Loader.lambda$callBackIfNotCanceled$10(HTTP2Loader.java:437)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$10(PlatformImpl.java:428)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:391)
at javafx.graphics/com.sun.javafx.application.PlatformImpl.lambda$runLater$11(PlatformImpl.java:427)
at javafx.graphics/com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:96)
at javafx.graphics/com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
at javafx.graphics/com.sun.glass.ui.win.WinApplication.lambda$runLoop$3(WinApplication.java:174)
at java.base/java.lang.Thread.run(Thread.java:830)
У меня нет проблем с JavaFX 13.0.2, но он не работает с 14 или 14.0.1. Любопытно, что нет проблем даже с JavaFX 14, если я работаю с OpenJDK до 11.0.2, но проблема возникает с 12 до 15ea20.
При просмотре заметок о выпуске для JavaFX и JDK, единственной вероятной причиной, по-моему, является JDK-8211308 - поддержка HTTP / 2 в WebView. Это подразумевает переход от использования класса JDK URLConnection, и я предполагаю, что это может привести к тому, что он больше не будет использовать мой собственный TrustHandler. Если я прав, то мне нужно знать, как продолжать использовать мой собственный TrustHandler для подключений, инициированных ниже WebView, но я не вижу, как это сделать из API в java. net .http. В качестве альтернативы в описании расширения упоминается «свойство среды выполнения для перехода к устаревшему HTTP API», но я не могу найти никакого другого упоминания об этом - как мне использовать этот запасной вариант? Или есть какой-то альтернативный способ заставить WebView разрешать самозаверяющие сертификаты? Или я не прав насчет того, что изменилось с JavaFX 14 и есть какое-то другое решение?