Revision: 6236 http://sourceforge.net/p/jump-pilot/code/6236 Author: edso Date: 2020-02-11 10:23:54 +0000 (Tue, 11 Feb 2020) Log Message: ----------- fix misleading error "unknown certificate" Connecting unreachable host, does not result in error message that the problem is due to unknown certificate provider anymore.
Modified Paths: -------------- core/trunk/src/org/openjump/util/URLConnectionProvider.java Modified: core/trunk/src/org/openjump/util/URLConnectionProvider.java =================================================================== --- core/trunk/src/org/openjump/util/URLConnectionProvider.java 2020-02-11 10:20:53 UTC (rev 6235) +++ core/trunk/src/org/openjump/util/URLConnectionProvider.java 2020-02-11 10:23:54 UTC (rev 6236) @@ -1,21 +1,7 @@ package org.openjump.util; -import com.vividsolutions.jump.I18N; -import com.vividsolutions.jump.util.Blackboard; -import com.vividsolutions.jump.workbench.JUMPWorkbench; -import com.vividsolutions.jump.workbench.Logger; -import com.vividsolutions.jump.workbench.plugin.PlugInContext; -import com.vividsolutions.jump.workbench.ui.network.ProxySettingsOptionsPanel; -import com.vividsolutions.jump.workbench.ui.plugin.PersistentBlackboardPlugIn; -import com.vividsolutions.wms.WMSException; +import static javax.swing.JOptionPane.YES_NO_OPTION; -import net.iharder.Base64; - -import javax.net.ssl.HttpsURLConnection; -import javax.net.ssl.SSLContext; -import javax.net.ssl.TrustManager; -import javax.net.ssl.X509TrustManager; -import javax.swing.*; import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; @@ -22,14 +8,28 @@ import java.net.URLConnection; import java.net.URLDecoder; import java.nio.charset.Charset; -import java.security.KeyManagementException; -import java.security.NoSuchAlgorithmException; +import java.security.GeneralSecurityException; import java.security.cert.X509Certificate; import java.util.HashSet; import java.util.Set; -import static javax.swing.JOptionPane.YES_NO_OPTION; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; +import javax.swing.JOptionPane; +import com.vividsolutions.jump.I18N; +import com.vividsolutions.jump.util.Blackboard; +import com.vividsolutions.jump.workbench.JUMPWorkbench; +import com.vividsolutions.jump.workbench.Logger; +import com.vividsolutions.jump.workbench.plugin.PlugInContext; +import com.vividsolutions.jump.workbench.ui.network.ProxySettingsOptionsPanel; +import com.vividsolutions.jump.workbench.ui.plugin.PersistentBlackboardPlugIn; +import com.vividsolutions.wms.WMSException; + +import net.iharder.Base64; + public class URLConnectionProvider { public static String KEY = URLConnectionProvider.class.getName() + " - UNCERTIFIED_AUTHORIZED_URL"; @@ -130,7 +130,7 @@ setTrustOption(false, url); connection.connect(); // try to connect return connection; // can connect - } catch(IOException|KeyManagementException|NoSuchAlgorithmException e) { + } catch(GeneralSecurityException e) { String baseURL = new URL(url.getProtocol(), url.getHost(), url.getPort(), url.getPath()).toString(); if (authorizedURL.contains(baseURL) || acceptConnection(url)) { try { @@ -139,7 +139,7 @@ authorizedURL.add(baseURL); //setTrustOption(false, null); return connection; - } catch(KeyManagementException|NoSuchAlgorithmException ex2) { + } catch(GeneralSecurityException ex2) { throw new IOException(ex2); } } else { @@ -169,13 +169,14 @@ private Set<URL> trustedURLs = new HashSet<>(); /** + * setDefaultSSLSocketFactory of HttpsURLConnection to a dummy trust managed + * in case user requested to do so, remember this choice during runtime * * @param trust * @param url - * @throws KeyManagementException - * @throws NoSuchAlgorithmException + * @throws GeneralSecurityException */ - private void setTrustOption(boolean trust, URL url) throws KeyManagementException, NoSuchAlgorithmException { + private void setTrustOption(boolean trust, URL url) throws GeneralSecurityException { SSLContext sc = SSLContext.getInstance("SSL"); String host = url != null ? url.getHost() : ""; if (trust || (url != null && trustedURLs.contains(url))) { @@ -186,6 +187,7 @@ Logger.info("Using the system trust manager to verify certificate for host '"+host+"'."); sc.init(null, null, null); } + // TODO: we should maybe not set a factory for _all_ connections here HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); } } _______________________________________________ Jump-pilot-devel mailing list Jump-pilot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jump-pilot-devel