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

Reply via email to