如何將.snk文件(用於強名稱簽名的.NET程序集)轉換爲適用於相同目的的受密碼保護的.pfx文件?如何將.snk文件轉換爲.pfx文件
編輯:澄清,假設我在VS和項目屬性創建項目,簽名,單擊「新強名稱密鑰文件」,並選擇不保護密鑰文件密碼:
現在想象一下,一年後,我改變了主意,想要添加密碼 - 不需要通過創建新的密鑰對來摧毀程序集的身份。我該怎麼做呢?
如何將.snk文件(用於強名稱簽名的.NET程序集)轉換爲適用於相同目的的受密碼保護的.pfx文件?如何將.snk文件轉換爲.pfx文件
編輯:澄清,假設我在VS和項目屬性創建項目,簽名,單擊「新強名稱密鑰文件」,並選擇不保護密鑰文件密碼:
現在想象一下,一年後,我改變了主意,想要添加密碼 - 不需要通過創建新的密鑰對來摧毀程序集的身份。我該怎麼做呢?
你不轉換,但是你可以簽署使用Strong Name Tool (Sn.exe)現有SNK文件。 (如果snk已被保護,因爲您需要將強名稱零件與證書分開),則會涉及幾個步驟。
pfx是在您選擇密碼保護選項時在Visual Studio中爲您創建的專用證書。您輸入的密碼用於保護此證書。
這是用於開發還是用於商業版本?我不會推薦用私鑰進行開發的程序集簽名。
雖然密碼保護你的密鑰文件是一個更好的解決方案 不是將它們存儲在清澈的,它仍然不理想。您仍需要 必須將PFX文件分發給您的所有開發人員,並且他們 都必須知道PFX文件的密碼。像這樣廣泛共享的祕密 不會保密很長時間。 理想情況下,您不應該分發私鑰來構建 並在開發過程中測試您的代碼。
閱讀CLR Inside Out(MSDN)文章Using Strong Name Signatures。
HTH,
是:密碼保護密鑰文件比存儲它們明顯好得多。因此,我想將我的(不受密碼保護的)snk轉換爲(密碼保護的)pfx,而不更改公鑰並丟失程序集的標識。我沒有多開發人員問題,所以受密碼保護的pfx比延遲簽名更理想,也更簡單。 –
我認爲密碼保護仍然是*不理想。但是......我相信可以使用強名稱工具(Sn.exe)來執行此操作 - 可以選擇提取公鑰(-p),然後重新組合它們。我之前沒有必要這麼做,所以你必須準確地確定*自己如何(什麼參數等)。 – Dennis
sn.exe具有提取公鑰的選項,但不提供私鑰。似乎提取私鑰的唯一選項是-i將其複製到CSP中 - 不幸的是它將其標記爲不可導出 –