0
我在我的Android應用程序中執行HTTP基本驗證。然而,最近,由於在我的服務器上進行了以下更改,我一直在驗證用戶身份方面存在問題:更改Android上的HTTP基本驗證加密
「...在2010年12月31日之後,密鑰長度爲1,024位或更少的SSL證書將不夠安全。根據這些指導原則,大多數SSL證書供應商(包括GeoTrust)已經開始發行這些新的2048位密鑰。「
建議更新我的Java運行時環境。但是,看到我的應用程序在Android上的方式,我不相信這會做任何事情。因此,我的問題是這樣的:
如何更改以下代碼以使用2048位加密?這可能嗎?有沒有人有任何建議?我將不勝感激。謝謝!
DefaultHttpClient client = new DefaultHttpClient();
client.getParams().setParameter("Content-type",
"application/xml");
client.getCredentialsProvider().setCredentials(
new AuthScope(Constants.SERVER_HOST,
Constants.SERVER_PORT,
Constants.SERVER_REALM),
new UsernamePasswordCredentials(username.getText()
.toString(), password.getText().toString()));
String getURL = Constants.SERVER_URL;
HttpGet get = new HttpGet(getURL);
responseGet = client.execute(get);
堆棧跟蹤錯誤:
javax.net.ssl.SSLException: Not trusted server certificate
Caused by: java.security.cert.CertificateException:
Caused by: java.security.cert.CertPathValidatorException: TrustAnchor for CertPath not found.java.security.cert.CertPathValidatorException:
嗨尼古拉,很高興知道,謝謝。我在這裏的聯盟有點不合適。我不再能夠驗證我的用戶,並且我在原始帖子中發佈了堆棧跟蹤錯誤。正如我上面提到的,服務器管理員建議升級JRE。另一個臨時解決方法(必須每年重複一次)是手動將證書導入到信任庫中。 – littleK
發佈其證書的CA很可能不受Android的信任。由於您無法導入系統信任庫,因此您必須爲您的HttpClient設置一個自定義信任管理器,該信任管理器除了缺省設置之外還信任特定的CA證書。 SO上有很多關於這個的帖子。只是不要相信那些告訴你接受所有證書的人。 –
非常感謝您的幫助!我會查看其他帖子。 – littleK