Ответ 1
1) Это зависит. У вас есть собственный сертификат на стороне сервера, и вы пытаетесь подтвердить свою личность на устройстве Android? Или вы на стороне андроида пытаетесь проверить свою идентификацию на сервере? Если это первый, то перейдите по этой ссылке: http://www.codeproject.com/KB/android/SSLVerification_Android.aspx?display=Mobile
Вы хотите обратить особое внимание на то, где он делает файл KeyStore.
2) Причина, по которой вы получаете эту ошибку, связана с тем, что она не доверяет подключаемому серверу, потому что вы не создали доверительное хранилище правильно или вы подключаетесь к серверу, сертификат которого не был добавлен в доверительный магазин, С чем именно вы пытаетесь подключиться?
3) Убедитесь, что у вас есть <uses-permission android:name="android.permission.INTERNET" />
в файле manifest.xml.
Edit Мои извинения, пожалуйста, ознакомьтесь с изменениями, внесенными мной в первый абзац.
Вот часть для инициализации хранилища ключей и доверия
SSLcontext sslContext = SSLContext.getDefault();
KeyStore trustSt = KeyStore.getInstance("BKS");
TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm());
InputStream trustStoreStream = this.getResources().openRawResource(R.raw.truststore);
trustSt.load(trustStoreStream, "<yourpassword>".toCharArray());
trustManagerFactory.init(trustStre);
KeyStore keyStore = KeyStore.getInstance("BKS");
KeyManagerFactory keyManagerFactory = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
InputStream keyStoreStream = this.getResources().openRawResource(R.raw.keystore);
keyStore.load(keyStoreStream, "<yourpassword>".toCharArray());
keyManagerFactory.init(keyStore, "<yourpassword>".toCharArray());
sslContext.init(keyManagerFactory.getKeyManagers(), trustManagerFactory.getTrustManagers(), null);