2014-10-30 83 views
1

我正在使用signtool.exe簽署exe文件。 我想嵌入我的exe文件與.pfx證書以及exe的簽名散列(使用openssl生成簽名散列)。我只能用證書籤名。但我需要將簽名散列嵌入到exe中。可能signtool.exe符號/如可能有所幫助。 /作爲選項不指望任何參數,所以不能通過我的散列在那裏。如何在signtool.exe中將散列嵌入到exe文件中

有人可以幫我簽署我的證書和散列的exe文件。

感謝,

回答

0

隨Windows SDK 10的Signtool的版本包括嵌入簽署散列成exe文件的能力。

從以下頁面: https://vcsjones.com/2017/05/07/custom-authenticode-signing/

開始在Windows 10 SDK,兩個新的命令行開關可用,dgdi。回想一下簽名總是在Authenticode上的散列上執行。 dg選項更改signtool的行爲以輸出摘要,您可以使用您想要的任何內容進行簽名。讓我們嘗試一下notepad.exe的副本。

signtool sign /dg "C:\scratch\dir" /fd SHA256 /f public-cert.cer notepad.exe 

這需要一個文件到一個公共證書 - 存在 公共cert.cer沒有鑰匙。您還可以使用/sha1選項在僅具有公鑰的證書庫中指定 證書。 這將在「C:\ scratch \ dir」目錄中輸出幾個文件。 摘要是擴展名爲「.dig」的摘要。該文件將具有 Base64編碼摘要進行簽名。接下來,使用您的自定義工具,使用證書的私鑰簽署 摘要。如果簽名API需要原始 二進制摘要,則應在簽名前解碼 Base64簽名。

接下來,在base64中對您的簽名進行編碼,並將其放在 「C:\ scratch \ dir」目錄中,其文件名與摘要文件同名, 爲「signed」擴展名。例如,「notepad.exe.dig.signed」。

下一步是將簽名摘要以及其他 Authenticode簽名一起提取以完成簽名。

signtool sign /di "C:\scratch\dir" notepad.exe 

這樣就完成了簽約過程中,我們現在擁有的notepad.exe我們自己簽署 副本。追加簽名的方式與之前一樣, ,但/as標誌除外。

這爲簽名者使用非CSP/CNG 簽名選項或卸載簽名過程提供了很大的靈活性。現在,Signtool 也可以使用/ds選項對簡單摘要文件進行簽名。如果您有執行驗證碼簽署一個 專用服務器,您現在可以使用 的/dg/ds/di選項,這樣只有一個非常小的文件需要 移動到簽名服務器,而不是完全二元如果他們 是體積很大。