Я хочу добавить несколько сертификатов из файла ресурсов для Android KeyStore:Добавление нескольких сертификатов SSL-сертификатов для Android KeyStore не работает. (Из файла ресурсов)
if (sslContext==null) {
// loading CA from an InputStream
InputStream is = AVApplication.getContext().getResources().openRawResource(R.raw.wildcard);
String certificates = Converter.convertStreamToString(is);
String certificateArray[] = certificates.split("-----BEGIN CERTIFICATE-----");
for (int i = 1; i < certificateArray.length; i++) {
certificateArray[i] = "-----BEGIN CERTIFICATE-----" + certificateArray[i];
//LogAV.d("cert:" + certificateArray[i]);
// generate input stream for certificate factory
InputStream stream = IOUtils.toInputStream(certificateArray[i]);
// CertificateFactory
CertificateFactory cf = CertificateFactory.getInstance("X.509");
// certificate
Certificate ca;
try {
ca = cf.generateCertificate(stream);
} finally {
is.close();
}
// creating a KeyStore containing our trusted CAs
KeyStore ks = KeyStore.getInstance("BKS");
ks.load(null, null);
ks.setCertificateEntry("av-ca" + i, ca);
// TrustManagerFactory
String algorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(algorithm);
// Create a TrustManager that trusts the CAs in our KeyStore
tmf.init(ks);
// Create a SSLContext with the certificate that uses tmf (TrustManager)
sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), new SecureRandom());
}
}
return sslContext;
Только последний сертификат из файла работ! Кажется, что сертификат перезаписывает другой.
файла выглядит следующим образом:
-----BEGIN CERTIFICATE-----
cert
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
cert
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
cert
-----END CERTIFICATE-----
Я надеюсь, что кто-то может мне помочь! :)
Если его можно использовать инструмент вместо вас есть программа для этой цели, чем использовать [Использовать KeyStore Проводник] (http://keystore-explorer.sourceforge.net/) См. [Этот пост] (http://stackoverflow.com/questions/21847096/can-i-merge-multiple-android-keystore-files-into-one/31171778#31171778) answer – abcdef12
Каждый раз, создавая новый SSLContext только с одним сертификатом. –