当前位置: 首页 > 面试题库 >

java.security.cert.CertPathValidatorException:找不到证书路径的信任锚。Android 2.3

朱海超
2023-03-14
问题内容

在我的服务器(生产服务器)中,我具有goDaddy
ssl证书。我有iOS和Android应用程序都与服务器连接,iOS都没有问题连接,Android版本为4.
一切都很好,但是设备版本为2.3。我总是收到SSLHandshakeException。

我在Android开发人员页面(https://developer.android.com/training/articles/security-
ssl.html)上确实很喜欢。

然后,我看到了这个线程在谈论扩展密钥用法,但是在调试时,我得到了以下信息:

[2]: OID: 2.5.29.37, Critical: false
Extended Key Usage: [ "1.3.6.1.5.5.7.3.1", "1.3.6.1.5.5.7.3.2" ]

因此,我猜该证书不是“强制”扩展密钥用法。

此外,在此线程上还有其他一些可能的原因,例如日期/时间完全错误,这些原因都不存在。

考虑到这一点,我现在不知道问题可能在哪里。

有什么建议?

编辑: 下面的StackTrace:

08-04 16:54:30.139: W/System.err(4832): Caused by: java.security.cert.CertificateException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
08-04 16:54:30.149: W/System.err(4832):     at org.apache.harmony.xnet.provider.jsse.TrustManagerImpl.checkServerTrusted(TrustManagerImpl.java:161)
08-04 16:54:30.149: W/System.err(4832):     at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.verifyCertificateChain(OpenSSLSocketImpl.java:664)
08-04 16:54:30.149: W/System.err(4832):     at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_do_handshake(Native Method)
08-04 16:54:30.159: W/System.err(4832):     at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:474)

问题答案:

看来证书的颁发者不在2.3设备的信任存储中。

查看GoDaddy证书的根ca和中间ca,并检查证书是否在2.3设备上存在。

有关获取2.3证书列表的信息,请参见http://www.andreabaccega.com/blog/2010/09/23/android-root-
certification-authorities-
list/

当只有根CA可用时,请确保您的Web服务器还根据请求提供中间证书。



 类似资料:
  • 问题内容: android应用有三台主机进行身份验证和授权。最终主机是REST API。首次使用Oauth身份验证和授权过程,它可以正常工作。 但是,如果 用户 在登录并访问REST API提供的服务后 杀死了该应用程序 ,然后再次打开该应用程序,则会出现此问题。 在这段时间内,身份验证和授权过程不会发生,只有REST API会发生。 这是造成原因, 但在首次使用(登录然后使用该应用程序)期间正在

  • 我正在Android上开发一个客户端应用程序,它连接到我的服务器,它在负载均衡器后面的AWS上,我在GoDaddy上创建了一个SSL证书,并将其添加到负载均衡器上。 浏览器上的一切都很顺利,它可以识别证书,但是当我试图用Android调用API时,我遇到了一个例外: 我找到了一些讨论谁说在app上添加证书,但是在证书服务器端是不是就没有办法修复了呢?这不是证书的问题吗?

  • 问题内容: 我正在尝试建立与HTTPS站点的连接,并且我GOT打印例外:。 我的原始代码如下: 然后,我在这里阅读了Google的文章,并将代码修改为: 关于文件,我使用此站点来检查该站点的证书。我发现了3个证书,我不知道该使用哪个证书。我一一尝试。 一个名称“ VeriSign 3类公共主要证书颁发机构-G5”导致以下例外: 当我使用一个名称为“ VeriSign Class 3 Secure

  • 我正试图通过OKHttp和改装2提出请求。该请求应通过发送证书(必须是p12或crt)完成。我们尝试过不同的方法,但没有人允许我成功。我正在用badssl进行测试。com,它允许我请求此URL:https://client.badssl.com您可以在这里找到证书:https://badssl.com/download/ 我尝试将p12和crt包含在项目的assets文件夹和raw文件夹中,并创建

  • 我遇到了Android4设备的一个问题,它在连接到服务器时收到以下异常: 但出于某种原因,我不明白它在Android4版本中开始失败了。 我尝试了信任所有证书的解决方案[LINK],它起作用了,但这显然存在安全问题,比如将您的应用程序暴露于“中间人”攻击 如何实现具有默认行为但仅将服务器的证书白名单的TrustManager。 在证书链给了我两个证书的格式: 用获得的url和证书替换了示例中的ur