次の方法で共有


アプリケーション マニフェストと配置マニフェストに署名する

ClickOnce 配置を使用してアプリケーションを発行する場合、アプリケーション マニフェストと配置マニフェストは公開キーと秘密キーのペアで署名し、Authenticode テクノロジを使用して署名する必要があります。 マニフェストに署名するには、Windows 証明書ストアの証明書またはキー ファイルを使用します。

この記事の情報は、.NET Framework 4.8.1 以前を使用している場合にのみ適用されます。 .NET 5 以降を使用している場合は、「 ClickOnce を使用して .NET Windows デスクトップ アプリケーションを配置する」の手順に従います。

ClickOnce マニフェストへの署名は、.exeベースのアプリケーションでは省略可能です。 詳細については、このドキュメントの「署名されていないマニフェストの生成」セクションを参照してください。

キー ファイルの作成の詳細については、「 方法: 公開キーと秘密キーのペアを作成する」を参照してください。

アセンブリとアプリケーション マニフェストの署名の詳細については、「 アセンブリとマニフェストの署名の管理」を参照してください。

Visual Studio では、 拡張子が .pfx の Personal Information Exchange (PFX) キー ファイルのみがサポートされます。 ただし、プロジェクトのプロパティの署名ページで [ストアから選択] をクリックすると、現在のユーザーの Windows 証明書ストアから他の種類の証明書を選択できます。

証明書を使用して署名する

この方法を使用するには、証明機関 (CA) によって署名された証明書が必要です。 証明書は、サード パーティの認定サービス プロバイダーまたはエンタープライズ内の承認された組織によって発行されます。

  1. プロジェクトのプロパティ ウィンドウに移動します ( ソリューション エクスプローラー でプロジェクト ノードを右クリックし、[ プロパティ] を選択します)。 [ 署名 ] タブで、[ ClickOnce マニフェストに署名 する] チェック ボックスをオンにします。

  2. [ ストアから選択 ] ボタンをクリックします。

    [ 証明書の選択 ] ダイアログ ボックスが表示され、Windows 証明書ストアの内容が表示されます。

    ヒント

    [ ここをクリックして証明書のプロパティを表示する] をクリックすると、[ 証明書の詳細 ] ダイアログ ボックスが表示されます。 このダイアログ ボックスには、証明書とその他のオプションに関する詳細情報が含まれています。 [ 証明書 ] をクリックすると、追加のヘルプ情報が表示されます。

  3. マニフェストの署名に使用する証明書を選択します。

    ヒント

    ストアに証明書がない場合でも、 テスト証明書を使用して署名できます。

  4. さらに、タイムスタンプ サーバーの URL テキスト ボックスに タイムスタンプ サーバー のアドレスを指定できます。 これは、マニフェストが署名された日時を指定するタイムスタンプを提供するサーバーです。 通常、CA によって署名された証明書を提供するのと同じサード パーティによって提供されます。

既存のキー ファイルを使用して署名する

  1. [ 署名 ] ページで、[ ClickOnce マニフェストに署名 する] チェック ボックスをオンにします。

  2. [ ファイルから選択 ] ボタンをクリックします。

    [ ファイルの選択 ] ダイアログ ボックスが表示されます。

  3. [ ファイルの選択 ] ダイアログ ボックスで、使用するキー ファイル (.pfx) の場所を参照し、[ 開く] をクリックします。

    このオプションでは、 拡張子が .pfx のファイルのみがサポートされます。 別の形式のキー ファイルまたは証明書がある場合は、Windows 証明書ストアに保存し、前の手順で説明した証明書を選択します。 選択した証明書の目的には、コード署名が含まれている必要があります。

    [ パスワードを入力してファイルを開く ] ダイアログ ボックスが表示されます。 ( .pfx ファイルが Windows 証明書ストアに既に保存されているか、パスワードで保護されていない場合は、パスワードの入力を求められません)。

  4. キー ファイルにアクセスするためのパスワードを入力し、 Enter キーを押します。

  5. [ 詳細]... を選択して、証明書のプロパティを表示します。 ClickOnce は、ユーザーがアプリケーションをインストールするときに証明書を表示するときに、[ サブジェクト ] フィールドの値を パブリッシャー として表示します。 ClickOnce アプリケーションのインストール時にユーザーに表示される内容の例を次に示します。

    アプリケーションのインストール時に表示される証明書のスクリーンショット。

