我有一個使用各種第三方庫(如JSON.NET)構建的應用程序。我是否應該對第三方DLL(如JSON.NET)進行數字簽名?
我想確保構成我的應用程序的所有DLL都是數字簽名的,包括第三方DLL。鑑於這些不是由作者簽署的,我可以/應該自己簽署第三方協議嗎?
我有一個使用各種第三方庫(如JSON.NET)構建的應用程序。我是否應該對第三方DLL(如JSON.NET)進行數字簽名?
我想確保構成我的應用程序的所有DLL都是數字簽名的,包括第三方DLL。鑑於這些不是由作者簽署的,我可以/應該自己簽署第三方協議嗎?
您是在談論強命名還是關於authenticode簽名?後者的問題是加載了authenticode簽名的程序集,.NET驗證證書以及某些配置(例如,當需要檢查OCSP並且無法訪問OCSP時),這可能需要幾十秒。因此,我們不得不停止使用authenticode和X.509證書籤署我們的程序集。
另一個缺點是,如果簽名程序集以某種方式被惡意軟件使用,某些不符合防病毒公司要求的專家可以(a)將程序集標記爲惡意軟件,(b)更糟的是,抱怨發給你的代碼簽名證書的證書頒發機構,證書將被撤銷。
.NET強命名(使用沒有證書的密鑰對)或多或少是您的私人業務。
更新:Authenticode通常應用於PE格式文件(EXE和DLL),SYS和CAB。強命名是純粹的.NET技術。
警告消息提到Authenticode簽名。簽署安裝程序是必要的(這是肯定的),並且足以擺脫該消息,除非系統策略設置爲僅允許運行簽名應用程序(在這種情況下,您的應用程序的EXE也必須簽名)。
只是試圖(不成功)在互聯網上找到同一個問題的答案。
我所做的結果是檢查Google和Adobe如何交付其產品,並發現其文件夾中的每個二進制文件都已簽名,包括第三方文件。
幾個例子: 1.谷歌瀏覽器包括pepflashplayer.dll,它受Adobe版權保護,但由「Google Inc.」進行數字簽名。 2. Adobe Reader包含icudt40.dll,它受IBM版權保護,但由「Adobe Systems」進行數字簽名
因此,我認爲最佳做法是簽署構成您的應用程序的所有二進制文件,包括第三第四方。這很有意義,因爲它可以幫助您避免或至少輕鬆檢測到客戶機器上發生的篡改。
@EugeneMayevskiEldoS:謝謝。嗯,我不確定 - 差別不是我所知道的。我試圖做的是讓我的應用程序安裝/運行,而不會導致任何「此應用程序未簽名」警告。 –
也許我應該只簽署安裝程序,而不是DLL本身? –
已添加更新來回答您的問題 –