ADT 會使用 Java 密碼架構 (JCA) 存取用於簽署 AIR 應用程式的私密金鑰和憑證。這些簽署選項會識別金鑰儲存,以及金鑰儲存中的私密金鑰和憑證。
金鑰儲存必須包含私密金鑰和相關的憑證鍊結。如果簽署憑證鏈結至電腦上受信任的憑證,則憑證的一般名稱欄位內容就會以發行者名稱的形式顯示在 AIR 安裝對話方塊中。
AIR 簽署選項語法
簽署選項使用下列語法 (在單一命令列上):
-alias aliasName
-storetype type
-keystore path
-storepass password1
-keypass password2
-providerName className
-tsa url
-alias
:金鑰儲存中金鑰的別名。如果金鑰儲存中只包含一個憑證,就不需要指定別名。如果未指定別名,ADT 就會使用金鑰儲存中的第一個金鑰。
並非所有的金鑰儲存管理應用程式都允許將別名指定給憑證。例如,使用 Windows 系統金鑰存放區時,請使用憑證的辨別名稱做為別名。您可以使用 Java Keytool 公用程式列出可用的憑證,如此即可決定別名。例如,您可以執行下列命令:
keytool -list -storetype Windows-MY
便會產生憑證的下列輸出:
CN=TestingCert,OU=QE,O=Adobe,C=US, PrivateKeyEntry,
Certificate fingerprint (MD5): 73:D5:21:E9:8A:28:0A:AB:FD:1D:11:EA:BB:A7:55:88
若要在 ADT 命令列參考這個憑證,請將別名設定為:
CN=TestingCert,OU=QE,O=Adobe,C=US
在 Mac OS X 中,「鑰匙圈」內憑證的別名就是「鑰匙圈存取」應用程式中顯示的名稱。
-storetype
:金鑰儲存的類型,由金鑰儲存實作決定。大部分情況下,在安裝 Java 時一併安裝的預設金鑰儲存實作可支援
JKS
和
PKCS12
類型。Java 5.0 包含對
PKCS11
類型的支援 (可用於存取硬體字符上的金鑰儲存) 和對
Keychain
類型的支援 (可用於存取 Mac OS X 鑰匙圈)。Java 6.0 包含對
MSCAPI
類型 (適用於 Windows) 的支援。如果已經安裝並設定其它 JCA 提供者,那麼也可以使用其它金鑰儲存類型。如果未指定金鑰儲存類型,則會使用預設 JCA 提供者的預設類型。
儲存類型
|
金鑰儲存格式
|
最小 Java 版本
|
JKS
|
Java 金鑰儲存檔 (.keystore)
|
1.2
|
PKCS12
|
PKCS12 檔 (.p12 或 .pfx)
|
1.4
|
PKCS11
|
硬體字符
|
1.5
|
KeychainStore
|
Mac OS X 鑰匙圈
|
1.5
|
Windows-MY 或 Windows-ROOT
|
MSCAPI
|
1.6
|
-keystore
:檔案架構儲存類型的金鑰儲存檔案路徑。
-storepass
:存取金鑰儲存所需的密碼。如果未指定,ADT 就會提示您輸入密碼。
-keypass
:存取用來簽署 AIR 應用程式之私密金鑰時所需的密碼。如果未指定,ADT 就會提示您輸入密碼。
備註:
如果您將密碼輸入做為 ADT 命令的一部分,則密碼字元便會儲存在命令列記錄中。因此,當憑證的安全性很重要時,不建議您使用 -keypass 或 -storepass 選項。另外請注意,當您省略密碼選項時,便不會顯示在密碼提示時所輸入的字元 (基於相同的安全性考量)。只要輸入密碼並按 Enter 鍵即可。
-providerName
:指定之金鑰儲存類型的 JCA 提供者。如果未指定,ADT 就會根據該類型的金鑰儲存,使用預設的提供者。
-tsa
:指定符合
RFC3161
之時間戳記伺服器的 URL,以便為數位簽名加上時間戳記。如果未指定 URL,則會使用 Geotrust 提供的預設時間戳記伺服器。AIR 應用程式的簽名在加上時間戳記之後,即使簽署憑證過期,仍然可以安裝應用程式,因為時間戳記已經確認當初簽署的憑證有效。
如果 ADT 無法連接至時間戳記伺服器,簽署作業就會取消,並且不會產生套件。指定
-
tsa none
即可停用時間戳記功能。但是,如果 AIR 應用程式在封裝時沒有加上時間戳記,則簽署憑證過期之後就無法安裝應用程式。
備註:
許多的簽署選項與 Java Keytool 公用程式的選項相同。您可以使用 Keytool 公用程式,檢查及管理 Windows 中的金鑰儲存。在 Mac OS X 中,您也可以使用 Apple® 安全性公用程式來達到上述目的。
-provisioning-profile
:Apple iOS 佈建檔案(僅封裝 iOS 應用程式時需要)。
簽署選項範例
使用 .p12 檔案進行簽署:
-storetype pkcs12 -keystore cert.p12
使用預設的 Java 金鑰儲存進行簽署:
-alias AIRcert -storetype jks
使用特定的 Java 金鑰儲存進行簽署:
-alias AIRcert -storetype jks -keystore certStore.keystore
使用 Mac OS X 鑰匙圈進行簽署:
-alias AIRcert -storetype KeychainStore -providerName Apple
使用 Windows 系統金鑰儲存進行簽署:
-alias cn=AIRCert -storeype Windows-MY
使用硬體字符進行簽署 (請參考字符廠商關於設定 Java 的指示以使用字符及提供正確的
providerName
值):
-alias AIRCert -storetype pkcs11 -providerName tokenProviderName
在沒有內嵌時間戳記的情況下進行簽署:
-storetype pkcs12 -keystore cert.p12 -tsa none