Sn.exe (厳密名ツール)Sn.exe (Strong Name Tool)

厳密名ツール (Sn.exe) は、厳密な名前を使用してアセンブリに署名する場合に役立ちます。The Strong Name tool (Sn.exe) helps sign assemblies with strong names. Sn.exe には、キーの管理、署名の生成、署名の検査に関する各オプションが用意されています。Sn.exe provides options for key management, signature generation, and signature verification.

警告

セキュリティに関しては、厳格な名前に依存しないでください。Do not rely on strong names for security. 厳格な名前は、一意の ID を提供するだけです。They provide a unique identity only.

厳密な名前付けと厳密な名前付きアセンブリについて詳しくは、「厳密な名前付きアセンブリ」 と「方法: 厳密な名前でアセンブリに署名する」 を参照してください。For more information on strong naming and strong-named assemblies, see Strong-Named Assemblies and How to: Sign an Assembly with a Strong Name.

厳密名ツールは Visual Studio と共に自動的にインストールされます。The Strong Name tool is automatically installed with Visual Studio. このツールを開始するには、開発者コマンド プロンプト (または、Windows 7 の Visual Studio コマンド プロンプト) を使用します。To start the tool, use the Developer Command Prompt (or the Visual Studio Command Prompt in Windows 7). 詳細については、「Visual Studio 用開発者コマンド プロンプト」を参照してください。For more information, see Command Prompts.

注意

64 ビット コンピューターでは、Visual Studio 用開発者コマンド プロンプトを使用して 32 ビット バージョンの Sn.exe を、Visual Studio x64 Win64 コマンド プロンプトを使用して 64 ビット バージョンを実行してください。On 64-bit computers, run the 32-bit version of Sn.exe by using the Developer Command Prompt for Visual Studio and the 64-bit version by using the Visual Studio x64 Win64 Command Prompt.

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

構文Syntax

sn [-quiet][option [parameter(s)]]  

パラメーターParameters

オプションOption 説明Description
-a identityKeyPairFile signaturePublicKeyFile AssemblySignatureKeyAttribute データを生成して、ID キーをファイルからの署名キーに移行します。Generates AssemblySignatureKeyAttribute data to migrate the identity key to the signature key from a file.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile AssemblySignatureKeyAttribute データを生成して、ID キーをキー コンテナーからの署名キーに移行します。Generates AssemblySignatureKeyAttribute data to migrate the identity key to the signature key from a key container.
-c [csp] 厳密な名前による署名に使用する既定の暗号サービス プロバイダー (CSP: Cryptographic Service Provider) を設定します。Sets the default cryptographic service provider (CSP) to use for strong name signing. この設定は、コンピューター全体に適用されます。This setting applies to the entire computer. CSP 名を指定しない場合は、現在の設定がクリアされます。If you do not specify a CSP name, Sn.exe clears the current setting.
-d container 指定したキー コンテナーを厳密な名前 CSP から削除します。Deletes the specified key container from the strong name CSP.
-D assembly1 assembly2 2 つのアセンブリの違いが、署名だけかどうかを検査します。Verifies that two assemblies differ only by signature. 通常は、このオプションは、別のキー ペアを使用してアセンブリに再署名した後のチェック用として使用されます。This is often used as a check after an assembly has been re-signed with a different key pair.
-e assembly outfile assembly から公開キーを抽出し、outfile に格納します。Extracts the public key from assembly and stores it in outfile.
-h このツールのコマンド構文とオプションを表示します。Displays command syntax and options for the tool.
-i infile container 指定したキー コンテナーに、infile に含まれるキー ペアをインストールします。Installs the key pair from infile in the specified key container. キー コンテナーは厳密な名前 CSP 内に常駐します。The key container resides in the strong name CSP.
-k [keysize] outfile 指定したサイズの新しい RSACryptoServiceProvider キーを生成し、指定したファイルに書き込みます。Generates a new RSACryptoServiceProvider key of the specified size and writes it to the specified file. 公開キーと秘密キーの両方がファイルに書き込みまれます。Both a public and private key are written to the file.

キーのサイズを指定しない場合、Microsoft Enhanced Cryptographic Provider をインストールしている場合は既定で 1,024 ビットのキーが生成され、インストールしていない場合は既定で 512 ビットのキーが生成されます。If you do not specify a key size, a 1,024-bit key is generated by default if you have the Microsoft enhanced cryptographic provider installed; otherwise, a 512-bit key is generated.