.pfx ファイルに証明書チェーン情報を含めることはできません。 その場合、次のインポート エラーが発生します。 暗号化解除の証明書と秘密キーが見つかりません。 証明書チェーン情報を削除するには、Certmgr.msc を使用し、*.pfx ファイルのエクスポート時にすべての証明書を含めるオプションを無効にします

テスト証明書を使用して署名する

テスト証明書は証明機関 (CA) によって署名されておらず、テスト目的でのみ使用する必要があります。 テスト証明書の詳細については、「 証明機関を使用してユーザーを支援する方法」を参照してください。

  1. [ 署名 ] ページで、[ ClickOnce マニフェストに署名 する] チェック ボックスをオンにします。

  2. テスト用の新しい証明書を作成するには、[ テスト証明書の作成 ] ボタンをクリックします。

  3. [ テスト証明書の作成 ] ダイアログ ボックスで、テスト証明書のセキュリティ保護に役立つパスワードを入力します。

.NET 2.0 を対象としている場合を除き、署名アルゴリズムとして sha256RSA を選択してください。

署名されていないマニフェストを生成する

ClickOnce マニフェストへの署名は、 .exe ベースのアプリケーションでは省略可能です。 次の手順では、署名されていない ClickOnce マニフェストを生成する方法を示します。

重要

署名されていないマニフェストを使用すると、アプリケーションの開発とテストを簡略化できます。 ただし、署名されていないマニフェストでは、運用環境で大きなセキュリティ リスクが発生します。 インターネットやその他の悪意のあるコードソースから完全に分離されたイントラネット内のコンピューターで ClickOnce アプリケーションを実行する場合にのみ、署名されていないマニフェストの使用を検討してください。

既定では、ClickOnce は、生成されたハッシュから 1 つ以上のファイルが明示的に除外されない限り、署名付きマニフェストを自動的に生成します。 つまり、[ ClickOnce マニフェストに署名する] チェック ボックスがオフになっている場合でも、すべてのファイルがハッシュに含まれている場合、アプリケーションを発行すると署名付きマニフェストが作成されます。

署名されていないマニフェストを生成し、生成されたハッシュにすべてのファイルを含めるには

ハッシュ内のすべてのファイルを含む署名されていないマニフェストを生成するには、まず、署名付きマニフェストと共にアプリケーションを発行する必要があります。 そのため、最初に前の手順のいずれかに従って ClickOnce マニフェストに署名し、次にアプリケーションを発行します。

  1. [ 署名 ] タブで、[ ClickOnce マニフェストに署名 する] チェック ボックスをオフにします。

  2. [ 発行 ] タブで、アプリケーションの 1 つのバージョンのみを使用できるように発行バージョンをリセットします。 [ 発行するたびにバージョンを自動的にインクリメントする] チェック ボックスをオフにします。 既定では、Visual Studio は、アプリケーションを発行するたびに発行バージョンのリビジョン番号を自動的にインクリメントします。 詳細については、「 方法: ClickOnce 発行バージョンを設定する」を参照してください。

  3. アプリケーションを公開します。 Visual Studio は、アプリケーションがサーバー上の既存のアプリケーションとは異なるキーで署名されたことを示し、上書きするかどうかを確認します。 [はい] 選択します。

署名されていないマニフェストを生成し、生成されたハッシュから 1 つ以上のファイルを除外するには

  1. [ 署名 ] ページで、[ ClickOnce マニフェストに署名 する] チェック ボックスをオフにします。

  2. [ 発行 ] タブで、[ アプリケーション ファイル ] ボタンを選択して [ アプリケーション ファイル ] ダイアログ ボックスを開き、生成された ハッシュ から 除外 するファイルのハッシュを [除外] に設定します。

    ハッシュからファイルを除外すると、マニフェストの自動署名が無効になるように ClickOnce が構成されるため、前の手順に示すように、最初に署名付きマニフェストを使用して発行する必要はありません。

  3. アプリケーションを公開します。