Как подключиться к серверу с помощью сертификата?

191
23 июня 2018, 23:40

Есть рутовый сертификат customca.crt пытаюсь подключиться к нему на сервер

// HTTP GET request
    private void sendGet() throws Exception {
        CertificateFactory cf = CertificateFactory.getInstance("X.509");
        InputStream caInput =getAssets().open("customca.crt");
        Certificate ca;
        ca=cf.generateCertificate(caInput);
        System.out.println("ca=" + ((X509Certificate) ca).getSubjectDN());
        caInput.close();
        // Create a KeyStore containing our trusted CAs
        String keyStoreType = KeyStore.getDefaultType();
        KeyStore keyStore = KeyStore.getInstance(keyStoreType);
        keyStore.load(null, null);
        keyStore.setCertificateEntry("ca", ca);
        // Create a TrustManager that trusts the CAs in our KeyStore
        String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
        TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
        tmf.init(keyStore);
        // Create an SSLContext that uses our TrustManager
        SSLContext context = SSLContext.getInstance("TLS");
        context.init(null,tmf.getTrustManagers() , null);
        /**
         *
         *
         */
        String url = "https://*********/public/user/register?email";
        URL obj = new URL(url);
        HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();
        con.setSSLSocketFactory(con.getSSLSocketFactory());

        con.setRequestMethod("GET");
        int responseCode = con.getResponseCode();
        System.out.println("\nSending 'GET' request to URL : " + url);
        System.out.println("Response Code : " + responseCode);
        BufferedReader in = new BufferedReader(
                new InputStreamReader(con.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();
        //print result
        System.out.println(response.toString());
    }

но в ответ получаю ошибку

 06-02 22:17:22.584 7602-7602/? W/System.err: javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
READ ALSO
Рандомные ответы по умолчанию и ответы, заданные с HashMap

Рандомные ответы по умолчанию и ответы, заданные с HashMap

Подскажите, пожалуйста, что не так в коде? При вводе слова, которое не хранится в HashMap, должен выводить ответ по умолчанию, но вместо этого выводит...

236
Центрирование заднего фона

Центрирование заднего фона

Возник вопрос, как имея картинку и ставя её на задний фон получить положение её центра в центре экрана пользователя

203
table tfoot показывать на верху таблицы

table tfoot показывать на верху таблицы

Я читал в форуме о <tfoot> элементе, что он должен появиться после <thead> элементаИ все время его показывает внизу

220