Java 使用用户信任的凭据进行HTTPS连接

Java 使用用户信任的凭据进行HTTPS连接,java,android,https,certificate,x509,Java,Android,Https,Certificate,X509,我正在编写一个Android应用程序,它需要执行到我网络中某个web服务器的HTTPS连接 此web服务器有一个由自定义证书颁发机构签名的服务器证书,显然,尝试简单连接失败,因为在设备尝试建立连接时CA未知:足够公平 现在,我在设备上下载了CA证书,并将其导入用户“受信任凭据”设置页面。它出现了(在“用户”选项卡下),我可以点击它,看到它有预期的详细信息 但是,当设备执行HTTPS连接时,这个新的CA证书似乎被忽略了,我在连接时遇到了与以前完全相同的错误: 找不到证书路径的信任锚点 如果我尝试在

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

此web服务器有一个由自定义证书颁发机构签名的服务器证书,显然,尝试简单连接失败,因为在设备尝试建立连接时CA未知:足够公平

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

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

找不到证书路径的信任锚点

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

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

我无法理解这里发生了什么

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


我该怎么做呢?

我终于找到了问题所在:

我使用的是:

SSLContext sslContext = SSLContext.getInstance("TLS");
由于某些原因,它无法与我的仅启用SSL的服务器一起使用

当我把它改为:

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

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

你不能将其视为自签名证书吗?@user2310289:将其视为相同的。。。什么?