ADT コード署名のオプション

ADT では、Java Cryptography Architecture(JCA)を利用して、AIR アプリケーションへの署名に使用する秘密キーと証明書にアクセスします。署名オプションによって、キーストアおよびそのキーストア内の秘密キーと証明書を特定します。

キーストアには、秘密キーおよび関連付けられた証明書チェーンが含まれている必要があります。署名証明書がコンピューター上の信頼できる証明書にチェーン化されると、証明書の共通名フィールドの内容が発行者名として AIR インストールダイアログに表示されます。

ADT では、証明書が x509v3 標準(RFC3280)に準拠し、コード署名の適切な値を持つ鍵用途拡張が証明書に含まれている必要があります。この証明書内で定義されている制約が優先され、AIR アプリケーションへの署名に一部の証明書が使用できなくなる場合があります。

注意: ADT では、インターネットリソースに接続して証明書の失効リストの確認およびタイムスタンプの取得を行うために、適切であれば、Java ランタイム環境のプロキシ設定を使用します。ADT の使用時にインターネットリソースへの接続の問題が発生し、特定のプロキシ設定がネットワークに必要な場合、JRE プロキシ設定の構成が必要になることがあります。

AIR 署名オプションの構文

署名オプションでは、次の構文を使用します。

-alias aliasName -storetype type -keystore path -storepass password1 -keypass password2 -providerName className -tsa url

-alias:キーストア内にあるキーのエイリアスです。キーストアに含まれている証明書が 1 つだけの場合、エイリアスを指定する必要はありません。エイリアスを指定しない場合、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 では、Keychain での証明書のエイリアスは、Keychain Access アプリケーションに表示される名前です。

-storetype:キーストアのタイプです。キーストアの実装によって決まります。Java のほとんどのインストールに付属しているデフォルトのキーストア実装では、JKS タイプおよび PKCS12 タイプがサポートされています。Java 5.0 には、ハードウェアトークンのキーストアにアクセスするための PKCS11 タイプと、Mac OS X Keychain にアクセスするための Keychain タイプのサポートが含まれています。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 Keychain

1.5

Windows-MY または Windows-ROOT

MSCAPI

1.6

-keystore:ファイルベースのストアタイプのキーストアファイルへのパスです。

-storepass:キーストアへのアクセスに必要なパスワードです。指定しない場合、パスワードの入力を求めるプロンプトが表示されます。

-keypass:AIR アプリケーションへの署名に使用する秘密キーへのアクセスに必要なパスワードです。指定しない場合、パスワードの入力を求めるプロンプトが表示されます。

注意: 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 Keychain を使用した署名

-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