Microsoft Enhanced Cryptographic Provider をインストールしている場合、keysize パラメーターは、8 ビット間隔で 384 ビットから 16,384 ビットまでの長さのキーをサポートします。The keysize parameter supports key lengths from 384 bits to 16,384 bits in increments of 8 bits if you have the Microsoft enhanced cryptographic provider installed. Microsoft Enhanced Cryptographic Provider をインストールしていない場合は、8 ビット間隔で 384 ビットから 512 ビットまでの長さのキーをサポートします。It supports key lengths from 384 bits to 512 bits in increments of 8 bits if you have the Microsoft base cryptographic provider installed.
-m [y|n] キー コンテナーがコンピューターに固有であるか、ユーザーに固有であるかを指定します。Specifies whether key containers are computer-specific, or user-specific. y を指定した場合、キー コンテナーはコンピューターに固有です。If you specify y, key containers are computer-specific. n を指定した場合、キー コンテナーはユーザーに固有です。If you specify n, key containers are user-specific.

y も n も指定しない場合は、現在の設定が表示されます。If neither y nor n is specified, this option displays the current setting.
-o infile [outfile] infile から公開キーを抽出し、.csv ファイルに格納します。Extracts the public key from the infile and stores it in a .csv file. 公開キーの各バイトはコンマで区切られます。A comma separates each byte of the public key. この形式は、ソース コード内で、キーへの参照を初期化済みの配列としてハードコーディングする場合に便利です。This format is useful for hard-coding references to keys as initialized arrays in source code. outfile を指定しない場合、出力はクリップボードに保存されます。If you do not specify an outfile, this option places the output on the Clipboard. 注: このオプションでは、入力が公開キーのみであるかどうかの検証は行われません。Note: This option does not verify that the input is only a public key. infile に秘密キーとのキー ペアが格納されていた場合、秘密キーも抽出されます。If the infile contains a key pair with a private key, the private key is also extracted.
-p infile outfile [hashalg] infile 内のキー ペアから公開キーを抽出し、その公開キーを outfile に格納します。オプションで hashalg で指定された RSA アルゴリズムを使用します。Extracts the public key from the key pair in infile and stores it in outfile, optionally using the RSA algorithm specified by hashalg. この公開キーは、アセンブリ リンカー (Al.exe)/delaysign+ オプションと /keyfile オプションを使用して、アセンブリへの署名を遅らせるときに使用できます。This public key can be used to delay-sign an assembly using the /delaysign+ and /keyfile options of the Assembly Linker (Al.exe). アセンブリの署名を遅らせた場合、コンパイル時には公開キーだけが設定され、後で秘密キーが判明したときに追加される署名用にファイル内の領域が予約されます。When an assembly is delay-signed, only the public key is set at compile time and space is reserved in the file for the signature to be added later, when the private key is known.
-pc container outfile [hashalg] container 内のキー ペアから公開キーを抽出し、outfile に格納します。Extracts the public key from the key pair in container and stores it in outfile. hashalg オプションを使用する場合、RSA アルゴリズムにより公開キーが抽出されます。If you use the hashalg option, the RSA algorithm is used to extract the public key.
-Pb [y|n] 厳密な名前を省略するポリシーが強制されるかどうかを指定します。Specifies whether the strong-name bypass policy is enforced. y を指定すると、完全に信頼されている AppDomain に完全信頼アセンブリが読み込まれるとき、アセンブリの厳密な名前の検証は行われません。If you specify y, strong names for full-trust assemblies are not validated when loaded into a full-trust AppDomain. n を指定した場合は、厳密な名前が正しいかどうかのみ検証されますが、特定の厳密な名前については確認されません。If you specify n, strong names are validated for correctness, but not for a specific strong name. StrongNameIdentityPermission は、完全に信頼されているアセンブリには効果がありません。The StrongNameIdentityPermission has no effect on full-trust assemblies. 厳密な名前の一致については、独自のチェックを実行する必要があります。You must perform your own check for a strong name match.

yn も指定しない場合は、現在の設定が表示されます。If neither y nor n is specified, this option displays the current setting. 既定値は、y です。The default is y. 注: 64 ビット コンピューターでは、Sn.exe の 32 ビットのインスタンスと 64 ビットのインスタンスの両方にこのパラメーターを設定する必要があります。Note: On 64-bit computers, you must set this parameter in both the 32-bit and the 64-bit instances of Sn.exe.
-q[uiet] クワイエット モードを指定します。このモードでは、成功メッセージは表示されません。Specifies quiet mode; suppresses the display of success messages.
-R[a] assembly infile 以前に署名したアセンブリ、または署名を遅らせたアセンブリに、infile 内のキー ペアを使用して再署名します。Re-signs a previously signed or delay-signed assembly with the key pair in infile.

