我正在编写一个Android应用程序,需要与我网络中的某个Web服务器进行HTTPS连接。
此Web服务器具有由自定义证书颁发机构签名的服务器证书,因此很明显,尝试简单连接失败,因为在设备尝试建立连接时不知道CA:足够公平。
现在,我在设备上下载了CA证书,并将其导入用户“可信凭证”设置页面。它出现(在“用户”选项卡下),我可以点击它,看到它有预期的细节。
但是,设备在执行HTTPS连接时似乎忽略了这个新的CA证书,并且我在连接时遇到了完全相同的错误:
未找到证书路径的信任锚。
如果我尝试使用设备上的Chrome浏览服务器,则会发生同样的情况。我被告知“这个网站的安全证书存在问题”。
我使用openssl verify
测试了我的认证链,一切似乎都很好。
我无法理解这里发生的事情。
我无法在浏览器中打开Web服务器页面,但我希望至少能够使用用户“受信任的凭据”列表从我的应用程序建立连接(并且不,禁用证书验证完全是不可接受的解决方案。)
我该怎么做?
答案 0 :(得分:0)
我终于找到了错误:
我正在使用:
SSLContext sslContext = SSLContext.getInstance("TLS");
由于某些原因,无法使用我的测试版仅支持SSL的服务器。
当我将其更改为:
时,情况会好转SSLContext sslContext = SSLContext.getInstance("SSL");
仍然不确定为什么会这样,但它显然为我解决了。