ADT 使用 Java 加密体系结构 (JCA) 访问对 AIR 应用程序签名所使用的私钥和证书。签名选项标识 keystore 以及该 keystore 中的私钥和证书。
keystore 必须包含私钥和关联的证书链。如果签名证书链接到某计算机上的受信任证书,则在“AIR 安装”对话框中,证书公用名字段的内容会显示为发布者名称。
AIR 签名选项语法
签名选项使用以下语法(在单个命令行上):
-alias aliasName
-storetype type
-keystore path
-storepass password1
-keypass password2
-providerName className
-tsa url
-alias
keystore 中的密钥的别名。当 keystore 仅包含一个证书时,则不必指定别名。如果未指定任何别名,ADT 则使用 keystore 中的第一个密钥。
并非所有 keystore 管理应用程序都允许向证书分配别名。例如,当使用 Windows 系统 keystore 时,则使用证书的识别名称作为别名。使用 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 中,Keychain 中的证书别名与在 Keychain Access 应用程序中显示的名称相同。
-storetype
keystore 的类型,由 keystore 实现确定。大多数 Java 安装随附的默认 keystore 实现支持
JKS
和
PKCS12
类型。Java 5.0 包含对
PKCS11
类型和
Keychain
类型的支持,前者用于访问硬件标记中的 keystore,后者用于访问 Mac OS X keychain。Java 6.0 包含对
MSCAPI
类型的支持(在 Windows 中)。如果安装和配置了其他 JCA 提供程序,则可能还可以使用其他 keystore 类型。如果未指定任何 keystore 类型,则使用默认 JCA 提供程序的默认类型。
存储类型
|
Keystore 格式
|
最低 Java 版本
|
JKS
|
Java keystore 文件 (.keystore)
|
1.2
|
PKCS12
|
PKCS12 文件(.p12 或 .pfx)
|
1.4
|
PKCS11
|
硬件标记
|
1.5
|
KeychainStore
|
Mac OS X Keychain
|
1.5
|
Windows-MY 或 Windows-ROOT
|
MSCAPI
|
1.6
|
-keystore
基于文件的存储类型的 keystore 文件路径。
-storepass
访问 keystore 所需的密码。如果未指定密码,ADT 将提示您输入密码。
-keypass
访问用于对 AIR 应用程序签名的私钥所需的密码。如果未指定密码,ADT 将提示您输入密码。
注:
如果您输入密码作为 ADT 命令的一部分,则密码字符会保存在命令行历史记录中。因此,当证书的安全性很重要时,建议您不要使用 -keypass 或 -storepass 选项。另请注意,当忽略密码选项时,不会显示在密码提示处键入的字符(由于相同的安全性原因)。只需键入密码并按 Enter 键即可。
-providerName
指定的 keystore 类型的 JCA 提供程序。如果未指定提供程序,ADT 将使用该 keystore 类型的默认提供程序。
-tsa
指定符合
RFC3161
的时间戳服务器的 URL,以便对数字签名创建时间戳。如果未指定任何 URL,则使用 Geotrust 提供的默认时间戳服务器。对 AIR 应用程序签名设置时间戳时,仍可以在签名证书过期之后安装该应用程序,这是因为时间戳验证该证书在签名时是否有效。
如果 ADT 无法连接到时间戳服务器,则取消签名,并且不会生成任何包。指定
-
tsa none
可以禁用时间戳设置功能。但是,对于打包的没有时间戳的 AIR 应用程序,该应用程序将在签名证书过期后停止安装。
注:
许多签名选项与 Java Keytool 实用程序的相同选项具有同等的效用。您可以使用 Keytool 实用程序在 Windows 中检查和管理 keystore。也可以在 Mac OS X 上使用 Apple® 安全实用程序实现此目的。
-provisioning-profile
Apple iOS 供给文件。(只有在打包 iOS 应用程序时才需要指定此参数。)
签名选项示例
使用 .p12 文件签名:
-storetype pkcs12 -keystore cert.p12
使用默认 Java keystore 签名:
-alias AIRcert -storetype jks
使用特定 Java keystore 签名:
-alias AIRcert -storetype jks -keystore certStore.keystore
使用 Mac OS X keychain 签名:
-alias AIRcert -storetype KeychainStore -providerName Apple
使用 Windows 系统 keystore 签名:
-alias cn=AIRCert -storeype Windows-MY
使用硬件标签签名(请参考标记制造商提供的 Java 配置相关说明,以便使用该标记并获取正确的
providerName
值):
-alias AIRCert -storetype pkcs11 -providerName tokenProviderName
在不嵌入时间戳的情况下签名:
-storetype pkcs12 -keystore cert.p12 -tsa none