2013-05-03 77 views
2

我們爲iOS和Android開發了一個應用程序,通過REST調用與服務器進行通信。爲了讓用戶能夠第一次登錄應用程序,他們必須首先下載服務器的SSL證書(通過瀏覽器上的https連接或使用openssl,以DER格式下載),然後手動將證書加載到文件夾中(通過將設備連接到計算機並訪問其存儲設備)。該應用程序在登錄時將檢查該文件夾,如果正確的證書在該用戶將能夠登錄...任何後續登錄,用戶將不必再次加載證書。將SSL服務器證書下載到iOS/Android應用程序

現在我想知道是否有辦法自動化我上面概述的手動過程?這是一個非常繁瑣的過程,特別是對於移動應用程序。

例如,連接到服務器並直接下載證書到設備......但這種方法有安全隱患?

感謝

回答

0

試試這個

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); 
      // defaultHttpClient 
      DefaultHttpClient httpClient = new DefaultHttpClient(mgr, 
        client.getParams()); 
      HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier); 
+0

你好,抱歉,但你可以去在這個短暫什麼這個代碼是幹什麼的?此外,這種方法是否存在安全問題? – 2013-05-07 01:17:15

+0

通過使用它,它會通過你的SSL證書錯誤 – stackoverflow 2013-05-07 04:14:59

+0

對不起,我不認爲這是我想要的。我特別要求的是以某種方式獲取服務器的自簽名證書並以編程方式將其加載到電話上,而用戶不必手動執行它們。我想你所發佈的內容將在此步驟後有用 – 2013-05-08 23:54:36

相關問題