【发布时间】:2011-08-27 03:34:26
【问题描述】:
我正在尝试在没有证书的情况下通过 SSL 端口 443 连接到我的服务器。
我收到一个错误:
javax.net.ssl.SSLException: 不受信任的服务器证书
阅读其他问题以解决问题,以下代码应该可以工作,但我仍然收到错误消息。我可能做错了什么?
HostnameVerifier hostnameVerifier = org.apache.http.conn.ssl.SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER;
DefaultHttpClient client = new DefaultHttpClient();
SchemeRegistry registry = new SchemeRegistry();
SSLSocketFactory socketFactory = SSLSocketFactory.getSocketFactory();
socketFactory.setHostnameVerifier((X509HostnameVerifier) hostnameVerifier);
registry.register(new Scheme("https", socketFactory, 443));
SingleClientConnManager mgr = new SingleClientConnManager(client.getParams(), registry);
httpclient = new DefaultHttpClient(mgr, client.getParams());
// Set verifier
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
HttpGet httpget = new HttpGet(this.requestedURL);
httpget.addHeader(new BasicScheme().authenticate(creds, httpget));
try
{
response = httpclient.execute(httpget);
}
catch(java.lang.Throwable t) {}
【问题讨论】:
-
在 Stack Overflow 上查看此答案:stackoverflow.com/questions/995514/…
-
如果我没记错的话,您正在尝试从 Java 代码连接到服务器 URL。如果是这样,您是否使用自签名证书?或者您是否有第三方生成的证书,例如 versign、godaddy?我在您的代码中没有看到任何与根证书相关的内容,您的密钥库中有根证书吗?
-
St3fan:这个例子没有.execute那么远。所以,无论如何我都尝试了,它仍然失败。我复制了它,粘贴了它,并在代码之后添加了执行。仍然失败。
-
看过这篇文章。对于 HTTPS over 443 Click here,这是一个很好的答案