次の方法で共有


ClickOnce と Authenticode

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

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

Authenticode とコード署名

デジタル証明書は、暗号化公開キーと秘密キーのペアと、証明書の発行元と証明書を発行した機関を記述するメタデータを含むファイルです。

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

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

  • 証明書ベンダーから購入します。

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

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

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

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

一方、証明書ベンダーや企業内の部署など、CA から証明書を受け取った場合、証明書はユーザーに対してより高いセキュリティを提供します。 署名されたソフトウェアの発行元を識別するだけでなく、署名した CA に確認することで、その ID を検証します。 CA がルート機関でない場合、Authenticode はルート機関に "チェーン" して、CA が証明書の発行を承認されていることを確認します。 セキュリティを強化するために、可能な限り CA によって発行された証明書を使用する必要があります。

セルフ証明書の生成の詳細については、「 New-SelfSignedCertificate 」または 「MakeCert」を参照してください。

タイムスタンプ

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

アプリケーション サーバーにタイムスタンプを含めるには、タイムスタンプ サーバーを使用できる必要があります。 タイムスタンプ サーバーを選択する方法については、「 方法: アプリケーション マニフェストと配置マニフェストに署名する」を参照してください。

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

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

  • .NET Framework バージョン 3.5 以降を更新します。

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

証明書を格納する

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