![](/img/trans.png)
[英]Exception in .NET strong name API invocation. Error while getting key info for '<my .snk file path>': Strong name key container not found
[英]Should each project being signed with a separate Strong Name Key (.snk)?
在我的Visual Studio解決方案中,我有一個網站和4-5個類庫引用的項目,其中一些也引用了外部第三方程序集。
我被賦予了為這些項目簽署程序集的任務。
我的理解是簽名的目的是不是每個人都能在不提供公鑰和版本細節的情況下使用我們的程序集,對嗎?
我應該使用一個強名稱密鑰(.snk)來簽署這些項目的所有程序集,還是應該使用單獨的強名稱密鑰對每個程序集進行簽名?
強名稱密鑰的密碼保護目的是什么?
你會怎么做?
非常感謝,
簽名的目的是不是每個人都能在不提供公鑰和版本細節的情況下使用我們的程序集,對嗎?
否。簽名驗證您 ,發布者。 它可以防止其他人制作組件的“假”版本。
我應該使用一個強名稱密鑰(.snk)來簽署這些項目的所有程序集,還是應該使用單獨的強名稱密鑰對每個程序集進行簽名?
關鍵是您的簽名,因此請為您的所有項目使用1。
強名稱密鑰的密碼保護目的是什么?
整個簽約過程取決於你是唯一擁有鑰匙的人。 沒有涉及證書。 部分簽名和受保護的密鑰可以幫助您限制有權訪問密鑰的人數。
強命名程序集的目的是能夠區分同一程序集的版本,而不是確定它的創建者。
另一方面,對程序集進行數字簽名可識別該程序集的構建器。
兩種簽名之間的區別在於第一種簽名不需要使用相同的證書,因為它不會用於識別創建者,只是為了區分同一二進制文件的不同版本。
這樣,您就可以在同一進程中加載同一程序集的兩個版本,從而允許您使用同一類的兩個版本而不會發生沖突。
另一個稱為代碼簽名的簽名,僅使用特制的證書進行代碼簽名,並將二進制文件與公共證書捆綁在一起,其名稱通常用於標識構建器,以及驗證簽名到證書頒發機構的證書鏈,使用Windows資源管理器在文件屬性中看到,第一種情況在Windows資源管理器中看不到,它可以使用在visual studio中創建的自簽名證書而沒有任何問題。
實際上,數字簽名代碼適用於所有類型的代碼,它不必是.NET程序集,它可以是普通的Win32 API DLL或EXE。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.