当前位置: 首页 > 知识库问答 >
问题:

HttpsUrlConnection:在2.3上找不到认证路径的信任锚

宋望
2023-03-14

那里我需要与建立https连接https://free.temafon.ru但我在Android2.3及以下版本上遇到了CertPathValidator异常。我做了什么。

>

最终密钥库密钥库=密钥库。getInstance(“BKS”);

    keystore.load(getResources().openRawResource(R.raw.temafon),
                "W0d3Uoa5PkED".toCharArray());
    final TrustManager trustManager = new TemafonTrustManager(keystore);

    final SSLContext sslContext = SSLContext.getInstance("TLS");
    sslContext.init(null, new TrustManager[] { trustManager }, null);

    HttpsURLConnection.setDefaultSSLSocketFactory(sslContext
            .getSocketFactory());

在这里,我使用custom TrustManager,因为服务器以错误的顺序发送证书。

此代码在Android 4.0上运行良好,但在2.3上失败,java.security.cert.CertPathValidatorExctive:未找到认证路径的信任锚。

我创建了一个测试项目,可以在这里找到。


共有1个答案

郜修雅
2023-03-14

当你说你用FireFox获取了所有证书时,你还包括根CA吗?

最有可能的是,Android2.3没有安装根CA。根据这个链接,

在这种情况下,发生SSLHandshakeException是因为系统不信任您的CA。这可能是因为你有一个来自新CA的证书,而该证书尚未被Android信任,或者你的应用程序运行在没有CA的旧版本上。

 类似资料:
  • 问题内容: 在我的服务器(生产服务器)中,我具有goDaddy ssl证书。我有iOS和Android应用程序都与服务器连接,iOS都没有问题连接,Android版本为4. 一切都很好,但是设备版本为2.3。我总是收到SSLHandshakeException。 我在Android开发人员页面(https://developer.android.com/training/articles/secu

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

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

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

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