我正在慢慢討論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應用程序,否則我將不得不向他們出售所有東西,而不僅僅是一個應用程序?
顯然,以上所有都是有效處理的漏洞。然而,我不清楚與他們打交道的措施可能是什麼。我會非常感謝任何能夠解釋我的理解和推理存在缺陷的人。
好的。但那麼安全在哪裏?在瀏覽器世界中,人們依賴於能夠將SSL證書跟蹤到可以信任的已知CA.總的來說,瀏覽器充當看門狗並提醒用戶潛在的風險。 '自簽名證書。沒人注意,但是誰保護了倒黴手機用戶的利益? – DroidOS
@DroidOS:自簽名證書有兩種平臺用途。首先,平臺可以確定應用程序A和應用程序B是否與證書一起簽名,在這種情況下,他們將有更多的合作機會,而不是由不同證書籤署的兩個應用程序(因此可能來自不同的開發人員)。其次,平臺(如果App A由簽署*平臺本身*的相同證書籤署),在這種情況下,App A可以擁有普通應用無法獲得的某些權限(例如重啓設備)。 – CommonsWare
@DroidOS:應用程序還可以檢查另一個應用程序的證書的公鑰部分,主要看它是否與已知值相匹配。否則,這些自簽名證書中的安全性與任何使用自簽名證書時的安全性差不多。例如,對於Web,自簽名證書對於啓用SSL加密非常有用,但對建立真實世界的身份或與某些域的關係沒有用處,這就是爲什麼瀏覽器警告用戶,然後遇到此類證書的原因。 – CommonsWare