我正在尝试连接到运行GoDady256bitSSL证书的IIS6机器,但收到错误消息:
java.security.cert.CertPathValidatorException: Trust anchor for certification path not found.
一直在努力找出可能的原因,但现在什么都没查到。
下面是我是如何连接的:
HttpsURLConnection conn;
conn = (HttpsURLConnection) (new URL(mURL)).openConnection();
conn.setConnectTimeout(20000);
conn.setDoInput(true);
conn.setDoOutput(true);
conn.connect();
String tempString = toString(conn.getInputStream());
发布于 2016-10-06 05:01:58
您可以在运行时信任特定的证书。
只需从服务器下载它,放入资产,然后使用ssl-utils-android加载
OkHttpClient client = new OkHttpClient();
SSLContext sslContext = SslUtils.getSslContextForCertificateFile(context, "BPClass2RootCA-sha2.cer");
client.setSslSocketFactory(sslContext.getSocketFactory());
在上面的示例中,我使用的是OkHttpClient
,但是SSLContext
可以与Java中的任何客户端一起使用。
如果您有任何问题,请随时提出。我是这个小图书馆的作者。
发布于 2013-06-28 19:51:33
我收到的错误消息类似,但原因是自签名证书已过期。当我尝试openssl客户端时,它给了我一个原因,当我在firefox中检查证书对话框时,这个原因被忽略了。
因此,通常情况下,如果证书在密钥库中并且是“有效的”,那么这个错误就会发生。
发布于 2015-08-12 18:35:40
我也有同样的问题,我发现我提供的证书.crt文件缺少一个中间证书。所以我从我的服务器管理员那里询问了所有的.crt文件,然后以相反的顺序将它们连接起来。
例如。1. Root.crt 2. Inter.crt 3. myCrt.crt
在windows中,我执行了copy Inter.crt + Root.crt newCertificate.crt
(这里我忽略了myCrt.crt)
然后,我通过inputstream将newCertificate.crt文件转换成代码。工作完成了。
https://stackoverflow.com/questions/6825226
复制相似问题