使用用户可信凭据进行HTTPS连接

时间:2013-10-23 08:45:44

标签: java android https certificate x509

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

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

现在,我在设备上下载了CA证书,并将其导入用户“可信凭证”设置页面。它出现(在“用户”选项卡下),我可以点击它,看到它有预期的细节。

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

  

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

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

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

我无法理解这里发生的事情。

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

我该怎么做?

1 个答案:

答案 0 :(得分:0)

我终于找到了错误:

我正在使用:

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

由于某些原因,无法使用我的测试版仅支持SSL的服务器。

当我将其更改为:

时,情况会好转
SSLContext sslContext = SSLContext.getInstance("SSL");

仍然不确定为什么会这样,但它显然为我解决了。