-Ra を使用すると、アセンブリ内のすべてのファイルについてハッシュが再計算されます。If -Ra is used, hashes are recomputed for all files in the assembly.
-Rc[a] assembly container 以前に署名したアセンブリ、または署名を遅らせたアセンブリに、container 内のキー ペアを使用して再署名します。Re-signs a previously signed or delay-signed assembly with the key pair in container.

-Rca を使用すると、アセンブリ内のすべてのファイルについてハッシュが再計算されます。If -Rca is used, hashes are recomputed for all files in the assembly.
-Rh assembly アセンブリ内のすべてのファイルについてハッシュを再計算します。Recomputes hashes for all files in the assembly.
-t[p] infile infile に格納されている公開キーに関するトークンを表示します。Displays the token for the public key stored in infile. infile には、以前に -p を使用してキー ペア ファイルから生成された公開キーが含まれている必要があります。The contents of infile must be a public key previously generated from a key pair file using -p. -t[p] オプションを使用して、トークンをキー ペア ファイルから直接抽出しないでください。Do not use the -t[p] option to extract the token directly from a key pair file.

トークンは、ハッシュ関数によって公開キーから算出されます。Sn.exe computes the token by using a hash function from the public key. 領域を節約するために、共通言語ランタイムは厳密な名前を持つアセンブリへの依存度を記録するときに、別のアセンブリへ参照の一部として公開キー トークンをマニフェスト内に格納します。To save space, the common language runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. -tp オプションを指定すると、トークンの他に公開キーも表示されます。The -tp option displays the public key in addition to the token. AssemblySignatureKeyAttribute 属性がアセンブリに適用されている場合、トークンは ID キー用であり、ハッシュ アルゴリズムの名前と ID キーが表示されます。If the AssemblySignatureKeyAttribute attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

このオプションはアセンブリ署名を検証しないため、信頼の決定には使用しないでください。Note that this option does not verify the assembly signature and should not be used to make trust decisions. このオプションは、生の公開キー トークン データのみを表示します。This option only displays the raw public key token data.
-T[p] assembly assembly に関する公開キー トークンを表示します。Displays the public key token for assembly. assembly には、アセンブリ マニフェストを含むファイルの名前を指定する必要があります。The assembly must be the name of a file that contains an assembly manifest.

トークンは、ハッシュ関数によって公開キーから算出されます。Sn.exe computes the token by using a hash function from the public key. 領域を節約するために、共通言語ランタイムは厳密な名前を持つアセンブリへの依存度を記録するときに、別のアセンブリへ参照の一部として公開キー トークンをマニフェスト内に格納します。To save space, the runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. -Tp オプションを指定すると、トークンの他に公開キーも表示されます。The -Tp option displays the public key in addition to the token. AssemblySignatureKeyAttribute 属性がアセンブリに適用されている場合、トークンは ID キー用であり、ハッシュ アルゴリズムの名前と ID キーが表示されます。If the AssemblySignatureKeyAttribute attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

