ClickOnce と Authenticode

Authenticode は、業界標準の暗号化を使用して、アプリケーションの発行元の信頼性を検証するデジタル証明書によってアプリケーション コードに署名する Microsoft テクノロジです。 アプリケーションの配置に Authenticode を使用することで、ClickOnce はトロイの木馬のリスクを軽減します。 トロイの木馬は、悪意のある第三者が、確立された信頼できるソースからの正規のプログラムと偽って示すウイルスやその他の有害なプログラムです。 ClickOnce 配置のデジタル証明書による署名は、アセンブリとファイルが改ざんされていないことを確認するためのオプションの手順です。

以下のセクションでは、Authenticode で使用するさまざまな種類のデジタル証明書、証明機関 (CA) を使用して証明書を検証するしくみ、証明書におけるタイムスタンプの役割、および証明書で使用できるストレージの方法について説明します。

Authenticode とコード署名

デジタル証明書 は、証明書の発行先であるアプリケーション発行者と証明書を発行した機関を示すメタデータと共に、暗号化公開キー/秘密キーのペアが格納されたファイルです。

Authenticode 証明書にはさまざまな種類があります。 それぞれの証明書は、異なる種類の署名用に構成されています。 ClickOnce アプリケーションの場合、コード署名で有効な Authenticode 証明書が必要です。 電子メールのデジタル証明書など、別の種類の証明書によって ClickOnce アプリケーションへの署名を試みた場合、アプリケーションは動作しません。 詳細については、「Introduction to Code Signing」 (コード署名の概要) を参照してください。

コード署名の証明書は、次の 3 つの方法のいずれかで取得することができます。

  • 証明書の販売元から購入する。

  • デジタル証明書の作成を担当する組織内のグループから受け取る。

  • New-SelfSignedCertificate PowerShell コマンドレットを使用するか、Windows ソフトウェア開発キット (SDK) に含まれている MakeCert.exe を使用して、独自の証明書を生成します。

証明機関を使用してユーザーを支援する方法

新規-自己署名証明書を使用して生成された証明書またはMakeCert.exeユーティリティが一般的と呼ばれる、自己証明書またはテスト証明書。この種の証明書は、同じ動作はるか方法、 .snkファイルで .NET Framework で動作します。 この証明書は、秘密/公開暗号化キーのペアのみで構成され、発行者に関する検証可能な情報を含んでいません。 自己証明書を使用すると、イントラネット上に信頼性の高い ClickOnce アプリケーションを配置できます。 ただし、これらのアプリケーションをクライアント コンピューターで実行した場合は、ClickOnce が、不明な発行元からのものとしてアプリケーションを識別します。 既定では、自己証明書によって署名され、インターネットを介して配置された ClickOnce アプリケーションでは、信頼されたアプリケーションの配置を利用できません。

これに対し、証明書販売元や企業内の部門などの CA から証明書を受け取る場合は、証明書によってユーザーのセキュリティが強化されます。 証明書によって、署名済みソフトウェアの発行者が識別されるだけでなく、署名を行った CA に問い合わせてその ID が検査されます。 CA がルート証明機関でない場合、Authenticode はルート証明機関まで "信頼チェーン" をたどって、その CA が証明書の発行を承認されているかどうかを検査します。 セキュリティを強化するために、可能であれば常に CA によって発行された証明書を使用することをお勧めします。

自己証明書の生成に関する詳細については、New-SelfSignedCertificate に関する記事、または「MakeCert」を参照してください。

タイムスタンプ

ClickOnce アプリケーションの署名に使用する証明書は、一定の期間 (通常は 12 か月) で期限切れになります。 新しい証明書を持つアプリケーションに再署名を繰り返さずに済むように、ClickOnce ではタイムスタンプがサポートされています。 アプリケーションがタイムスタンプ付きで署名されると、タイムスタンプが有効な場合は、有効期限が過ぎていても、その証明書が受け付けられます。 これにより、期限切れの証明書と有効なタイムスタンプを持つ ClickOnce アプリケーションをダウンロードして実行できます。 また、期限切れの証明書を持つインストール済みのアプリケーションでは、引き続き、更新プログラムをダウンロードしてインストールできます。

アプリケーション サーバーにタイムスタンプを含めるには、タイムスタンプ サーバーが必要です。 タイムスタンプ サーバーを選択する方法については、「 How to: Sign Application and Deployment Manifests」を参照してください。

期限切れの証明書を更新する

以前のバージョンの .NET Framework では、証明書の期限が切れているアプリケーションを更新すると、そのアプリケーションが機能しなくなる可能性がありました。 この問題を解決するには、次のいずれかの方法を使用します。

  • .NET Framework バージョン 3.5 以降に更新してください。

  • アプリケーションをアンインストールし、有効な証明書を含む新しいバージョンを再インストールします。

証明書を格納する

  • 証明書は .pfx ファイルとしてご利用のファイル システムに格納することも、キー コンテナーの内部に格納することもできます。 Windows ドメインのユーザーは、多数のキー コンテナーを持つことができます。 .pfx に保存するよう指定しない限り、既定では、証明書は MakeCert.exe によってご利用のキー コンテナーに格納されます。 ClickOnce 配置の作成に使用する Windows SDK ツールである Mage.exeMageUI.exe を使用すると、このどちらの方法で格納された証明書も使用できます。