2011-04-20 191 views
91

密鑰庫是實際證書還是別名證書?瞭解密鑰庫,證書和別名

如果我使用不同的別名簽署我的應用程序,它會攪亂市場上的更新嗎?或者我是否需要用另一個密鑰庫簽署我的應用程序才能搞定?哪裏可以查看別名信息?

回答

120

通過Keytool存儲專用和公用密鑰對生成的密鑰存儲文件。存儲在密鑰庫中的每個對或條目都由唯一的別名引用。簡而言之:

密鑰倉庫項=私有+公共密鑰 對=由一個別名

密鑰庫保護其個人密碼的每個私鑰,並保護整個密鑰倉庫與完整性鑑定一個(可能不同的)密碼。例如,當您使用Eclipse Android工具的導出簽名應用程序包選項簽署Android應用程序時,系統會要求您先選擇一個密鑰存儲庫,然後要求從該密鑰存儲庫中選擇一個別名/入口/對。爲密鑰庫和所選別名提供密碼後,應用程序將被簽名,並且該別名的公鑰(證書)將嵌入到APK中。

現在回答你的問題,你只能發佈一個更新,是由具有相同的別名再次登錄更新與別名「foo」簽名的應用程序。丟失存儲別名的密鑰庫會阻止您發佈應用的更新版本。

然而有簽訂了新別名的應用程序的方式,但它涉及克隆使用密鑰庫中現有的別名keytool -keyclone

創建一個新的密鑰倉庫項,其中 具有相同私鑰和 證書鏈作爲原始 條目。

原始條目由 別名標識(如果未提供 ,則默認爲「mykey」)。新的(目標) 條目由dest_alias標識。如果沒有 目標別名在 提供的命令行,則提示用戶 它。

如果私鑰密碼是 從密鑰庫密碼不同, 則該條目將僅 有效的keypass提供克隆。這是 用於保護與別名關聯的私鑰的密碼。如果 在 命令行中沒有提供密鑰密碼,並且私鑰 密碼與 密鑰存儲區密碼不同,則用戶需要 提示輸入該密碼。在 複製項的私鑰可以與 來保護不同的密碼,如果需要的話。如果 在 命令行中沒有提供新的選項,則會提示用戶輸入 新條目的密碼(並且可能 選擇讓它與 克隆條目的私鑰相同)。

的更多信息:

http://download.oracle.com/javase/1.5.0/docs/tooldocs/solaris/keytool.html

http://developer.android.com/guide/publishing/app-signing.html

+3

的開發站點建議使用所有的應用程序相同的證書。那麼這是否意味着,只要我使用相同的密鑰庫,我可以使用任何帶有任何密碼的別名,並且不會搞亂更新,因爲它只是一個參考?實際的密鑰庫是重要的部分? – Roger 2011-04-20 02:39:09

+1

我重寫了我的答案,以便更準確。簡而言之,您必須確實使用相同的別名來簽署應用程序的所有更新。 – 2011-04-20 02:52:11

+2

@Julio那麼最好的做法是使用相同的別名爲你想發佈的所有不同的應用程序,因爲開發網站建議?我沒有看到爲所有應用程序創建單獨別名的理由。 – 2011-08-31 00:08:20

相關問題