簡體   English   中英

在Linux機器上簽署NSIS安裝程序

[英]Sign NSIS installer on Linux box

目前,我在Linux機器上使用NSIS為程序生成安裝程序。 NSIS二進制文件已經為Ubuntu編譯,使用.nsi腳本沒有任何困難。 但是,生成的setup.exe文件是未簽名的。 對於通過大多數常見Web瀏覽器下載安裝程序的用戶,以及運行時Windows自身的警告,這會導致可怕的警告。

我們想避免這些警告,除非我遺漏了某些內容,否則需要使用Windows工具對生成的setup.exe文件進行簽名。 有沒有辦法在非Windows機器上執行此操作?

不幸的是,每個安裝程序都是唯一的(根據客戶的請求捆綁不同的文件,並包含唯一的ID),因此我無法在Windows計算機上簽署安裝程序,然后上傳它。

您最好的選擇可能是使用: osslsigncode 為我輕松構建(確保提供OpenSSL標頭)。 但是,內核模式簽名策略可能有困難(將父證書嵌入到根目錄中) - 因此您可能仍然需要最終使用WINE。

幾個星期前我不得不這樣做,不使用葡萄酒。 我所做的是將pfx文件導入到Windows,然后使用“如果可能,在證書路徑中包含所有證書”選項將其導出。 然后我按照這個頁面上的說明進行操作。

獲得所有證書(spc和pvk文件)后,應使用以下命令:

signcode -spc [spc file] -v [pvk file] -a sha1 -$ commercial -t http://timestamp.verisign.com/scripts/timstamp.dll -tr 10 [exe file to sign] 

我不得不安裝mono-dev pack:

sudo apt-get install mono-devel

Windows的簽名文件使用Microsoft Authenticode簽名。 SDK中有一個工具可以簽署可執行文件和DLL( signtool.exe )。 您可以使用Wine運行它。

也可以通過Windows API調用來簽名文件 - 這些函數可能會在Wine中實現,但我有點懷疑它,因為Authenticode僅由Microsoft使用和實現(據我所知)。

但是這個工具並不是很多 - 它基本上將證書和簽名時間戳附加在文件末尾。 Linux也可能存在適應性。

這是一個鏈接到使用signcode工作的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM