Это то, что помогло мне построить правильную работающую http-связь через ssl.
http://blog.antoine.li/2010/10/22/android-trusting-ssl-certificates/
Если вы хотите, чтобы клиент (устройство Android) действительно (не вслепую) доверял хосту, публичномусертификат должен быть загружен в KeyStore устройства, иначе устройство не будет взаимодействовать с сервером
. Вы будете использовать файл .crt, но для использования с Android KeyStore его необходимо преобразовать в «bks».Я делаю следующее:
// read .crt file from memory
InputStream inStream = ctx.openFileInput("cetificate.crt");
//InputStream inStream = ctx.getAssets().open("wm_loaner.cer");
if(inStream != null)
{
KeyStore cert = CertUtils.ConvertCerToBKS(inStream, "MyAlias", "password".toCharArray());
inStream.close();
}
public static KeyStore ConvertCerToBKS(InputStream cerStream, String alias, char [] password)
{
KeyStore keyStore = null;
try
{
keyStore = KeyStore.getInstance("BKS", "BC");
CertificateFactory factory = CertificateFactory.getInstance("X.509", "BC");
Certificate certificate = factory.generateCertificate(cerStream);
keyStore.load(null, password);
keyStore.setCertificateEntry(alias, certificate);
}
catch ....
{
}
return keyStore;
}
После того, как сертификат был преобразован и загружен в KeyStore, вы можете установить соединение