強式名稱工具 (Sn.exe)
強式名稱工具可以協助您以強式名稱簽署組件。Sn.exe 提供了金鑰管理、簽章產生和簽章驗證的選項。
sn [-quiet][option [parameter(s)]]
參數
選項 | 說明 | ||
---|---|---|---|
-c [csp] |
設定預設的密碼編譯服務提供者 (CSP) 以用於強式名稱簽署。這個設定值會套用到整個電腦。如果沒有指定 CSP 名稱,Sn.exe 會清除目前的設定值。 |
||
-d container |
從強式名稱 CSP 刪除指定的金鑰容器 (Container)。 |
||
-D assembly1 assembly2 |
驗證兩個只由簽章所區分的組件。這通常用來做為在以不同的金鑰組 (Key Pair) 重新簽署組件之後的檢查。 |
||
-e assembly outfile |
從 assembly 擷取公開金鑰 (Public Key),然後存放到 outfile。 |
||
-h |
顯示工具的命令語法和選項。 |
||
-iinfile container |
從指定金鑰容器中的 infile 安裝金鑰組。金鑰容器屬於強式名稱 CSP。 |
||
-k [keysize] outfile |
產生指定大小的新 RSACryptoServiceProvider 金鑰,並將它寫入指定的檔案中。公開和私密金鑰都會寫入檔案。 如果您沒有指定金鑰大小,則若已安裝 Microsoft 增強型密碼編譯提供者,預設會產生 1,024 位元的金鑰,否則會產生 512 位元的金鑰。 如果已安裝 Microsoft 增強型密碼編譯提供者,則 keysize 參數支援的金鑰長度會從 384 位元到 16,384 位元,其增量為 8 位元。如果已安裝 Microsoft 基底密碼編譯提供者,則支援的金鑰長度會從 384 位元到 512 位元,其增量為 8 位元。 |
||
-m [y|n] |
指定金鑰容器是電腦特定或使用者特定。如果指定 y,金鑰容器是電腦特定。如果指定 n,金鑰容器是使用者特定。 如果都不指定 y 和 n,這個選項會顯示目前的設定值。 |
||
-o infile [outfile] |
從 infile 擷取公開金鑰,然後存放到 .csv 檔案。逗號會分隔公開金鑰的每一個位元組。這個格式對金鑰的硬式程式碼撰寫參考很有幫助,如同原始程式碼中的初始陣列。如果沒有指定 outfile,這個選項會將輸出放置到剪貼簿。
|
||
-pinfile outfile |
從 infile 中的金鑰組擷取公開金鑰,然後存放到 outfile。使用組件連結器 (Al.exe) 的 /delaysign+ 和 /keyfile 選項,這個公開金鑰可以被用來延遲簽署組件。當延遲簽署組件時,只有公開金鑰會在編譯時間被設定,而且在已經知道私密金鑰時,會在檔案中為簽章保留空間,以便稍後加入。 |
||
-pc container outfile |
從 container 中的金鑰組擷取公開金鑰,並且將它儲存在 outfile 中。 |
||
-q[uiet] |
指定安靜模式;隱藏成功訊息的顯示。 |
||
-R[a] assembly infile |
以 infile 中的金鑰組重新簽署先前已簽署或延遲簽署的組件。 如果使用 -Ra,則會針對組件中的所有檔案重新計算雜湊。 |
||
-Rc[a] assembly container |
以 container 中的金鑰組重新簽署先前已簽署或延遲簽署的組件。 如果使用 -Rca,則會針對組件中的所有檔案重新計算雜湊。 |
||
-Rh assembly |
針對組件中的所有檔案重新計算雜湊。 |
||
-t[p] infile |
顯示存放在 infile 中公開金鑰的語彙基元 (Token)。infile 的內容必須是先前使用 -p 從金鑰組檔案中產生的公開金鑰。請勿使用 -t[p] 選項,直接從金鑰組檔案中抽取語彙基元。 Sn.exe 使用公開金鑰中的雜湊函式來計算語彙基元。為了節省空間,Common Language Runtime 在將相依性記錄到具有強式名稱的組件時,會將公開金鑰語彙基元存放到資訊清單做為其他組件參考的一部分。除了語彙基元之外,-tp 選項還顯示公開金鑰。 請注意,這個選項不會驗證組件簽署,且不應該用來進行信任決策。這個選項僅會顯示未經處理的公開金鑰語彙基元資料。 |
||
-T[p] assembly |
顯示 assembly 的公開金鑰語彙基元。assembly 必須是含有組件資訊清單的檔案名稱。 Sn.exe 使用公開金鑰中的雜湊函式來計算語彙基元。為了節省空間,執行階段在將相依性記錄到具有強式名稱的組件時,會將公開金鑰語彙基元存放到資訊清單做為其他組件參考的一部分。除了語彙基元之外,-Tp 選項還顯示公開金鑰。 請注意,這個選項不會驗證組件簽署,且不應該用來進行信任決策。這個選項僅會顯示未經處理的公開金鑰語彙基元資料。 |
||
-TS assembly infile |
以 infile 中的金鑰組,對已簽署或部分簽署的 assembly 進行簽署測試。 |
||
-TSc assembly container |
以金鑰容器 container 中的金鑰組,對已簽署或部分簽署的 assembly 進行簽署測試。 |
||
-vassembly |
驗證 assembly 中的強式名稱,其中 assembly 是含有組件資訊清單的檔案名稱。 |
||
-vf assembly |
驗證 assembly 中的強式名稱。-vf 和 -v 選項不一樣,即使使用 -Vr 選項來停用它,它還是會強制驗證。 |
||
-Vl |
列出這部電腦上強式名稱的目前設定值。 |
||
-Vr assembly [userlist] [infile] |
註冊驗證略過的 assembly。您可以選擇性指定使用者名稱的逗號分隔清單。如果指定 infile,驗證會保持啟用狀態,不過 infile 中的公開金鑰會被用於驗證作業中。您可以 *, strongname 格式指定 assembly,來註冊所有具有指定強式名稱的組件。Strongname 應該被指定為十六進位數字的字串,表示公開金鑰的語彙基元形式。若要顯示公開金鑰語彙基元,請參閱 -t 和 -T 選項。 警告 只能在開發期間使用這個選項。將組件加入至略過驗證清單會使安全性變弱。具有惡意的組件可能使用加入至略過驗證清單之組件的完全指定組件名稱 (組件名稱、版本、文化特性和公開金鑰語彙基元),以偽裝其識別 (Identity)。這會使具有惡意的組件也略過驗證。 |
||
-Vu assembly |
移除註冊驗證略過的 assembly。套用到 -Vr 與套用到 -Vu 的組件命名的規則 (Rule) 相同。 |
||
-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
請參閱
參考
.NET Framework 工具
組件連結器 (Al.exe)
SDK 命令提示字元