2011-08-16 52 views
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: 

回答

2

你不知道。該代碼與加密無關。服務器的管理員負責將其更新爲使用更長的密鑰(2048位)。你只需要測試你的應用程序在更新後仍然有效(看起來沒有)。究竟是什麼問題?無法連接?你得到什麼錯誤(堆棧跟蹤)?

+0

嗨尼古拉,很高興知道,謝謝。我在這裏的聯盟有點不合適。我不再能夠驗證我的用戶,並且我在原始帖子中發佈了堆棧跟蹤錯誤。正如我上面提到的,服務器管理員建議升級JRE。另一個臨時解決方法(必須每年重複一次)是手動將證書導入到信任庫中。 – littleK

+0

發佈其證書的CA很可能不受Android的信任。由於您無法導入系統信任庫,因此您必須爲您的HttpClient設置一個自定義信任管理器,該信任管理器除了缺省設置之外還信任特定的CA證書。 SO上有很多關於這個的帖子。只是不要相信那些告訴你接受所有證書的人。 –

+0

非常感謝您的幫助!我會查看其他帖子。 – littleK