gpt4 book ai didi

android - 强制在 Android 应用程序中更新证书 .pem

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:17 25 4
gpt4 key购买 nike

 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;
}
}

所以我正在使用那个函数,当我调用下面的函数时它起作用了

 ((HttpsURLConnection) conn).setSSLSocketFactory(Common
.getSSL().getSocketFactory()

但是,当我的客户通知我新证书时出现了问题,并且我需要使用新证书更新我的应用程序才能正常工作。我的问题是,正确的做法是什么?为什么我每次都需要在应用程序中更新证书?我把它放在 assets 文件夹中。我应该每次都从某个地方下载证书吗?不更新应用程序的人,由于旧证书将无法使用该应用程序

最佳答案

目前,您只是将一些代码投入到问题中,而没有解释它的确切用途。我的猜测是您使用它来将您的客户提供给您的特定自签名证书视为受信任的。这意味着如果证书在服务器端发生更改,则客户端(即应用程序或至少应用程序使用的 cert.pem 文件)需要更新。

处理证书更新的常用方法首先是不使用自签名证书。相反,应该使用公共(public) CA 颁发的证书,因为应用程序将接受内置信任库中任何 CA 颁发的任何证书,前提是该证书是为预期站点颁发的。这样,即使频繁更新证书也没有问题,应用程序无需更新即可接受新证书。

我建议您与您的客户沟通,从自签名证书转向使用公共(public)证书的既定方法。这些并不昂贵,即像 Let's Encrypt 这样的 CA 免费提供这些。

关于android - 强制在 Android 应用程序中更新证书 .pem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45529568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com