2010-07-16 52 views
8

我有一個自簽名服務器證書(cert.pem),需要爲Android應用程序中的SSL套接字啓用它。理想情況下,我想將代碼打包爲.jar文件,而不需要外部證書文件(即將其包含在代碼中)。如何在Android上爲SSL套接字啓用自簽名證書?

有了這個代碼,我可以接受所有證書,這是不是我想要的:

SSLContext sc = SSLContext.getInstance("TLS"); 
sc.init(null, new TrustManager [] { new MyTrustManager() }, new SecureRandom()); 

我需要的證書添加到自定義的KeyManager或定製的TrustManager?我遇到

一個問題是,Android不接受JKS密鑰(KeyStore.getDefaultType()返回 「BKS」): 「 java.security.KeyStoreException:密鑰庫JKS實施找不到

任何想法如何進行將高度讚賞!

回答

13

是的,您需要將證書添加到自定義KeyStore。它基本上是一個4步過程:

  1. 獲取您的服務器證書。
  2. 將服務器證書作爲應用程序中的原始資源導入密鑰庫。 KeyStore類型必須是BKS。
  3. 在您的Java/Android程序中創建您自己的TrustManager以將證書加載到SSLContext中。
  4. 將SSLContext用於您的SSL連接。

請參閱此鏈接的詳細說明和示例代碼:
http://randomizedsort.blogspot.com/2010/09/step-to-step-guide-to-programming.html

好運。
Nehc