0

我正在编写一个 Android 应用程序,它需要与我网络中的某个 Web 服务器执行 HTTPS 连接。

此 Web 服务器具有由自定义证书颁发机构签名的服务器证书,因此尝试简单连接会失败,因为在设备尝试建立连接时 CA 是未知的:这很公平。

现在我在设备上下载了 CA 证书并将其导入到用户“受信任的凭据”设置页面中。它显示(在“用户”选项卡下),我可以单击它并查看它具有预期的详细信息。

但是,设备在执行 HTTPS 连接时似乎忽略了这个新的 CA 证书,并且我在连接时遇到了与之前完全相同的错误:

未找到证书路径的信任锚。

如果我尝试在设备上使用 Chrome 浏览服务器,也会发生同样的事情。我被告知“此站点的安全证书存在问题”。

我使用测试了我的认证链openssl verify,一切似乎都很好。

我不知道这里发生了什么。

我可以在浏览器中无法打开 Web 服务器页面的情况下生活,但我希望至少能够使用用户“受信任的凭据”列表从我的应用程序建立连接(不,完全禁用证书验证是不是可接受的解决方案)。

我怎样才能做到这一点 ?

4

1 回答 1

0

我终于发现了问题所在:

我正在使用:

SSLContext sslContext = SSLContext.getInstance("TLS");

由于某种原因,它无法与我的仅启用 SSL 的测试烧瓶服务器一起使用。

当我将其更改为:

SSLContext sslContext = SSLContext.getInstance("SSL");

仍然不确定为什么会发生这种情况,但它显然为我解决了这个问题。

于 2013-10-23T14:34:29.193 回答