AIR ファイルへの電子署名



認定されている証明機関(CA)が発行した証明書を使用して AIR インストールファイルに電子署名すると、インストールしているアプリケーションが誤ってまたは悪意をもって変更されていないことをユーザに確実に保証することができ、署名したユーザは署名者(発行者)と見なされます。AIR のインストール中に発行者名が表示されるのは、信頼できる証明書、またはインストールされているコンピュータで信頼されている証明書にチェーン化されている証明書を使用して AIR アプリケーションに署名している場合です。それ以外の場合、発行者名は「不明」として表示されます。

重要: 悪意のあるエンティティは、なんらかの方法で署名されているキーストアファイルを取得するか、秘密キーを見つけ出し、署名者の ID で AIR ファイルを偽造する可能性があります。

コード署名証明書に関する情報

コード署名証明書の使用に関連するセキュリティの保証、制限、および法的義務の概要については、証明機関運用規定(CPS)および発行側の証明機関が発行する利用規約に記載されています。AIR コード署名証明書を現在発行している証明機関の規約について詳しくは、次のサイトを参照してください。

ChosenSecurity(http://www.chosensecurity.com/products/tc_publisher_id_adobe_air.htm)

ChosenSecurity CPS (http://www.chosensecurity.com/resource_center/repository.htm)

GlobalSign(http://www.globalsign.com/developer/code-signing-certificate/index.htm)

GlobalSign CPS(http://www.globalsign.com/repository/index.htm)

Thawte CPS(http://www.thawte.com/cps/index.html)

Thawte Code Signing Developer's Agreement(英語)(http://www.thawte.com/ssl-digital-certificates/free-guides-whitepapers/pdf/develcertsign.pdf)

日本ベリサイン CPS(VeriSign Japan CPS)(http://www.verisign.co.jp/repository/CPS/)

クライアント ID 利用規約(Digital ID 利用規約)(https://www.verisign.co.jp/repository/SUBAGR.html)

AIR コード署名について

AIR ファイルに署名が行われると、電子署名がインストールファイルに含まれます。署名には、署名後に AIR ファイルが変更されていないことを検証するために使用されるパッケージのダイジェストと、発行者 ID を検証するために使用する署名証明書に関する情報が含まれます。

AIR では、証明書が信頼できるかどうかを確認するために、オペレーティングシステムの証明書ストアを通じてサポートされる公開キーインフラストラクチャ(PKI)を使用します。AIR アプリケーションがインストールされているコンピュータでは、発行側の情報を検証するために、AIR アプリケーションの署名に使用されている証明書そのものを信頼するか、信頼できる証明機関の証明書にリンクしている証明書のチェーンを信頼する必要があります。

AIR ファイルが、信頼できるルート証明書(およびこれには通常すべての自己署名入り証明書が含まれる)のいずれにもチェーン化されていない証明書で署名されている場合、発行者側の情報は検証できません。AIR は、AIR パッケージが署名後に変更されていないか確認できますが、ファイルの実際の作成者および署名者を知ることはできません。

注意: ユーザは自己署名入り証明書を信頼することができ、その証明書で署名された AIR アプリケーションには、発行者名として証明書の共通名フィールドの値が表示されます。AIR では、ユーザが信頼済みの証明書を指定することはできません。証明書(秘密キーを含まない)はユーザに個別に提供する必要があります。ユーザはオペレーティングシステムが提供するメカニズムのいずれかを使用するか、適切なツールを使用してシステムの証明書ストア内の適切な場所に証明書を読み込む必要があります。

AIR 発行者 ID について

AIR ファイルのインストール時に、AIR アプリケーションインストーラによって発行者 ID が生成されます。これは、AIR ファイルの作成に使用される証明書に固有の ID です。複数の AIR アプリケーションに対して同じ証明書を再利用すると、それらのアプリケーションの発行者 ID は同じになります。AIR アプリケーションは、発行者 ID とアプリケーション ID との組み合わせによって一意に識別されます。

アプリケーションが LocalConnection クラスを使用して別の AIR アプリケーションと通信するには、その AIR アプリケーションの発行者 ID を認識している必要があります(アプリケーション間通信 を参照してください)。 NativeApplication.nativeApplication.publisherID プロパティを読み取って、インストールされているアプリケーションの発行者 ID を識別できます。

発行者 ID を計算するには、Name、CommonName、Surname、GivenName、Initials、GenerationQualifier、DNQualifier、CountryName、localityName、StateOrProvinceName、OrganizationName、OrganizationalUnitName、Title、Email、SerialNumber、DomainComponent、Pseudonym、BusinessCategory、StreetAddress、PostalCode、PostalAddress、DateOfBirth、PlaceOfBirth、Gender、CountryOfCitizenship、CountryOfResidence、および NameAtBirth のフィールドを使用します。証明機関が発行した証明書を更新する場合、または自己署名入り証明書を再生成する場合に、発行者 ID を同じにするにはこれらのフィールドも同じにする必要があります。また、CA が発行した証明書のルート証明書および自己署名入り証明書の公開キーも同じにする必要があります。

証明書の形式について

AIR 署名ツールは、Java Cryptography Architecture(JCA)を通じてアクセスできるすべてのキーストアを受け入れます。これには、PKCS12 形式のファイル(通常 .pfx または .p12 ファイル拡張子が付いている)などのファイルベースのキーストア、Java .keystore ファイル、PKCS11 ハードウェアキーストア、およびシステムキーストアが含まれます。ADT がアクセスできるキーストア形式は、ADT の実行に使用される Java ランタイムのバージョンと設定によって異なります。PKCS11 ハードウェアトークンなど一部の種類のキーストアにアクセスするには、追加のソフトウェアドライバや JCA プラグインのインストールと設定が必要になる場合があります。

AIR ファイルに署名する際は、既にあるコード署名証明書をほとんどの場合使用できます。また、AIR アプリケーションの署名用であることを明示して発行された新しい証明書を取得することもできます。例えば、VeriSign、Thawte、GlobalSign または ChosenSecurity の次の種類の証明書はどれでも使用できます。

  • ChosenSecurity

    • Adobe AIR 用の TC Publisher ID

  • GlobalSign

    • ObjectSign Code Signing Certificate

  • Thawte

    • AIR Developer Certificate

    • Apple Developer Certificate

    • JavaSoft Developer Certificate

    • Microsoft Authenticode Certificate

  • VeriSign

    • Adobe AIR Digital ID

    • Microsoft Authenticode Digital ID

    • Sun Java Signing Digital ID

注意: 証明書は、コード署名用に作成されたものである必要があります。SSL やその他の種類の証明書を使用して AIR ファイルに署名することはできません。

タイムスタンプ

AIR ファイルに署名するときは、パッケージングツールで、タイムスタンプ局のサーバを照会して、単独で検証可能な署名の日時を取得します。取得したタイムスタンプは AIR ファイルに埋め込まれます。署名した証明書が署名時に有効である限り、AIR ファイルは証明書の期限が切れた後もインストールできます。一方、タイムスタンプを取得していない場合は、証明書の期限が切れたり証明書が取り消されたりすると、AIR ファイルはインストールできなくなります。

デフォルトでは、AIR パッケージングツールでタイムスタンプを取得します。ただし、タイムスタンプサービスが使用できないときにアプリケーションをパッケージ化できるようにするには、タイムスタンプ機能をオフにします。公開配布されているすべての AIR ファイルにはタイムスタンプを含めることをお勧めします。

AIR パッケージングツールで使用されるデフォルトのタイムスタンプ局は、Geotrust です。

証明書の取得

証明書を取得するには、通常は証明機関の Web サイトにアクセスし、その会社の取得プロセスに従います。AIR ツールに必要なキーストアファイルを生成するツールは、購入した証明書の種類、受信側コンピュータでの証明書の格納方法、および場合によっては証明書の取得に使用するブラウザによって異なります。例えば、Adobe Developer Certificate を Thawte から取得して書き出すには、Mozilla Firefox を使用する必要があります。これにより、Firefox ユーザインターフェイスから証明書を .p12 または .pfx ファイルとして直接書き出せます。

AIR インストールファイルのパッケージ化に使用する AIR 開発ツール(ADT)を使用して自己署名入り証明書を生成できます。一部のサードパーティツールも使用できます。

自己署名入り証明書の生成手順、および AIR ファイルの署名手順については、ADT(AIR 開発ツール)を使用した AIR インストールファイルのパッケージ化を参照してください。また、Flex Builder、Dreamweaver、および AIR update for Flash を使用して AIR ファイルを書き出し、署名することもできます。

次の例で、Thawte 証明機関から AIR Developer Certificate を取得し、それを ADT で使用できるように準備する方法を説明します。

例:Thawte からの AIR Developer Certificate の取得

注意: コード署名証明書を取得して準備する方法は他にも多数あり、この例は単にその 1 つに過ぎません。ポリシーや手続きは証明機関ごとに異なります。

AIR Developer Certificate を購入するには、Thawte Web サイトへのアクセスに Mozilla Firefox ブラウザを使用する必要があります。証明書の秘密キーは、ブラウザのキーストアに格納されます。Firefox キーストアがマスタパスワードで保護されていること、およびコンピュータそのものが物理的に安全であることを確認してください(取得プロセスが完了すると、ブラウザのキーストアから証明書と秘密キーを書き出して削除できます)。

証明書登録プロセス中に、秘密キーと公開キーのぺアが生成されます。秘密キーは自動的に Firefox キーストア内に格納されます。Thawte の Web サイトに証明書を要求する場合も証明書を取得する場合にも同じコンピュータとブラウザを使用する必要があります。

  1. Thawte の Web サイトにアクセスし、コード署名署名所の製品ページ(英語)を参照してください。

  2. コード署名証明書の一覧から、「Adobe AIR Developer Certificate」を選択します。

  3. 3 つのステップの登録プロセスを完了します。組織および連絡先の情報を指定する必要があります。これで、Thawte は、ID 検証プロセスを実行し、追加の情報を要求できます。検証の完了後、Thawte から証明書の取得手順に関する電子メールが送られてきます。

    注意: 必要なドキュメントの種類について詳しくは、https://www.thawte.com/ssl-digital-certificates/free-guides-whitepapers/pdf/enroll_codesign_eng.pdf を参照してください。
  4. 発行された証明書を Thawte サイトから取得します。証明書は、自動的に Firefox キーストアに保存されます。

  5. 次の手順を実行して、秘密キーと証明書を含むキーストアファイルを Firefox キーストアから書き出します。

    注意: Firefox から秘密キーと証明書を書き出す場合、そのファイルは、ADT、Flex、Flash および Dreamweaver で使用できる .p12(pfx)形式で書き出されます。
    1. Firefox の証明書マネージャダイアログを開きます。

    2. Windows の場合は、ツール/オプション/詳細/暗号化/証明書を表示を開きます。

    3. Macintosh の場合は、Firefox/環境設定/詳細/暗号化/証明書を表示を開きます。

    4. Linux の場合は、編集/設定/詳細/暗号化/証明書を表示を開きます。

    5. 証明書の一覧から「Adobe AIR Code Signing Certificate」を選択し、「バックアップ」ボタンをクリックします。

    6. キーストアファイルを書き出すファイル名と場所を入力し、「保存」をクリックします。

    7. Firefox のマスタパスワードを使用している場合は、ファイルを書き出すためにソフトウェアセキュリティデバイスのパスワードの入力が要求されます(このパスワードは Firefox のみで使用されます)。

    8. 証明書バックアップパスワードの選択ダイアログボックスで、キーストアファイルのパスワードを作成します。

      重要: このパスワードによってキーストアファイルは保護されます。このパスワードは、AIR アプリケーションへの署名にファイルが使用される際に必要になります。安全なパスワードを選択してください。
    9. 「OK」をクリックします。パスワードのバックアップが成功したことを示すメッセージが表示されます。秘密キーを含むキーストアファイルは、.p12 ファイル拡張子(PKCS12 形式)で保存されます。

  6. 書き出したキーストアファイルを ADT、Flex Builder、Flash または Dreamweaver で使用します。ファイルに対して作成されたパスワードは、AIR アプリケーションが署名されるたびに必要になります。

重要: 秘密キーと証明書は Firefox キーストアにも格納されます。これにより証明書ファイルの追加のコピーを書き出せますが、証明書と秘密キーのセキュリティを維持するために保護する必要がある別のアクセスポイントも提供されます。

証明書の変更

状況によって、AIR アプリケーションを署名するために使用する証明書の変更が必要になる場合があります。これには、次のような場合があります。

  • 自己署名入り証明書を証明機関から発行された証明書にアップグレードする

  • 有効期限が近い自己署名入り証明書を別の証明書に変更する

  • ある商用証明書を別の商用証明書に変更する(企業の ID が変更された場合など)

署名証明書は AIR アプリケーションの ID を決定する要素の 1 つであるため、単純に、別の証明書でアプリケーションに署名して更新することはできません。AIR で AIR ファイルがアップデートであることを認識できるようにするには、元の AIR ファイルと更新された AIR ファイルを同じ証明書を使用して署名する必要があります。そうしないと、新しい AIR ファイルは、既存のインストールを更新するのではなく、新しいアプリケーションとしてインストールされます。

AIR 1.1 では、移行署名を使用して、アプリケーションの署名証明書を変更できます。移行署名は、アップデートの AIR ファイルに適用される 2 つめの署名です。移行署名では元の証明書が使用されます。これによって、署名者がアプリケーションの元の発行者であることが証明されます。

重要: 元の証明書の有効期限が切れたり、失効したりする前に、証明書を変更する必要があります。証明書の有効期限が切れる前に、移行署名を使用して署名されたアップデートを作成していない場合、ユーザはアップデートをインストールする前に、アプリケーションの既存のバージョンをアンインストールする必要があります。商用証明書は、通常、更新して有効期限切れを回避できます。自己署名入り証明書は更新できません。

証明書を変更するには:

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

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

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

移行署名を適用する手順については、アプリケーション証明書を変更するための AIR ファイルへの署名を参照してください。

更新された AIR ファイルがインストールされると、アプリケーションの ID が変更されます。この ID の変更には、次のような影響があります。

  • アプリケーションの発行者 ID が新しい証明書に合わせて変更されます。

  • 新しいバージョンのアプリケーションでは、既存の暗号化されたローカルストアにあるデータにアクセスできません。

  • アプリケーション記憶領域ディレクトリの場所が変更されます。以前の場所にあるデータが新しいディレクトリにコピーされません(ただし、新しいアプリケーションは、以前の発行者 ID に基づく元のディレクトリには配置できません)。

  • アプリケーションは、以前の発行者 ID を使用してローカル接続を開くことができなくなります。

  • ユーザが移行前の AIR ファイルを再インストールすると、元の発行者 ID を使用して別のアプリケーションとしてインストールされます。

元のバージョンのアプリケーションと新しいバージョンのアプリケーションとの間でデータを移行する処理は、アプリケーションで実行する必要があります。暗号化されたローカルストア(ELS)内のデータを移行するには、証明書で変更を行う前に、データを書き出す必要があります。新しいバージョンのアプリケーションで、以前のバージョンの ELS を読めなくなる場合があります(データを移行するよりも、再作成した方が簡単である場合もあります)。

できる限り多くの以降のアップデートに移行署名を適用し続ける必要があります。そうしないと、元のバージョンからアップグレードしていないユーザは、最新のアップデートをインストールする前に、中間移行バージョンをインストールするか、現在のバージョンを再インストールする必要があります。最終的には、元の証明書の有効期限が切れ、移行署名を適用することができなくなります(ただし、タイムスタンプ機能を無効にしている場合を除き、以前に移行署名を使用して署名された AIR ファイルは有効なままです。移行署名にはタイムスタンプが付加され、証明書の有効期限が切れた後でも AIR で署名を受け入れることができます)。

移行署名を含む AIR ファイルは、別の意味では通常の AIR ファイルです。元のバージョンがないシステムにアプリケーションをインストールした場合、AIR では通常の方法で新しいバージョンをインストールします。
注意: 商用証明機関から発行された証明書を更新する場合、通常、証明書を移行する必要はありません。識別名が変更されていない限り、更新された証明書の発行者 ID は元の証明書の発行者 ID と同じになります。識別名を確認するために使用される証明書の属性の一覧については、AIR 発行者 ID についてを参照してください。

用語集

ここでは、公開配布するアプリケーションへの署名方法を決定する際に理解しておく必要があるいくつかの用語を示します。

用語

説明

証明機関(CA)

信頼できるサードパーティの役割を果たし、最終的に公開キーの所有者の ID を認定する公開キーインフラストラクチャネットワーク内のエンティティ。CA は一般的に、所有している秘密キーで署名した電子証明書を発行し、証明書の所有者の ID が検証済みであることを証明します。

Certificate Practice Statement(CPS)

証明書を発行および検証する証明機関の運用とポリシーを規定します。CPS は、CA とその加入者およびその関係者間で結ばれる契約の一部です。また、証明機関が提供する証明書の ID 検証のポリシーおよび保証のレベルについても記載されています。

Certificate Revocation List(CRL)

発行済み証明書の中で、取り消され、信頼されなくなった証明書のリスト。AIR は、AIR アプリケーションの署名時に CRL をチェックし、タイムスタンプがない場合は、もう一度アプリケーションをインストールします。

証明書チェーン

証明書チェーンは一連の証明書のことで、チェーン内の各証明書はその次の証明書で署名されています。

電子証明書

所有者の ID、所有者の公開キー、および証明書自体の ID で構成されている電子ドキュメント。証明機関で発行された証明書自体は、発行側の CA に属する証明書で署名されます。

電子署名

公開キーと秘密キーのペアの公開キーでのみ解読できる暗号化されたメッセージまたはダイジェスト。PKI では、電子署名には、最終的に証明機関で追跡可能な 1 つ以上の電子証明書が含まれます。電子署名は、署名後に(使用されている暗号化アルゴリズムが提供する保証の制限内で)改ざんされていないメッセージ(またはコンピュータファイル)の検証に使用でき、発行側の証明機関、署名者の ID が信頼できることが前提になります。

キーストア

電子証明書、および関連の秘密キーが含まれる場合もあるデータベース。

Java Cryptography Architecture(JCA)

キーストアを管理したり、キーストアにアクセスするための拡張可能なアーキテクチャ。詳しくは、『Java Cryptography Architecture Reference Guide』(英語)を参照してください。

PKCS #11

RSA Laboratories が策定した暗号化トークンインターフェイス標準。ハードウェアトークンベースのキーストアです。

PKCS #12

RSA Laboratories が策定した個人情報交換構文標準。通常秘密キーと関連の電子証明書を含むファイルベースのキーストアです。

秘密キー

2 つの部分から構成される公開キーと秘密キーの非対称暗号化システムの秘密の部分。秘密キーは、秘密を保持する必要があり、ネットワーク上で転送されません。電子署名されたメッセージは、署名者によって秘密キーで暗号化されます。

公開キー

2 つの部分から構成される公開キーと秘密キーの非対称暗号化システムの公開の部分。公開キーは自由に利用でき、秘密キーで暗号化されたメッセージの解読に使用されます。

公開キーインフラストラクチャ(PKI)

証明機関が公開キーの所有者の ID を証明するための信頼性のシステム。ネットワークのクライアントは、信頼できる CA が発行した電子証明書を信頼して、電子メッセージ(またはファイル)の署名者の ID を検証します。

タイムスタンプ

イベントの発生日時を含む電子署名されたデータ。ADT には、AIR パッケージ内の RFC 3161 準拠のタイムサーバからのタイムスタンプを含めることができます。タイムスタンプがある場合、AIR はそのタイムスタンプを使用して、署名時に証明書の有効性を立証します。これにより、AIR アプリケーションは、署名された証明書の期限が切れてもインストールできます。

タイムスタンプ局

タイムスタンプを発行する局。AIR でタイムスタンプを認識するために、タイムスタンプは RFC 3161 に準拠し、タイムスタンプ署名はインストールマシンの信頼できるルート証明書にチェーン化されている必要があります。