2011-07-27 189 views
100

這是一個普遍的問題,但我特別感興趣的是它用於Android。什麼是密鑰庫文件,它用於什麼?什麼是Android密鑰庫文件,它的用途是什麼?

多個Android應用程序可以使用相同的密鑰庫來簽署他們的應用程序(究竟是什麼意思「簽署」.apk?),這有什麼含義?

+0

你似乎在混淆兩個主題。首先是密鑰庫,其次是APK簽名。另請參閱Nikolay Elenkov的[Android安全內幕:Android安全架構深入指南](https://www.amazon.com/dp/1593275811)。 – jww

回答

105

我會提供的答案是一個密鑰庫文件是要向任何詢問的人進行身份驗證。它不僅限於簽署.apk文件,您可以使用它來存儲個人證書,簽名要傳輸的數據以及各種身份驗證。

根據您對Android的操作以及自從您提及簽名apk之後所尋找的內容,它是您的證書。您正在使用憑證標記您的應用程序。您可以使用相同的密鑰標記多個應用程序,實際上,建議您使用一個證書來標記您編寫的多個應用程序。跟蹤哪些應用程序屬於您更容易。

我不確定您的含義是什麼。我想這意味着除證書持有者外,沒有人可以更新您的申請。這意味着,如果您將它放到無人機中,丟失用於簽署應用程序的證書,則無法發佈更新,因此請保證證書安全並在需要時進行備份。

但除了簽署apks釋放到野外,您可以使用它來通過SSL驗證您的設備到服務器,如果你願意,(也是與Android相關的)和其他功能。

+26

我愛你的術語「釋放到野外」 – bluezald

+2

非常好的答案。此處還應該注意,如果要在應用程序中使用「推送數據」,則需要密鑰存儲文件! – KapteinMarshall

+0

Keystore機器是否特定?或者我們可以在任何機器上使用它來更新我們的應用程序? – Yawar

0

keytool的整個想法是用一個唯一的標識符來簽署你的apk,然後將該apk的源代碼傳遞給它。一個密鑰庫文件(根據我的理解)用於調試,所以你的apk有一個keytool的功能,而無需簽名你的apk文件。所以是的,爲了調試的目的,你應該能夠用一個密鑰庫簽署多個apk,但是在推送到產品時需要理解你需要唯一的keytools作爲每個apk的標識符。

+0

無需在模擬器或實際設備上簽名應用程序即可對其進行調試。 – Marcus

+0

我並不是說你必須簽署它才能調試它......但是你可以使用keystore作爲你的keytool的測試實現。 –

+0

我不認爲'keytool'就是你的意思。 keytool是一個用於生成密鑰庫的java程序。 – Otra

7

你可以在官方找到更多關於簽名過程的信息Android文檔:http://developer.android.com/guide/publishing/app-signing.html

是的,您可以使用相同的密鑰庫簽署多個應用程序。但是您必須記住一件重要的事情:如果您在Play商店中發佈應用,則必須使用非調試證書對其進行簽名。如果有一天你想發佈這個應用程序的更新,用於簽署apk的密鑰庫必須是相同的。否則,您將無法發佈更新。

14

Android Market要求您使用公鑰/私鑰機制(證書是使用您的私鑰簽名的)簽署所有使用證書發佈的應用程序。這提供了一個安全層,可以防止遠程攻擊者將惡意更新推向市場(所有更新都必須使用相同密鑰進行簽名)。

從Android開發者網站的App-Signing Guide

一般來說,所有開發人員的建議的策略是簽署所有應用程序使用同一證書,整個應用程序的預期壽命。有幾個原因,你應該這樣做......

使用相同的密鑰有幾個好處 - 其中之一是,它更容易共享使用相同的密鑰簽名的應用程序之間的數據。另一個原因是它允許使用相同密鑰簽署的多個應用程序在同一個進程中運行,因此開發人員可以構建更多「模塊化」應用程序。

相關問題