AIR アプリケーションのアップデートバージョンの署名

既存の AIR アプリケーションのアップデートバージョンを作成するたびに、アップデートされたアプリケーションに署名します。最良のケースでは、以前のバージョンへの署名に使用した証明書で、アップデートバージョンに署名できます。その場合、署名の方法は、最初にアプリケーションに署名したときと全く同様です。

以前のバージョンのアプリケーションへの署名で使用した証明書が期限切れになり、その証明書を更新したか置き換えた場合は、その更新後の証明書または新規(置き換え後)の証明書を使用して、アップデートバージョンに署名できます。そのためには、新しい証明書を使用してアプリケーションに署名し、さらに元の証明書を使用して移行署名を適用します。移行署名によって、元の証明書所有者がアップデートを発行したことが検証されます。

移行署名の適用前に、次のポイントについて考慮してください。

  • 移行署名を適用するには、元の証明書がまだ有効であるか、有効期限が切れてから 365 日以内であることが必要です。この期間は「猶予期間」と呼ばれ、期間の長さは将来変更される可能性があります。

    注意: AIR 2.6 以前では、猶予期間は 180 日です。
  • 証明書の期限が切れており、かつ 365 日の猶予期間が過ぎた後は、移行署名を適用することはできません。その場合、アップデートバージョンをインストールするためには、既存のバージョンをアンインストールしておく必要があります。

  • 365 日の猶予期間が適用されるのは、アプリケーション記述子の名前空間に AIR のバージョン 1.5.3 以上が指定されているアプリケーションのみです。

重要: 期限の切れた証明書の移行署名を使用してアップデートに署名する方法は、一時的な解決策です。包括的な解決策を実施するために、アプリケーションアップデートのデプロイを管理する署名ワークフローを標準化してください。例えば、最新の証明書を使用して各アップデートに署名し、(適用できる場合は)以前のアップデートへの署名に使用した証明書を使用して移行証明書を適用します。その後、各アップデートを、ユーザーがアプリケーションをダウンロードするための個別の URL にアップロードします。詳しくは、アプリケーションアップデートの署名ワークフローを参照してください。

以下の表と図に、移行署名のワークフローをまとめます。

シナリオ

元の証明書の状態

開発者の対応

ユーザーの対応

Adobe AIR ランタイムバージョン 1.5.3 以降に基づいたアプリケーション

有効

AIR アプリケーションの最新バージョンを発行します。

対応は必要ありません。

アプリケーションが自動的にアップグレードを実行します。

期限切れだが 365 日の猶予期間以内

新しい証明書を使用してアプリケーションに署名します。期限切れの証明書を使用して移行署名を適用します。

対応は必要ありません。

アプリケーションが自動的にアップグレードを実行します。

期限切れ、猶予期間外

AIR アプリケーションのアップデートに移行署名を適用できません。

代わりに、新しい証明書を使用して AIR アプリケーションの異なるバージョンを発行する必要があります。ユーザーは、AIR アプリケーションの既存バージョンのアンインストール後に新しいバージョンをインストールできます。

AIR アプリケーションの現在のバージョンをアンインストールし、最新バージョンをインストールします。

  • Adobe AIR ランタイムバージョン 1.5.2 以前に基づいたアプリケーション

  • アップデートのアプリケーション記述子内にある発行者 ID は以前のバージョンの発行者 ID と一致します。

有効

AIR アプリケーションの最新バージョンを発行します。

対応は必要ありません。

アプリケーションが自動的にアップグレードを実行します。

期限切れ、猶予期間外

AIR アプリケーションのアップデートに移行署名を適用できません。

代わりに、新しい証明書を使用して AIR アプリケーションの異なるバージョンを発行する必要があります。ユーザーは、AIR アプリケーションの既存バージョンのアンインストール後に新しいバージョンをインストールできます。

AIR アプリケーションの現在のバージョンをアンインストールし、最新バージョンをインストールします。

  • Adobe AIR ランタイムバージョン 1.5.2 以前に基づいたアプリケーション

  • アップデートのアプリケーション記述子内にある発行者 ID は以前のバージョンの発行者 ID と一致しません

任意

有効な証明書を使用して AIR アプリケーションに署名し、その AIR アプリケーションの最新バージョンを発行します。

AIR アプリケーションの現在のバージョンをアンインストールし、最新バージョンをインストールします。

アップデートに対する署名ワークフロー

新しい証明書を使用するための AIR アプリケーションの移行

AIR アプリケーションのアップデート時にそのアプリケーションを最新の証明書に移行するには:

  1. アプリケーションのアップデートを作成します。

  2. アップデートの AIR ファイルをパッケージ化し、新しい証明書で署名します。

  3. 元の証明書を使用して -migrate コマンドで AIR ファイルにもう一度署名します。

-migrate コマンドを使用して署名した AIR ファイルは、古い証明書を使用して署名した以前のバージョンをアップデートするために使用するほか、そのアプリケーションの新しいバージョンをインストールするためにも使用できます。

注意: 1.5.3 よりも前のバージョンの AIR で発行されたアプリケーションをアップデートする場合は、アプリケーション記述子に元の発行者 ID を指定します。元の発行者 ID を指定しない場合、アプリケーションのユーザーは、アップデートをインストールする前に、以前のバージョンをアンインストールする必要があります。

