2012-07-09 18 views
5

我.key文件,如: ----- BEGIN RSA私鑰----- MIIEpAIBAAKCAQEA1j6eGXbHpqigZ1K // wnuyr5v/L2jFm7dzTtHJx8ZoMQ4CbsG如何使用.key和.pem文件在Android中創建套接字SSL?

我的.pem文件,如: ----- BEGIN CERTIFICATE-- --- MIIE4zCCA8ugAwIBAgIDBOziMA0GCSqGSIb3DQEBBQUAMDwxCzAJBgNVBAYTAlVT

我不知道有多少身份驗證的步驟在這裏。我只想創建一個到IP和端口的ssl套接字,並在該套接字中發送/接收數據。 我試圖使用keystock,但也許我不明白它,我總是錯了。

請給我一個指南,或示例代碼。

非常感謝。

回答

0

創建SSL連接時,您只需要該套接字即可與服務器建立連接,並將其作爲可信來源。爲此,您需要獲得X509格式的SSL證書,然後按照this article中的說明創建連接。

這是a guide on generating X.509 certificates

+0

鏈接的文章是關於設置Android信任存儲,而不是HTTPS客戶端身份驗證的密鑰存儲區,因此它的使用是有限的。此外,OP不需要生成(客戶端)證書,因爲他已經有.key和.pem文件。 – Robert 2012-07-09 09:01:00

9

我假定.key.pem文件表示您必須用於執行HTTPS客戶端身份驗證的客戶端證書。不幸的是,Java/Android更喜歡不同的格式,因此我建議您將這兩個文件導入BKS文件。

創建BKS文件並導入現有的.key + .pem文件非常簡單,使用Portecle GUI。啓動Portecle後,請選擇文件 - >新密鑰庫 - > BKS。之後,您可以執行工具 - >導入密鑰對並選擇.pem文件。之後Portecle會要求您選擇.key文件。

最後保存用您選擇的密碼保護的密鑰存儲區。

創建的BKS文件現在可以在您的Android應用程序中使用。例如,請參閱此問題中發佈的代碼:Using client/server certificates for two way authentication SSL socket on Android

更新2015-06-30:上述說明僅適用於Portecle 1.6及之前版本。使用1.7和1.8版本,您無法創建與Android兼容的密鑰庫。在Portecle 1.9中,改用BKS-V1的格式。

+0

這是很好的鏈接。但是我在一個線程中創建了所有的東西,並且得到錯誤:android.os.NetworkOnMainThreadException。我們是否需要爲它創建線程? – Brave 2012-07-11 18:38:33

+0

在Portecle 1.9中(不知道其他版本)你的'.key'文件*必須受密碼保護*,否則Portecle會告訴你該密鑰無效。 – 2016-08-11 21:27:49

相關問題