在Android上使用Https串連

來源:互聯網
上載者:User

項目要用到,這兩天調查了一下這方面的知識。時間不多,簡單給大家匯總一下,方便生疏的朋友快點上手,縮短到搜尋引擎的大海裡面撈寶的過程。
    除了Android開發環境之外,還要準備好tomcat,我用的6.0,其他版本應該也差不多。
整體的步驟就是 1. 用keystore產生伺服器端所用的密鑰,用它設定管理員   2.用戶端匯入其中的公開金鑰,將其添加到信任的認證庫中。下面是具體的參考資料。

1.密碼學基礎(像我這樣非科班出身的需要看一下,知其然還得知其所以然)
http://www.williamlong.info/archives/499.html

2.keytool使用與tomcat配置
英文好的朋友請直接看tomcat文檔,SSL部分;
英文不好的朋友請尋找中文版文檔,或者看這篇文章:
http://www.cn-java.com/www1/?action-viewnews-itemid-3555
注意:這篇文章比較老,具體的配置寫法不能照搬,只是參考其步驟。具體的配置請找你的tomcat文檔,SSL部分。

3.android配置
如果不需要驗證伺服器端認證,直接照這裡做
http://elsila.blog.163.com/blog/static/17319715820101128832427/

如果需要驗證伺服器端認證(這樣能夠防網路釣魚),我是這樣做的,還有些問題問大牛:
    a. 匯出公開金鑰。在瀏覽器上用https訪問tomcat,查看其認證,並另存新檔一個檔案(存成了X.509格式:xxxx.cer)
    b. 匯入公開金鑰。把xxxx.cer放在Android的assets檔案夾中,以方便在運行時通過代碼讀取此認證,留了兩個問題給大牛:

  1. AssetManager am = context.getAssets();
  2. InputStream ins = am.open("robusoft.cer");
  3. try {
  4.         //讀取認證
  5.         CertificateFactory cerFactory = CertificateFactory.getInstance("X.509");  //問1
  6.         Certificate cer = cerFactory.generateCertificate(ins);
  7.         //建立一個認證庫,並將認證匯入認證庫
  8.         KeyStore keyStore = KeyStore.getInstance("PKCS12", "BC");   //問2
  9.         keyStore.load(null, null);
  10.         keyStore.setCertificateEntry("trust", cer);
  11.         return keyStore;
  12. } finally {
  13.         ins.close();
  14. }
  15. //把咱的認證庫作為信任認證庫
  16. SSLSocketFactory socketFactory = new SSLSocketFactory(keystore);
  17. Scheme sch = new Scheme("https", socketFactory, 443);
  18. //完工
  19. HttpClient mHttpClient = new DefaultHttpClient();
  20. mHttpClient.getConnectionManager().getSchemeRegistry().register(sch);

複製代碼



問1:這裡用"PKCS12"不行
問2:這裡用"JKS"不行。

其實我就是不知道這兩處到底該寫那幾個字元,其中貌似涉及了專利什麼的,不太清楚了。我也試過把認證導成其他格式,試了很久,這是第一條通的路。


感謝樓主解決了我一個很麻煩的問題,就是如何在httpclient中匯入信任認證,我也回答一下樓主的兩個問題,

問1:PKCS12和JKS是keystore的type,不是Certificate的type,所以X.509不能用PKCS12代替

問2:android平台上支援的keystore type好像只有PKCS12,不支援JKS,所以不能用JKS代替在PKCS12,不過在windows平台上是可以代替的


希望對大家有協助!



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.