ADT の -migrate コマンドを次のシンタックスで使用します。

adt -migrate SIGNING_OPTIONS air_file_in air_file_out
  • SIGNING_OPTIONS この署名オプションは、AIR ファイルへの署名に使用する秘密キーと証明書を特定します。このオプションでは、元の署名証明書を特定する必要があります。詳しくは、ADT コード署名のオプションを参照してください。

  • air_file_in 新しい証明書で署名されたアップデートの AIR ファイルです。

  • air_file_out 作成する AIR ファイルです。

注意: 入力 AIR ファイルと出力 AIR ファイルには、異なるファイル名を使用する必要があります。

以下の例に、ADT を -migrate フラグ付きで呼び出して、移行署名を AIR アプリケーションのアップデートバージョンに適用する方法を示します。

adt -migrate -storetype pkcs12 -keystore cert.p12 myAppIn.air myApp.air
注意: -migrate コマンドは、AIR 1.1 リリースで ADT に追加されました。

新しい証明書を使用するための AIR ネイティブインストーラーアプリケーションの移行

ネイティブインストーラーとして発行された AIR アプリケーション(例えば、ネイティブ拡張 API を使用するアプリケーション)は、ADT -migrate コマンドを使用して署名することはできません。これは、このアプリケーションは .air ファイルではなく、プラットフォーム固有のネイティブアプリケーションであるからです。そうではなく、ネイティブ拡張として発行された AIR アプリケーションを新しい証明書に移行するには、以下の手順を実行します。

  1. アプリケーションのアップデートを作成します。

  2. アプリケーション記述ファイル(app.xml)で <supportedProfiles> タグにデスクトッププロファイルと extendedDesktop プロファイルの両方が含まれていることを確認します(または、アプリケーション記述子から <supportedProfiles> タグを削除します)。

  3. ADT -package コマンドを使用し、新しい証明書を指定して、アップデートアプリケーションを .air ファイルとしてパッケージ化して署名します。

  4. ADT -migrate コマンドを使用し、元の証明書を指定して、その .air ファイルに移行証明書を適用します(詳しくは、前述の新しい証明書を使用するための AIR アプリケーションの移行を参照してください)。

  5. ADT -package コマンドを -target native フラグ付きで使用して、その .air ファイルをネイティブインストーラーにパッケージ化します。アプリケーションは既に署名済みであるので、この手順では署名証明書は指定しません。

以下の例に、このプロセスの手順 3 ~ 5 について示します。このコードは ADT -package コマンドを呼び出し、ADT -migrate コマンドを呼び出し、さらにもう一度 ADT -package コマンドを呼び出して、AIR アプリケーションのアップデートバージョンをネイティブインストーラーとしてパッケージ化します。

adt -package -storetype pkcs12 -keystore new_cert.p12 myAppUpdated.air myApp.xml myApp.swf 
adt -migrate -storetype pkcs12 -keystore original_cert.p12 myAppUpdated.air myAppMigrate.air 
adt -package -target native myApp.exe myAppMigrate.air

新しい証明書を使用するための、ネイティブ拡張を使用する AIR アプリケーションの移行

ネイティブ拡張を使用する AIR アプリケーションに、ADT -migrate コマンドを使用して署名することはできません。また、AIR ネイティブインストーラーアプリケーションの移行手順に従って移行することもできません。AIR ネイティブインストーラーアプリケーションを中間 .air ファイルとして発行することができないからです。そうではなく、ネイティブ拡張を使用する AIR アプリケーションを新しい証明書に移行するには、以下の手順を実行します。

  1. アプリケーションのアップデートを作成します。

  2. ADT -package コマンドを使用して、アップデートネイティブインストーラーをパッケージ化して署名します。新しい証明書を使用してアプリケーションをパッケージ化しますが、その際に、-migrate フラグで元の証明書を指定します。

次のシンタックスを使用して、ADT -package コマンドを migrate フラグ付きで呼び出します。

adt -package AIR_SIGNING_OPTIONS -migrate MIGRATION_SIGNING_OPTIONS -target package_type NATIVE_SIGNING_OPTIONS output app_descriptor FILE_OPTIONS
  • AIR_SIGNING_OPTIONS この署名オプションは、AIR ファイルへの署名に使用する秘密キーと証明書を指定します。このオプションでは、新しい署名証明書を指定します。詳しくは、ADT コード署名のオプションを参照してください。

  • MIGRATION_SIGNING_OPTIONS この署名オプションは、AIR ファイルへの署名に使用する秘密キーと証明書を指定します。このオプションでは、元の署名証明書を指定する必要があります。詳しくは、ADT コード署名のオプションを参照してください。

  • その他のオプションは、AIR ネイティブインストーラーアプリケーションのパッケージ化で使用するオプションと同じものです。詳しくは、ADT package コマンドを参照してください。

以下の例では、ADT -package コマンドを -migrate フラグ付きで呼び出して、ネイティブ拡張を使用する AIR アプリケーションのアップデートバージョンをパッケージ化し、移行署名をそのアップデートに適用しています。

adt -package -storetype pkcs12 -keystore new_cert.p12 -migrate -storetype pkcs12 -keystore original_cert.p12 -target native myApp.exe myApp.xml myApp.swf
注意: -package コマンドの -migrate フラグは、AIR 3.6 以降の ADT で使用できます。