[英]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.