方法: 公開キーと秘密キーのキー ペアを作成するHow to: Create a Public-Private Key Pair

アセンブリに厳密な名前で署名するには、公開/秘密キーの組み合わせが必要です。To sign an assembly with a strong name, you must have a public/private key pair. このような公開キーと秘密キーからなる暗号鍵の組み合わせがコンパイル時に利用され、厳密な名前が付いたアセンブリが作成されます。This public and private cryptographic key pair is used during compilation to create a strong-named assembly. キーの組み合わせは厳密名ツール (Sn.exe) を利用して作成できます。You can create a key pair using the Strong Name tool (Sn.exe). キー ペア ファイルには通常、.snk 拡張子が与えられます。Key pair files usually have an .snk extension.

注意

Visual Studio では、C# と Visual Basic のプロジェクト プロパティ ページに [署名] タブがあります。このタブで、Sn.exe を使用することなく、既存のキー ファイルを選択したり、新しいキー ファイルを生成したりすることができます。In Visual Studio, the C# and Visual Basic project property pages include a Signing tab that enables you to select existing key files or to generate new key files without using Sn.exe. Visual C++ では、[プロパティ ページ] ウィンドウの [構成プロパティ] セクションの [リンカー] セクションの [詳細設定] プロパティ ページで既存のキー ファイルの場所を指定できます。In Visual C++, you can specify the location of an existing key file in the Advanced property page in the Linker section of the Configuration Properties section of the Property Pages window. Visual Studio 2005Visual Studio 2005 より、キー ファイル ペアを特定する AssemblyKeyFileAttribute 属性を使用できなくなりました。The use of the AssemblyKeyFileAttribute attribute to identify key file pairs has been made obsolete beginning with Visual Studio 2005Visual Studio 2005.

キー ペアを作成するにはTo create a key pair

  1. コマンド プロンプトに次のコマンドを入力します。At the command prompt, type the following command:

    sn –k <ファイル名>sn –k <file name>

    このコマンドでは、ファイル名はキー ペアを含む出力ファイルの名前になります。In this command, file name is the name of the output file containing the key pair.

次の例では、sgKey.snk という名前のキー ペアが作成されます。The following example creates a key pair called sgKey.snk.

sn -k sgKey.snk  

アセンブリに遅延署名する予定であり、キー ペア全体を制御する (テスト シナリオの範囲を超えることは予期されない) のであれば、次のコマンドを利用してキー ペアを生成し、それから個別ファイルに公開キーを抽出できます。If you intend to delay sign an assembly and you control the whole key pair (which is unlikely outside test scenarios), you can use the following commands to generate a key pair and then extract the public key from it into a separate file. 最初に、キー ペアを作成します。First, create the key pair:

sn -k keypair.snk  

次に、キー ペアから公開キーを抽出し、それを個別ファイルにコピーします。Next, extract the public key from the key pair and copy it to a separate file:

sn -p keypair.snk public.snk  

キー ペアを作成したら、厳密な名前の署名ツールで見つけられる場所にファイルを置く必要があります。Once you create the key pair, you must put the file where the strong name signing tools can find it.

厳密な名前でアセンブリに署名すると、アセンブリ リンカー (Al.exe) は、現在のディレクトリと出力ディレクトリを基準にしてキー ファイルを検索します。When signing an assembly with a strong name, the Assembly Linker (Al.exe) looks for the key file relative to the current directory and to the output directory. コマンド ライン コンパイラを使用する場合は、コード モジュールを格納する現在のディレクトリにキーをコピーするだけで十分です。When using command-line compilers, you can simply copy the key to the current directory containing your code modules.

プロジェクト プロパティに [署名] タブがない以前のバージョンの Visual Studio を利用している場合、キー ファイルの推奨場所はファイル属性が次のように指定されたプロジェクト ディレクトリです。If you are using an earlier version of Visual Studio that does not have a Signing tab in the project properties, the recommended key file location is the project directory with the file attribute specified as follows:

[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

参照See Also

厳密な名前付きアセンブリの作成と使用Creating and Using Strong-Named Assemblies