0
public static SSLContext getSSL() {
try {
CertificateFactory cf = CertificateFactory.getInstance("X.509");
AssetManager assetManager = App.getAppContext()
.getAssets();
InputStream caInput = assetManager.open("cert.pem");
java.security.cert.X509Certificate ca = null;
try {
ca = (java.security.cert.X509Certificate) cf
.generateCertificate(caInput);
} catch (Exception er) {
} finally {
caInput.close();
}
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("ca",
ca);
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory
.getInstance(tmfAlgorithm);
tmf.init(keyStore);
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
return context;
} catch (Exception e1) {
return null;
}
}
所以我使用的功能,这是工作,当我调用下面的函数强制在Android应用程序更新证书。质子交换膜
((HttpsURLConnection) conn).setSSLSocketFactory(Common
.getSSL().getSocketFactory()
然而,当我的客户告诉我的新问题arrised证书,并且我需要用新证书更新我的应用程序才能正常工作。我的问题是,对此有何正确方法?为什么我需要每次更新应用程序中的证书?我在asssets文件夹中。我应该每次从某处下载证书吗?不更新应用程序的人将因为旧证书而无法使用应用程序