厳密な名前の署名は、ソフトウェア コンポーネントにグローバルに一意の ID を提供します。 厳密な名前は、アセンブリが他のユーザーによってスプーフィングできないことを保証し、コンポーネントの依存関係と構成ステートメントが正しいコンポーネントとコンポーネントのバージョンにマップされるようにするために使用されます。
厳密な名前は、アセンブリの ID (単純なテキスト名、バージョン番号、カルチャ情報) に加えて、公開キー トークンとデジタル署名で構成されます。
Visual Basic および C# プロジェクトでのアセンブリの署名の詳細については、「 厳密な名前付きアセンブリの作成と使用」を参照してください。
C++ プロジェクトでのアセンブリの署名の詳細については、「 厳密な名前付きアセンブリ (C++/CLI)」を参照してください。
注
厳密な名前の署名では、アセンブリのリバース エンジニアリングから保護されません。 リバース エンジニアリングから保護するには、 Dotfuscator Community を参照してください。
資産の種類と署名
.NET アセンブリとアプリケーション マニフェストに署名できます。
実行可能ファイル (.exe)
アプリケーション マニフェスト ( .manifest.exe)
配置マニフェスト (.application)
共有コンポーネント アセンブリ (.dll)
次の種類の資産に署名します。
アセンブリをグローバル アセンブリ キャッシュ (GAC) にデプロイしたい場合。
ClickOnce アプリケーション マニフェストと配置マニフェスト。 Visual Studio では、これらのアプリケーションに対して既定で署名が有効になります。
COM 相互運用性のために使用されるプライマリ相互運用機能アセンブリ。 TLBIMP ユーティリティは、COM タイプ ライブラリからプライマリ相互運用機能アセンブリを作成するときに厳密な名前付けを適用します。
一般に、実行可能ファイルに署名しないでください。 厳密な名前のコンポーネントは、アプリケーションと共にデプロイされた厳密に名前のないコンポーネントを参照できません。 Visual Studio はアプリケーションの実行可能ファイルに署名するのではなく、弱い名前の実行可能ファイルを指すアプリケーション マニフェストに署名します。 署名すると依存関係の管理が難しくなる可能性があるため、アプリケーションにプライベートなコンポーネントの署名は避けてください。
Visual Studio でアセンブリに署名する方法
アセンブリに署名する手順は、プロジェクトで使用するプロジェクト デザイナーのバージョンによって異なります。
Visual Studio 2022 の .NET Core (および .NET 5 以降) C# プロジェクトの場合:
- プロジェクトのプロパティ ウィンドウを開きます ( ソリューション エクスプローラー でプロジェクト ノードを右クリックし、[ プロパティ] を選択します)。
- [ ビルド] で、[ 厳密な名前付け] を探し、[ アセンブリに署名 する] チェック ボックスをオンにします。 チェック ボックスをオンにすると、キー ファイルと遅延署名の追加オプションが表示されます。
- キー ファイルを指定します。
キー ファイルがない場合は、コマンド ラインを使用して.snk
ファイルを作成できます。
.pfx
プロセスを使用して、 ファイル内の証明書を使用または生成することもできます。また、[マニフェストの署名] 手順では、開発中およびテスト時にのみ使用するテスト証明書を作成することも、運用環境では IT 部門または承認されたソースによって発行された証明書を使用することもできます。
ClickOnce を使用した .NET Windows デスクトップ アプリの配置を参照してください。
Visual Studio 2022 または Visual Studio 2019 の .NET Framework および Visual Basic プロジェクトの場合:
- プロジェクトのプロパティ ウィンドウの [ 署名 ] タブを開きます ( ソリューション エクスプローラー でプロジェクト ノードを右クリックし、[ プロパティ] を選択します)。 [署名] タブを選択します
- [ アセンブリに署名する ] チェック ボックスをオンにします。
- キー ファイルを指定します。 新しいキー ファイルを作成する場合、新しいキー ファイルは常に .pfx 形式で作成されます。 新しいファイルの名前とパスワードが必要です。
警告
他のユーザーがキー ファイルを使用できないようにするには、常にパスワードでキー ファイルを保護する必要があります。 プロバイダーまたは証明書ストアを使用してキーをセキュリティで保護することもできます。
既に作成したキーをポイントすることもできます。 キーの作成の詳細については、「 公開キーと秘密キーのペアを作成する」を参照してください。
公開キーにのみアクセスできる場合は、遅延署名を使用してキーの割り当てを延期できます。 遅延署名を有効にするには、[ 遅延署名のみ ] チェック ボックスをオンにします。 遅延署名されたプロジェクトは実行されません。また、デバッグすることもできません。 ただし、Sn.exe オプションを使用して、開発中の検証をスキップできます。