我正在開發支持網絡的android應用程序,該應用程序使用SSL客戶端證書對我的服務器進行身份驗證和安全連接。如何以及使用何種服務器證書與Android SSL客戶端證書身份驗證
我有兩個問題:(1)我應該使用自簽名服務器證書還是商業證書? (2)我應該將服務器證書包含在用戶安裝的apk文件中,還是應該將應用程序連接到我的服務器以通過網絡獲取服務器證書(以使設備信任服務器證書)?
當我問我該「應該」做什麼時,我在問每個選擇有哪些好處和壞處?
現在我正在使用包含在apk文件中的自簽名證書。當用戶第一次運行應用程序時,它會將包含的自簽名證書讀取到信任存儲中,以便設備無需投訴即可連接到我的服務器。我想如果我使用商業證書,那麼我的問題#2可能會變得沒有實際意義,因爲設備可能信任來自服務器的證書而沒有問題。
一個更可能相關的細節:這個應用程序不是通過安卓市場發佈。用戶將從我的服務器上下載應用程序,這樣我可以包含任何我想要的服務器證書,如果需要的話,還可以爲每個用戶提供不同的服務器證書。
我對我的兩個問題的每個可能答案的各種優點和缺點有自己的想法,但我對其他人 - 希望安全意識 - 在這個問題上不得不說的話感興趣。
提前致謝!
+1,因爲我面臨類似的問題。你最終走向了什麼方向? – 2012-03-23 15:09:41
我選擇了自簽名證書,原因如下:(1)商業證書的好處是瀏覽器識別。我的android應用程序是我創建的,所以我可以包含任何我想要的根證書,因此使用商業證書並不會帶來任何邊緣優勢。另一方面,(2)商業證書帶來了風險,因爲現在我不僅容易受到攻擊我的安全,而且容易受到證書頒發機構的攻擊。如果CA遭到黑客攻擊,丟失私鑰或被欺騙發佈帶有域名的服務器證書,我可能會受到影響。機會渺茫,但爲什麼要拿?最後但並非最不重要的(3)錢。 – 2013-04-06 10:54:57