JavaFX WebView无法使用不受信任的SSL证书
我正在使用JavaFX开发一个简单的嵌入式浏览器:
final WebView browser = new WebView(); final WebEngine webEngine = browser.getEngine();
当我使用webEngine
加载任何http网站时,它工作正常:
webEngine.load("http://google.es");
尽管如此,如果我尝试使用不受信任的证书(我自己的ssl证书)加载网站, webEngine
不起作用,我在浏览器中看到一个白色屏幕。
有没有办法(自动)信任我的ssl证书?
最后,我解决了我的问题。 您应该在加载网站之前添加此代码:
// Create a trust manager that does not validate certificate chains TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() { public java.security.cert.X509Certificate[] getAcceptedIssuers() { return null; } public void checkClientTrusted( java.security.cert.X509Certificate[] certs, String authType) { } public void checkServerTrusted( java.security.cert.X509Certificate[] certs, String authType) { } } }; // Install the all-trusting trust manager try { SSLContext sc = SSLContext.getInstance("SSL"); sc.init(null, trustAllCerts, new java.security.SecureRandom()); HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } catch (GeneralSecurityException e) { } // Now you can access an https URL without having the certificate in the truststore try { URL url = new URL("https://hostname/index.html"); } catch (MalformedURLException e) { } //now you can load the content: webEngine.load("https://example.com");
注意:此代码片段只是禁用证书validation,而不是TRUSTS IT。