gpt4 book ai didi

使用 digicert 在服务器中更新证书后出现 Android ssl 证书错误

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

我一直在 raw 文件夹下的 android 应用程序中使用服务器团队提供的 ssl 证书 key 。它最初工作正常。

     CertificateFactory cf = CertificateFactory.getInstance("X.509");

InputStream caInputMmx = new BufferedInputStream(this.getAssets().open("123.crt"));
Certificate caMmx = cf.generateCertificate(caInputMmx);
String keyStoreType = KeyStore.getDefaultType();
KeyStore keyStore = KeyStore.getInstance(keyStoreType);
keyStore.load(null, null);
keyStore.setCertificateEntry("caMmx", caMmx);
String tmfAlgorithm = TrustManagerFactory.getDefaultAlgorithm();
TrustManagerFactory tmf = TrustManagerFactory.getInstance(tmfAlgorithm);
tmf.init(keyStore);
SSLContext context = SSLContext.getInstance("TLS");
context.init(null, tmf.getTrustManagers(), null);
client.setSslSocketFactory(context.getSocketFactory());

几天后,证书过期,服务器团队更新了证书。从那时起,我们的 android 应用程序停止工作,出现以下异常

com.android.volley.NoConnectionError:javax.net.ssl.SSLHandshakeException:java.security.cert.CertPathValidatorException:找不到证书路径的信任 anchor 。

在使用来自服务器的新续订证书时,我们的应用程序工作正常。是否有任何解决方法可以从服务器修复此问题,而不是每次都在应用程序中更新新证书?因为如果用户不更新应用程序,我们的应用程序将无法运行。那么有什么办法可以解决这个问题,而不是在证书过期时每次都在应用程序中更新证书。

编辑:

评论后,提供一些额外的信息。

keystore :我使用的是默认 keystore 。CA :我正在使用 digicert CA。这些人值得信赖。

最佳答案

这种问题往往是链证书丢失引起的。根据 SSLLabs 检查您的网站并寻找不完整链的报告。请注意,像 Chrome 这样的桌面浏览器可能仍然可以工作,因为它们会缓存来自早期连接的链证书,有时甚至会主动尝试从互联网上检索丢失的链证书。

关于使用 digicert 在服务器中更新证书后出现 Android ssl 证书错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40023948/

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