アプリケーション マニフェストと配置マニフェストの署名
ClickOnce 配置を使用してアプリケーションを発行しようとする場合は、アプリケーション マニフェストと配置マニフェストに、公開キーと秘密キーのペアを使用して署名し、さらに Authenticode テクノロジを使用して署名する必要があります。 これらのマニフェストには、Windows 証明書ストアの証明書またはキー ファイルを使用して署名できます。
この記事の情報は、.NET Framework 4.8.1 以前を使用している場合にのみ適用されます。 .NET 5 以降を使用している場合は、「ClickOnce を使用して .NET Windows デスクトップ アプリケーションを配置する」の手順に従います。
ClickOnce 配置の詳細については、「ClickOnce のセキュリティと配置」を参照してください。
.exe ベースのアプリケーションでは、ClickOnce マニフェストの署名を省略できます。 詳細については、このドキュメントの「未署名のマニフェストの生成」セクションを参照してください。
キー ファイルの作成については、「方法 : 公開キーと秘密キーのキー ペアを作成する」を参照してください。
Note
Visual Studio では、拡張子 .pfx を持つ Personal Information Exchange (PFX) キー ファイルだけがサポートされます。 ただし、プロジェクトのプロパティの [署名] ページにある [ストアから選択] をクリックすると、現在のユーザーの Windows 証明書ストアから、他の種類の証明書を選ぶことができます。
証明書を使用して署名する
この方法を使用するには、証明機関 (CA) によって署名された証明書が必要です。 証明書は、サードパーティの認定サービス プロバイダーまたはエンタープライズで承認された組織によって発行されています。
プロジェクトのプロパティ ウィンドウに移動します (ソリューション エクスプローラーでプロジェクト ノードを右クリックし、[プロパティ] を選択します)。 [署名] タブの [ClickOnce マニフェストに署名する] チェック ボックスをオンにします。
[ストアから選択] をクリックします。
[証明書の選択] ダイアログ ボックスが表示され、Windows 証明書ストアの内容が表示されます。
ヒント
[証明書のプロパティを表示します] をクリックすると、[証明書の詳細] ダイアログ ボックスが表示されます。 このダイアログ ボックスには、証明書と追加オプションの詳細情報があります。 [証明書] をクリックすると、追加のヘルプ情報を表示することができます。
マニフェストの署名に使用する証明書を選択します。
ヒント
ストアに証明書がない場合でも、テスト証明書を使用して署名できます。
また、[タイムスタンプ サーバーの URL] ボックスでタイムスタンプ サーバーのアドレスを指定することもできます。 このサーバーは、マニフェストの署名日時を示すタイムスタンプを提供します。 通常は、CA によって署名された証明書を提供しているのと同じサード パーティによって提供されています。
既存のキー ファイルを使用して署名する
[署名] ページの [ClickOnce マニフェストに署名する] チェック ボックスをオンにします。
[ファイルから選択] をクリックします。
[ファイルの選択] ダイアログ ボックスが表示されます。
[ファイルの選択] ダイアログ ボックスで、使用するキー ファイル (.pfx) の場所を参照し、[開く] をクリックします。
Note
このオプションでは、拡張子 .pfx を持つファイルのみがサポートされます。 これ以外の形式のキー ファイルや証明書がある場合は、Windows 証明書ストアに格納し、前の手順で説明した証明書を選択します。 選択した証明書の用途に、コードの署名が含まれている必要があります。
[ファイルを開くためのパスワードの入力] ダイアログ ボックスが表示されます。 (.pfx ファイルが既に Windows 証明書ストアに格納されている場合やパスワードで保護されていない場合、パスワードの入力は求められません。)
キー ファイルにアクセスするパスワードを入力し、Enter キーを選択します。
[詳細...] を選択して、証明書のプロパティを表示します。 ClickOnce は、ユーザーがアプリケーションをインストールするときに証明書を表示するときに、 [件名] フィールドの値をPublisher として表示します。 ClickOnce アプリケーションのインストール時にユーザーに表示される内容の例を次に示します。
Note
.pfx ファイルには証明書チェーンの情報を含めることはできません。 含まれる場合は、次のインポート エラーが発生します。 暗号化の解除のための証明書と秘密キーが見つかりません。 証明書チェーンの情報を削除するには、Certmgr.msc を使用して、*.pfx ファイルをエクスポートするときにすべての証明書を含めるためのオプションを無効にすることができます。
テスト証明書を使用して署名する
テスト証明書は証明機関 (CA) によっては署名されておらず、テスト目的でのみ使用します。 テスト証明書の詳細については、「証明機関を使用してユーザーを支援する方法」を参照してください。
[署名] ページの [ClickOnce マニフェストに署名する] チェック ボックスをオンにします。
テスト用の新しい証明書を作成するには、[テスト証明書の作成] をクリックします。
[テスト証明書の作成] ダイアログ ボックスで、テスト証明書をセキュアにするためにパスワードを入力します。
Note
.NET 2.0 をターゲットにしている場合を除き、署名アルゴリズムとして sha256RSA を必ず選択してください
未署名のマニフェストの生成
ClickOnce マニフェストへの署名は、 .exe
ベースのアプリケーションでは省略可能です。 次の手順は、未署名の ClickOnce マニフェストを生成する方法を示しています。
重要
未署名のマニフェストにより、アプリケーションの開発およびテストを簡略化できます。 しかし、未署名のマニフェストは、稼動環境に重大なセキュリティ上の問題を発生させます。 インターネットまたは他の悪意のあるコードの提供元から完全に分離されたイントラネット内のコンピューターで ClickOnce アプリケーションを実行する場合のみ、未署名のマニフェストの使用を検討してください。
既定では、ClickOnce は、生成されるハッシュから 1 つ以上のファイルが除外されるよう指定されていない限り、自動的に署名付きマニフェストを生成します。 つまり、すべてのファイルがハッシュに含まれ、[ClickOnce マニフェストに署名する] チェック ボックスがオフの場合でも、アプリケーションの発行により署名付きマニフェストが生成されます。
未署名マニフェストを生成し、生成されるハッシュにすべてのファイルを含めるには
ハッシュにすべてのファイルが含まれる未署名マニフェストを生成するには、まず署名付きマニフェストと共にアプリケーションを発行する必要があります。 したがって、前のいずれかの手順に従って ClickOnce マニフェストに署名してから、アプリケーションを発行します。
[署名] タブの [ClickOnce マニフェストに署名する] チェック ボックスをオフにします。
[公開] タブで、アプリケーションで 1 つのバージョンのみ使用できるように発行バージョンをリセットします。 [発行ごとにバージョンを自動的にインクリメントする] チェック ボックスをオフにします。 既定では、アプリケーションを発行するたびに発行バージョンのリビジョン番号が自動的にインクリメントされます。 詳細については、「How to: Set the ClickOnce publish version」(方法: ClickOnce の発行バージョンを設定する) を参照してください。
アプリケーションを公開します。 サーバー上の既存のアプリケーションとは異なるキーでアプリケーションが署名されたことが Visual Studio に示され、それを上書きするかどうかが確認されます。 [はい] をクリックします。
未署名マニフェストを生成し、生成されるハッシュから 1 つ以上のファイルを除外するには
[署名] ページの [ClickOnce マニフェストに署名する] チェック ボックスをオフにします。
[発行] タブで、[アプリケーション ファイル] ボタンを選択して [アプリケーション ファイル] ダイアログ ボックスを開き、生成されたハッシュから除外するファイルの [ハッシュ] を [除外] に設定します。
Note
ハッシュからファイルを除外すると、ClickOnce によるマニフェストの自動署名が無効になるため、前の手順のように、最初に署名付きマニフェストで発行する必要がありません。
アプリケーションを公開します。