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

Я получаю эту ошибку в своем логарифме. Я применил 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

 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 и почему эта ошибка появляется в логарифме? Если вам нужна дополнительная информация, пожалуйста, укажите это в разделе комментариев.

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

Ссылка 1

Ссылка 2