принять сервер SSL и сертификат в клиенте Java с XML-RPC - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь подключиться к серверу с самозаверяющим (или с истекшим сроком действия) сертификатом с Java, но я все еще получаю тот же результат. Сообщение org.apache.xmlrpc.XmlRpcException: Failed to read server's response: java.security.cert.CertificateException: No subject alternative names present.

Я импортировал сертификат на мой jvm, но все равно получил тот же ответ. Вот код, который я пытаюсь сделать

Vector params = new Vector();
        HashMap<String, String> map = new HashMap<String, String>();
        map.put("label1", "value1"); 
        map.put("label2", "value2"); 
        map.put("label3", "value3"); 
        map.put("label4", "value4");
        map.put("label5", "value5");
        Map<String, String> map2 = new HashMap<String, String>(map);
        params.addElement(map2);
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
                public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                    return null;
                }
                public void checkClientTrusted(X509Certificate[] certs, String authType) {
                }
                public void checkServerTrusted(X509Certificate[] certs, String authType) {
                }
            }
        };

        // Install the all-trusting trust manager
        SSLContext sc = SSLContext.getInstance("SSL");
        sc.init(null, trustAllCerts, new java.security.SecureRandom());
        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

        // Create all-trusting host name verifier
        HostnameVerifier allHostsValid = new HostnameVerifier() {
            public boolean verify(String hostname, SSLSession session) {
                return true;
            }
        };

        // Install the all-trusting host verifier
        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
        try 
        { 
            config.setServerURL(new URL("https://myurl"));

            XmlRpcClient client = new XmlRpcClient(); 
            client.setConfig(config); 
            log.info("Client initialized: "+client);
            result = (Object[])client.execute("method", params);
            log.info(result[0]);
        } catch (MalformedURLException | XmlRpcException e) 
        { 
            log.info(e);
        }

Есть ли кто-нибудь, кто мог бы опубликовать подробные инструкции? Большое спасибо

...