このオプションはアセンブリ署名を検証しないため、信頼の決定には使用しないでください。Note that this option does not verify the assembly signature and should not be used to make trust decisions. このオプションは、生の公開キー トークン データのみを表示します。This option only displays the raw public key token data.
-TS assembly infile 入力ファイル内のキー ペアを使い、完全または不完全に署名されたアセンブリをテスト署名します。Test-signs the signed or partially signed assembly with the key pair in infile.
-TSc assembly container キー コンテナー コンテナー 内のキー ペアを使い、完全または不完全に署名されたアセンブリをテスト署名します。Test-signs the signed or partially signed assembly with the key pair in the key container container.
-v assembly assembly 内の厳密な名前を検査します。ここで、assembly はアセンブリ マニフェストを含むファイルの名前です。Verifies the strong name in assembly, where assembly is the name of a file that contains an assembly manifest.
-vf assembly assembly 内の厳密な名前を検査します。Verifies the strong name in assembly. -v オプションとは異なり、 -vf では -Vr オプションで無効化した場合であっても、検査を強制的に実行します。Unlike the -v option, -vf forces verification even if it is disabled using the -Vr option.
-Vk regfile.reg assembly [userlist] [infile] 指定したアセンブリを登録して検証をスキップするために使用できる登録エントリ (.reg) ファイルを作成します。Creates a registration entries (.reg) file you can use to register the specified assembly for verification skipping. -Vr オプションに適用されるアセンブリ名前付け規則が -Vk オプションにも適用されます。The rules for assembly naming that apply to the -Vr option apply to –Vk as well. userlist オプションと infile オプションについては、 -Vr オプションを参照してください。For information about the userlist and infile options, see the –Vr option.
-Vl コンピューター上の厳密な名前検査に関する、現在の設定を一覧表示します。Lists current settings for strong-name verification on this computer.
-Vr assembly [userlist] [infile] 検査をスキップする assembly を登録します。Registers assembly for verification skipping. 必要に応じて、検証の省略を適用する必要があるコンマで区切られたユーザー名のリストを指定できます。Optionally, you can specify a comma-separated list of user names the skip verification should apply to. infile を指定した場合、検査は実行されますが、検査時には infile 内の公開キーが使用されます。If you specify infile, verification remains enabled, but the public key in infile is used in verification operations. 指定した厳密な名前を持つアセンブリをすべて登録するには、 *, strongname という形式で assembly を指定します。You can specify assembly in the form *, strongname to register all assemblies with the specified strong name. strongname は、トークン化した形式の公開キーを表す 16 進形式の文字列として指定します。For strongname, specify the string of hexadecimal digits representing the tokenized form of the public key. 公開キー トークンの表示については、 -t オプションと -T オプションを参照してください。See the -t and -T options to display the public key token. 注意: このオプションは開発時だけ使用します。Caution: Use this option only during development. 検証省略リストにアセンブリを追加すると、セキュリティ上の脆弱性が生じます。Adding an assembly to the skip verification list creates a security vulnerability. 悪意のあるアセンブリは、検証省略リストに追加されたアセンブリの完全限定アセンブリ名 (アセンブリ名、バージョン、カルチャ、および公開キー トークン) を使用することによって、その ID を偽装できます。A malicious assembly could use the fully specified assembly name (assembly name, version, culture, and public key token) of the assembly added to the skip verification list to fake its identity. これによって、悪意のあるアセンブリの検証も省略できます。This would allow the malicious assembly to also skip verification.
-Vu assembly 検査をスキップする assembly の登録を解除します。Unregisters assembly for verification skipping. -Vr オプションに適用される規則と同じアセンブリ名前付け規則が -Vu オプションにも適用されます。The same rules for assembly naming that apply to -Vr apply to -Vu.
-Vx 検査をスキップするエントリをすべて削除します。Removes all verification-skipping entries.
-? このツールのコマンド構文とオプションを表示します。Displays command syntax and options for the tool.

注意

Sn.exe の全オプションでは大文字と小文字が区別されます。また、オプションが正しく認識されるためには、表記されたとおりに正確に入力する必要があります。All Sn.exe options are case-sensitive and must be typed exactly as shown to be recognized by the tool.

コメントRemarks

-R オプションと -Rc オプションは、署名を遅らせたアセンブリを処理する場合に便利です。The -R and –Rc options are useful with assemblies that have been delay-signed. その場合、コンパイル時には公開キーだけが設定され、後で秘密キーが判明したときに署名が実行されます。In this scenario, only the public key has been set at compile time and signing is performed later, when the private key is known.

注意

レジストリなどの保護されたリソースに書き込むパラメーター (例: -Vr) の場合は、管理者として SN.exe を実行してください。For parameters (for example, –Vr) that write to protected resources such as the registry, run SN.exe as an administrator.

厳密な名前ツールでは、公開キーと秘密キーの組が AT_SIGNATURE アルゴリズム識別子を使用して生成されると想定されます。The Strong Name tool assumes that public/private key pairs are generated with the AT_SIGNATURE algorithm identifier. AT_KEYEXCHANGE アルゴリズムを使用して生成された公開キー/秘密キーのペアでは、エラーが生成されます。Public/private key pairs generated with the AT_KEYEXCHANGE algorithm generate an error.

使用例Examples

新しいランダム キー ペアを作成し、keyPair.snk に格納するコマンドを次に示します。The following command creates a new, random key pair and stores it in keyPair.snk.

sn -k keyPair.snk  

厳密な名前 CSP 内のコンテナー keyPair.snk 内の MyContainer にキーを格納するコマンドを次に示します。The following command stores the key in keyPair.snk in the container MyContainer in the strong name CSP.

sn -i keyPair.snk MyContainer  

keyPair.snk から公開キーを抽出し、publicKey.snk に格納するコマンドを次に示します。The following command extracts the public key from keyPair.snk and stores it in publicKey.snk.

sn -p keyPair.snk publicKey.snk  

公開キーおよび publicKey.snk に含まれている公開キーのトークンを表示するコマンドを次に示します。The following command displays the public key and the token for the public key contained in publicKey.snk.

sn -tp publicKey.snk  

アセンブリ MyAsm.dll を検査するコマンドを次に示します。The following command verifies the assembly MyAsm.dll.

sn -v MyAsm.dll  

既定の CSP から MyContainer を削除するコマンドを次に示します。The following command deletes MyContainer from the default CSP.

sn -d MyContainer  

関連項目See also