2011-04-15 34 views
5

這是一個很好的做法,始終簽署可執行文件(exe,dll,ocx等)。另一方面,對於一個開源項目,它可能會被視爲無視所有其他開發人員對該項目的貢獻。應開放源代碼庫進行數字簽名

對於我來說,這是一個非常道德的困境,我希望能夠從類似情況的人或者爲開源項目做出貢獻的人那裏聽到更多意見。

我想說明的是,這個問題是針對使用.NET 4編寫的C#開源項目,因此當用戶單擊可執行文件時,系統會提示他或她會發出警告,指出該文件來自不受信任的發佈者,如果它沒有數字簽名。

順便說一句,這些程序集都已經具有強命名(簽名),但它們尚未進行數字簽名(即使用Verisign代碼簽名證書)。

+1

咦?運行它們時,.NET應用程序不會顯示「不受信任的發佈者」警告。我一直都在構建和運行.NET應用程序,並且從來沒有從您的其中一個人那裏得到警告。 – 2011-04-15 14:31:14

+2

是的,如果你從網上下載它,而不是你在本地編譯的。 – 2011-04-15 15:06:25

+2

@Joe White:如果您使用安裝程序或MSI分發某些內容,則必須對其進行代碼簽名,否則您將收到來自IE *和*討厭UAC警告的警告。 [這是一個例子](http://www.autoitscript.com/autoit3/docs/intro/autoit_on_vista.htm)你看到的 - 最後一個屏幕是你從一個未簽名的可執行文件中得到的。 – josh3736 2011-04-15 15:24:38

回答

4

.net是許多功能需求(尤其是庫)需要文件使用強名稱密鑰簽名的不同的野獸,但這些可以自簽名而不需要最終產品的投訴(它使用的程序證書不是彈出您在原始問題中引用的消息框的庫)。

然而,在一般情況下,我看到一個小組在使用私鑰簽署官方發行版時沒有任何問題。如果您對源代碼進行了某些操作,並在技術上重新編譯「」,但我不信任您。只要未從特定發佈者簽署的可執行文件不會阻止其以預期的方式使用(GPL中的tivoization子句),我認爲沒有理由不簽署可執行文件。

2

說這是「相當倫理的困境」,可能是吹捧它不成比例。你一定要code sign你的可執行文件,我真的沒有看到你簽署它的問題。例如,TortoiseSVN由「開源開發人員Stefan Kueng」簽名。

也就是說,爲您的項目組建一些法律實體可能是一個好主意,然後以項目實體的名義獲得代碼簽名證書。這樣,您的項目名稱就不會出現在發佈商身上,而不是您親自簽署可執行文件(因此「獲得所有功勞」)。

如果您在美國,我會建議您組建一個LLC501(c)(3) organization,它可以免除所得稅,並允許個人爲該項目進行減稅捐贈。 (Many開源項目組織爲501(c)(3)個實體,其中包括WordPressjQuery)。我看到你在土耳其,因此你必須研究你當地的形成某種法律實體的要求;一旦形成,您就可以以項目實體的名義而不是您自己的名義從CA獲得證書。