簡體   English   中英

通過沒有證書的SSL連接

[英]connect over ssl without certificate

我正在嘗試通過沒有證書的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) {}

您的客戶端信任庫不信任服務器證書。 它可能是自簽名證書,因此您需要將其導入到客戶信任庫中。 或者讓它由CA簽名。 忽略服務器證書是不安全的,您也可能根本不使用HTTPS。

在嘗試了所有其他解決方案之后,android 2.2 +需要特殊代碼。 這工作

自定義SSL處理停止在Android 2.2 FroYo上運行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM