厳密名ツール (Sn.exe)
更新 : 2007 年 11 月
厳密名ツール (Sn.exe) は、厳密な名前を使用してアセンブリに署名する場合に役立ちます。Sn.exe には、キーの管理、署名の生成、署名の検査に関する各オプションが用意されています。
sn [-quiet][option [parameter(s)]]
パラメータ
オプション |
説明 |
---|---|
-c [csp] |
厳密な名前による署名に使用する既定の暗号サービス プロバイダ (CSP: Cryptographic Service Provider) を設定します。この設定は、コンピュータ全体に適用されます。CSP 名を指定しない場合は、現在の設定がクリアされます。 |
-d container |
指定したキー コンテナを厳密な名前 CSP から削除します。 |
-D assembly1 assembly2 |
2 つのアセンブリの違いが、署名だけかどうかを検査します。通常は、このオプションは、別のキー ペアを使用してアセンブリに再署名した後のチェック用として使用されます。 |
-e assembly outfile |
assembly から公開キーを抽出し、outfile に格納します。 |
-h |
このツールのコマンド構文とオプションを表示します。 |
-i infile container |
指定したキー コンテナに、infile に含まれるキー ペアをインストールします。キー コンテナは厳密な名前 CSP 内に常駐します。 |
-k [keysize] outfile |
指定したサイズの新しい RSACryptoServiceProvider キーを生成し、指定したファイルに書き込みます。公開キーと秘密キーの両方がファイルに書き込みまれます。 キーのサイズを指定しない場合、Microsoft Enhanced Cryptographic Provider をインストールしている場合は既定で 1,024 ビットのキーが生成され、インストールしていない場合は既定で 512 ビットのキーが生成されます。 Microsoft Enhanced Cryptographic Provider をインストールしている場合、keysize パラメータは、8 ビット間隔で 384 ビットから 16,384 ビットまでの長さのキーをサポートします。Microsoft Enhanced Cryptographic Provider をインストールしていない場合は、8 ビット間隔で 384 ビットから 512 ビットまでの長さのキーをサポートします。 |
-m [y|n] |
キー コンテナがコンピュータに固有であるか、ユーザーに固有であるかを指定します。y を指定した場合、キー コンテナはコンピュータに固有です。n を指定した場合、キー コンテナはユーザーに固有です。 y も n も指定しない場合は、現在の設定が表示されます。 |
-o infile [outfile] |
infile から公開キーを抽出し、.csv ファイルに格納します。公開キーの各バイトはコンマで区切られます。この形式は、ソース コード内で、キーへの参照を初期化済みの配列としてハードコーディングする場合に便利です。outfile を指定しない場合、出力はクリップボードに保存されます。
メモ :
このオプションでは、入力が公開キーのみであるかどうかの検証は行われません。infile に秘密キーとのキー ペアが格納されていた場合、秘密キーも抽出されます。
|
-p infile outfile |
infile 内のキー ペアから公開キーを抽出し、outfile に格納します。この公開キーは、アセンブリ リンカ (Al.exe) の /delaysign+ オプションと /keyfile オプションを使用して、アセンブリへの署名を遅らせるときに使用できます。アセンブリの署名を遅らせた場合、コンパイル時には公開キーだけが設定され、後で秘密キーが判明したときに追加される署名用にファイル内の領域が予約されます。 |
-pc container outfile |
container 内のキー ペアから公開キーを抽出し、outfile に格納します。 |
-Pb [y|n] |
厳密な名前を省略するポリシーが強制されるかどうかを指定します。y を指定すると、完全に信頼されている AppDomain に完全信頼アセンブリが読み込まれるとき、アセンブリの厳密な名前の検証は行われません。n を指定した場合は、厳密な名前が正しいかどうかのみ検証されますが、特定の厳密な名前については確認されません。StrongNameIdentityPermission は、完全に信頼されているアセンブリには効果がありません。厳密な名前の一致については、独自のチェックを実行する必要があります。 y も n も指定しない場合は、現在の設定が表示されます。既定値は y です。
メモ :
64 ビット コンピュータでは、Sn.exe の 32 ビットのインスタンスと 64 ビットのインスタンスの両方にこのパラメータを設定する必要があります。
|
-q[uiet] |
クワイエット モードを指定します。このモードでは、成功メッセージは表示されません。 |
-R[a] assembly infile |
以前に署名したアセンブリ、または署名を遅らせたアセンブリに、infile 内のキー ペアを使用して再署名します。 -Ra を使用すると、アセンブリ内のすべてのファイルについてハッシュが再計算されます。 |
-Rc[a] assembly container |
以前に署名したアセンブリ、または署名を遅らせたアセンブリに、container 内のキー ペアを使用して再署名します。 -Rca を使用すると、アセンブリ内のすべてのファイルについてハッシュが再計算されます。 |
-Rh assembly |
アセンブリ内のすべてのファイルについてハッシュを再計算します。 |
-t[p] infile |
infile に格納されている公開キーに関するトークンを表示します。infile には、以前に -p を使用してキー ペア ファイルから生成された公開キーが含まれている必要があります。-t[p] オプションを使用して、トークンをキー ペア ファイルから直接抽出しないでください。 トークンは、ハッシュ関数によって公開キーから算出されます。領域を節約するために、共通言語ランタイムは厳密な名前を持つアセンブリへの依存度を記録するときに、別のアセンブリへ参照の一部として公開キー トークンをマニフェスト内に格納します。-tp オプションを指定すると、トークンの他に公開キーも表示されます。 このオプションはアセンブリ署名を検証しないため、信頼の決定には使用しないでください。このオプションは、生の公開キー トークン データのみを表示します。 |
-T[p] assembly |
assembly に関する公開キー トークンを表示します。assembly には、アセンブリ マニフェストを含むファイルの名前を指定する必要があります。 トークンは、ハッシュ関数によって公開キーから算出されます。領域を節約するために、共通言語ランタイムは厳密な名前を持つアセンブリへの依存度を記録するときに、別のアセンブリへ参照の一部として公開キー トークンをマニフェスト内に格納します。-Tp オプションを指定すると、トークンの他に公開キーも表示されます。 このオプションはアセンブリ署名を検証しないため、信頼の決定には使用しないでください。このオプションは、生の公開キー トークン データのみを表示します。 |
-TSassembly infile |
infile のキー ペアを使用して、assembly に署名または部分署名されている署名を検査します。 |
-TSc assembly container |
キー コンテナ container のキー ペアを使用して、assembly に署名または部分署名されている署名を検査します。 |
-v assembly |
assembly 内の厳密な名前を検査します。ここで、assembly はアセンブリ マニフェストを含むファイルの名前です。 |
-vf assembly |
assembly 内の厳密な名前を検査します。-v オプションとは異なり、-vf では -Vr オプションで無効化した場合であっても、検査を強制的に実行します。 |
-Vl |
コンピュータ上の厳密な名前検査に関する、現在の設定を一覧表示します。 |
-Vr assembly [userlist] [infile] |
検査をスキップする assembly を登録します。オプションとして、コンマで区切られたユーザー名の一覧を指定できます。infile を指定した場合、検査は実行されますが、検査時には infile 内の公開キーが使用されます。指定した厳密な名前を持つアセンブリをすべて登録するには、*, strongname という形式で assembly を指定します。strongname は、トークン化した形式の公開キーを表す 16 進形式の文字列として指定する必要があります。公開キー トークンの表示については、-t オプションと -T オプションを参照してください。
注意 :
このオプションは開発時だけ使用します。検証省略リストにアセンブリを追加すると、セキュリティ上の脆弱性が生じます。悪意のあるアセンブリは、検証省略リストに追加されたアセンブリの完全限定アセンブリ名 (アセンブリ名、バージョン、カルチャ、および公開キー トークン) を使用することによって、その ID を偽装できます。これによって、悪意のあるアセンブリの検証も省略できます。
|
-Vu assembly |
検査をスキップする assembly の登録を解除します。-Vr オプションに適用される規則と同じアセンブリ名前付け規則が -Vu オプションにも適用されます。 |
-Vx |
検査をスキップするエントリをすべて削除します。 |
-? |
このツールのコマンド構文とオプションを表示します。 |
メモ : |
---|
Sn.exe の全オプションでは大文字と小文字が区別されます。また、オプションが正しく認識されるためには、表記されたとおりに正確に入力する必要があります。 |
解説
-R オプションと –Rc オプションは、署名を遅らせたアセンブリを処理する場合に便利です。その場合、コンパイル時には公開キーだけが設定され、後で秘密キーが判明したときに署名が実行されます。
例
新しいランダム キー ペアを作成し、keyPair.snk に格納するコマンドを次に示します。
sn -k keyPair.snk
厳密な名前 CSP 内のコンテナ MyContainer 内の keyPair.snk にキーを格納するコマンドを次に示します。
sn -i keyPair.snk MyContainer
keyPair.snk から公開キーを抽出し、publicKey.snk に格納するコマンドを次に示します。
sn -p keyPair.snk publicKey.snk
公開キーおよび publicKey.snk に含まれている公開キーのトークンを表示するコマンドを次に示します。
sn -tp publicKey.snk
アセンブリ MyAsm.dll を検査するコマンドを次に示します。
sn -v MyAsm.dll
既定の CSP から MyContainer を削除するコマンドを次に示します。
sn -d MyContainer