2014-11-08 72 views
0

這是試圖瞭解新材料的學術問題。在正規學校的意義上不是學術性的,而是在持續教育意義上,想要處理我以前從未接觸過的發展領域。正在讀取正在執行的程序集簽名pfx/cert

所以在我的理解中,我創建了一個程序集並通過「簽名」創建了一個強名稱/ X509Certificate。

所以我創建了一個空的winapp。我轉到簽名選項卡上的項目屬性並使用密碼對程序集簽名。

將文件testing.pfx添加到我的項目中。

在表單加載我然後執行此代碼思考我會看到我的程序集簽署證書只有我不是因爲它是空的......?

Assembly ass = Assembly.GetExecutingAssembly(); 
Module mod = ass.GetModules().First(); 
X509Certificate cert = mod.GetSignerCertificate(); 

cert爲空。這是爲什麼?我是否做了錯誤的檢索證書,或者我的腦袋裏混雜着什麼東西,我尋找的東西不是我正在尋找的地方?

謝謝


編輯

@p市盈率的我用讀您的文章和MSDN後以下。

signtool符號/一個C:/....../ MyFile.exe

signtool符號/ F C:/....../ MyCert.pfx/P MyPassword輸入C:/ ....../MyFile.exe

兩人都說他們成功完成。但是,運行上面的代碼塊仍會生成一個空證書。

現在我可能錯過了或者做錯了我正在使用visual studio調試版本,這是我用於簽名的exe文件的路徑。

C:.... \ LicensedControlTest \ OBJ \ 86 \調試

+1

有兩種不同的簽名經常會讓人感到困惑。強名稱簽名和代碼簽名(即數字簽名,例如Authenticode)。見[this](http://blogs.msdn.com/b/ericlippert/archive/2009/09/03/what-s-the-difference-part-five-certificate-signing-vs-strong-naming.aspx )。只有後一種簽名纔有證書。您只需將一個強大的名稱應用於裝配。 – 2014-11-08 04:25:38

+0

@mikez謝謝。 Eric的文章幫助解釋了這些差異。 – GPGVM 2014-11-09 15:47:51

回答

1

您需要驗證碼程序集簽名。您可以使用文件簽名工具(Signcode.exe)來完成此操作,該工具將使用Authenticode簽名在程序集上簽名。基本上,你只需使用signcode運行一個命令,它將Authenticode簽署你的程序集。

如果您查看GetSignerCertificate的文檔,您將看到如果程序集未進行authenticode簽名,則會出現null

signcode /spc myCertificate.spc /v myKey.pvk myAssembly 

這是基礎知識,你可以在這裏找到更多的信息在MSDN http://msdn.microsoft.com/en-US/library/9sh96ycy(v=vs.80).aspx

+0

請參閱編輯。我相信你是100%正確的,我只是做錯了什麼。 – GPGVM 2014-11-10 14:01:33

相關問題