2010-12-17 20 views
15

在.NET here讀過有關強名稱,例如,我有以下問題:.NET:強命名與驗證碼

我們必須與我們簽訂了所有的EXE的驗證碼代碼簽名證書,DLL和MSI文件。這樣做的好處是Windows知道MSI來自可信來源,並且如果需要,每個文件的真實性都可以被驗證。

我們目前不使用.NET強名。我已經讀過強命名文件,這意味着它是用自簽名證書進行數字簽名的。我對此的看法是,由可信認證中心簽署的Authenticode證書比自簽名證書更有價值,其真實性無論如何都不能驗證,因爲它們缺少根證書(我們不會將其分發給最終用戶,我們!?)。

問:是否有另外強命名組件的任何值,如果驗證碼簽名已被使用?

回答

11

答案將取決於您爲什麼創建了一個強名稱 - 強名稱的用意是爲該程序集創建唯一標識。例如,如果您需要在GAC中推送您的程序集,則必須使用強名稱。然而,強名稱並非真正用於驗證發佈者的真實性 - Authenticode用於此目的。看到這篇文章:http://blogs.msdn.com/b/shawnfa/archive/2005/12/13/authenticode-and-assemblies.aspx

+0

所以我只需要強大的名字把我的程序集放入GAC。我們不把我們的組件放在那裏,所以不需要強名。 – 2010-12-17 14:27:37

+4

它並不完整地發佈到GAC--它也可以用來確保應用程序引用的DLL是您想要的 - 因爲強名稱要求所有被引用的DLL也具有強名稱,它可以防止某人交換一個惡意的DLL。再一次,這並不能證實_who_寫了它,但它確實確保所有程序集都是由有權訪問相同SNK的人編寫的 – Basic 2010-12-18 22:46:41