Правильно ли реализовано это закрепление SSL для Android и почему эта ошибка отображается в logcat?

Я получаю эту ошибку в моем logcat. Я реализовал ssl пиннинг в моем приложении для Android. Я думаю, что сделал что-то не так, что вызывает эту ошибку.

05-19 17:39:54.998: E/NativeCrypto(30908): ssl=0x5eefaf80 cert_verify_callback x509_store_ctx=0x5dbea940 arg=0x0

05-19 17:39:54.998: E/NativeCrypto(30908): ssl=0x5eefaf80 cert_verify_callback calling verifyCertificateChain authMethod=ECDHE_RSA

Ниже приведен мой ssl, закрепляющий код Android. Который работает, но выдает вышеупомянутую ошибку.

public static HttpClient getHttpClient(HttpParams params, Context context) throws CertificateException, KeyStoreException, NoSuchAlgorithmException, IOException, KeyManagementException, UnrecoverableKeyException {
        CertificateFactory cf = CertificateFactory.getInstance("X.509");
        InputStream caInput = context.getResources().openRawResource(R.raw.abc);
        Certificate ca;
        try {
            ca = cf.generateCertificate(caInput);
        } finally {
            try {
                caInput.close();
            } catch (IOException e) {
                Log.e("Error","Closing the cert file",e);
            }
        }

        String keyStoreType = KeyStore.getDefaultType();
        KeyStore keyStore = KeyStore.getInstance(keyStoreType);
        keyStore.load(null, null);
        keyStore.setCertificateEntry("ca", ca);

        SSLSocketFactory sf = new TrustSelectCertsSSLSocketFactory(keyStore,context);
        sf.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);
        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
        registry.register(new Scheme("https", sf, 443));

        ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry);

        DefaultHttpClient client = new DefaultHttpClient(ccm, params);
        DefaultHttpRequestRetryHandler defaultHttpRequestRetryHandler = new DefaultHttpRequestRetryHandler(0, false);
        client.setHttpRequestRetryHandler(defaultHttpRequestRetryHandler);
        return client;
}

TrustSelectCertSSLFactory.java code

public class TrustSelectCertSSLSocketFactory extends SSLSocketFactory {
SSLContext sslContext = SSLContext.getInstance("TLS");
public TrustSelectCertSSLFactory(KeyStore truststore, Context context) throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException,
        UnrecoverableKeyException, CertificateException {
    super(truststore);
    String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
    TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
    tmf.init(truststore);
    sslContext.init(null, tmf.getTrustManagers(), null);
}

@Override
public Socket createSocket(Socket socket, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
    return sslContext.getSocketFactory().createSocket(socket, host, port, autoClose);
}

@Override
public Socket createSocket() throws IOException {
    return sslContext.getSocketFactory().createSocket();
}

}

Код, который вызывает функцию getHttpClient

....
HttpClient client = getHttpClient(params,context);
....
httpResponse = client.execute(post);
....

Верна ли моя реализация закрепления SSL и почему эта ошибка отображается в logcat? Если вам нужна более подробная информация, пожалуйста, укажите это в разделе комментариев.

Я искал в Google, но он дает мне решения, которые не являются решением этой проблемы. Есть ли что-то еще, что я должен искать?

ссылка 1

ссылка 2

Ответы на вопрос(0)

Ваш ответ на вопрос