2015-10-15 71 views
2

我正在慢慢討論Android應用程序簽名的主題,但是我瞭解的每一步都只會導致進一步的問題。什麼我迄今瞭解(我要指出,我的最終目標是實現自動化的PhoneGap構建了一個無頭Ubuntu的服務器上,所以我下面寫的一切使用PhoneGap的CLI)瞭解Android應用程序認證

密鑰庫是公私密鑰對的序列每個用自己的密碼保護。整個密鑰庫也有自己的密碼。 公開密鑰IS證書嵌入到APK中。一個可以檢查的APK使用的證書如下

  • 解壓APK(這是​​所有的ZIP檔案後)
  • 抓住META-INF/CERT.DSA文件
  • 的keytool -list -file /path/to/CERT.DSA顯示證書指紋。

生成公私密鑰對很容易。它甚至可以通過發出一個簡單的

echo y | keytool -genkeypair -dname "cn=com.example, ou=OrgUnitName, o=Org Name, c=US" -alias ANY -keypass aliasPwd -keystore /path/to/keystore -storepass keyStorePwd -validity days 

自動化我建了一個釋放 APK使用的PhoneGap,通過短信發送給自己的一個鏈接,donwloaded然後安裝APK。我的手機給了我幾個警告,但然後安裝了我的APK。涼!。

但這讓我想知道....我creaed第二別名

echo y | keytool -genkeypair -dname "cn=com.microsoft, ou=Microsoft Mobile, o=Microsoft, c=US" -alias msft -keypass msftPwd -keystore /path/to/keystore -storepass keyStorePwd -validity 9999 

我重建了APK這次與微軟的別名,送自己一個鏈接,然後下載並安裝它(我在這裏跳過一些安裝細節)。我的Android手機再次給了我幾個警告,但似乎並不過分擔心我的聲稱是微軟。

我不明白。從我在Android世界讀到的內容來看,通常使用自簽名證書。所以我有完全的自由來僞裝成microsoft.com或其他任何人?

Android Developer docs狀態

你應該籤所有的應用程序同一證書的整個應用程序的預期壽命。

那麼如果有一天我將其中一個應用程序的權利出售給其他人,會發生什麼?那要麼迫使買家重新開始新的Android應用程序,否則我將不得不向他們出售所有東西,而不僅僅是一個應用程序?

顯然,以上所有都是有效處理的漏洞。然而,我不清楚與他們打交道的措施可能是什麼。我會非常感謝任何能夠解釋我的理解和推理存在缺陷的人。

回答

1

因此,我有完全的自由僞裝成microsoft.com或任何其他人嗎?

這是一個自簽名證書。在生成證書時,沒有人關注您使用的值,更不用說相信他們了。

Android開發人員文檔狀態:「您應該在應用程序的整個預期使用期限內爲您的所有應用程序簽署相同的證書。」

正如措辭,我不同意這種評估。每個應用程序需要在每個應用程序的預期生命週期內由相同的證書籤名。多個應用程序是否由同一個證書籤署是一個商業決策,與技術一樣多。

那麼如果有一天我將其中一個應用程序的權利出售給其他人,會發生什麼?

恩,耶?

這將不會有效地迫使買家重新開始新的Android應用程序,否則我會被迫向他們出售所有東西,而不僅僅是一個應用程序?

這就是爲什麼,如果您預計這可能是您想要做的事情,那麼您將爲每個應用程序使用單獨的證書。例如,顧問必須爲每個應用程序(或每個客戶至少一個)執行一個證書。相反,如果您正在構建一套應用程序,您需要特別安全地進行通信,那麼您可以考慮對套件中的所有應用程序使用單一證書。商業上的分歧是你需要在整個套件中出售權利。

+0

好的。但那麼安全在哪裏?在瀏覽器世界中,人們依賴於能夠將SSL證書跟蹤到可以信任的已知CA.總的來說,瀏覽器充當看門狗並提醒用戶潛在的風險。 '自簽名證書。沒人注意,但是誰保護了倒黴手機用戶的利益? – DroidOS

+1

@DroidOS:自簽名證書有兩種平臺用途。首先,平臺可以確定應用程序A和應用程序B是否與證書一起簽名,在這種情況下,他們將有更多的合作機會,而不是由不同證書籤署的兩個應用程序(因此可能來自不同的開發人員)。其次,平臺(如果App A由簽署*平臺本身*的相同證書籤署),在這種情況下,App A可以擁有普通應用無法獲得的某些權限(例如重啓設備)。 – CommonsWare

+1

@DroidOS:應用程序還可以檢查另一個應用程序的證書的公鑰部分,主要看它是否與已知值相匹配。否則,這些自簽名證書中的安全性與任何使用自簽名證書時的安全性差不多。例如,對於Web,自簽名證書對於啓用SSL加密非常有用,但對建立真實世界的身份或與某些域的關係沒有用處,這就是爲什麼瀏覽器警告用戶,然後遇到此類證書的原因。 – CommonsWare