所以我有一个在我的应用程序中使用的证书,以及一个中间CA和根CA证书的证书,所有层次结构。
我很难找到如何正确地将所有三个添加到我的应用程序中。基于其他StackOverflow帖子,我正在使用第一个证书,它似乎工作得很好,但因为我没有使用其他两个证书,感觉......错了。如果甚至没有提到其他证书,如何验证证书? Android是否安装了某些提供程序并且正在使用它们?我是否应该期待一些可能找不到根CA的信任链的设备?
目前,我有这个:
CertificateFactory cf = null;
cf = CertificateFactory.getInstance("X.509");
Certificate ca;
TypedValue returnedValue = new TypedValue();
InputStream cert = context.getResources().openRawResource(R.raw.thecertificate);
ca = cf.generateCertificate(cert);
// Creating a KeyStore containing our trusted CAs
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca", ca);
// Creating a TrustManager that trusts the CAs in our KeyStore.
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
// Creating an SSLSocketFactory that uses our TrustManager
SSLContext sslContext = SSLContext.getInstance("TLS");
sslContext.init(null, tmf.getTrustManagers(), null);
raw resource文件夹中的证书是我提到的第一个证书。
任何人都可以澄清吗?
祝你好运, 若昂