我需要數字簽名& timestamp PE文件(實際上是EFI)在Linux上。我發現了3個用於簽署PE文件的工具:pesign
,osslsigncode
和signcode
(單聲道),但它看起來沒有一個完全符合我的需要。問題是,關鍵在硬件令牌上,無法導出。因此我必須創建一個證書數據庫,在那裏添加令牌驅動程序,並通過這個數據庫進行工作。只有pesign
允許這個,但它不支持時間戳。 osslsigncode
和signcode
支持時間戳,但它們不能使用數據庫。如何將時間戳證書添加到Linux上的簽名PE文件?
Windows signttool.exe
可以執行簽名和時間戳作爲單獨的步驟。所以我想,我可能會使用pesign
簽署該文件,然後僅使用其他工具對其進行時間戳記。但是,據我所知,osslsigncode
和signcode
不支持單獨的時間戳(在osslsigncode
項目中,它列在TODO
文件中,但在存儲庫中沒有任何標記)。
我錯過了一些工具嗎?有沒有太低級的圖書館可以讓我自己編寫這樣的程序? (最好是C/C++/Perl/Python)。我嘗試從osslsigncode
獲取時間戳代碼,但未能輕鬆將它從前面的步驟中移除(刪除現有簽名並添加一個新簽名)。
P.S.我也嘗試在酒下運行signtool.exe
,但1)未能使其工作,並且2)我不確定它是否在法律上允許(我不善於分析EULA)。
請您詳細說明該修補程序如何提供幫助?我設法編譯osslsigncode,但我不明白「pkcs11engine」和「pkcs11module」是什麼。我嘗試使用SafeNet的libeToken.so作爲模塊,並使用engine_pkcs11作爲引擎(我也必須使用libp11編譯它),但是當我嘗試簽名文件時失敗:「無法讀取證書文件:(null)」從源代碼我可以看到,引擎+模塊方案仍然需要-certs參數。我在哪裏得到它?我只有一個令牌。 – 2015-07-12 15:05:50
我已經擴展了我的答案 – mat 2015-07-13 09:10:09
我不明白我應該提供什麼證書,以及如何獲得slotID和keyID,但是當我簡單地從令牌導出證書時,'osslsigncode'同意簽署我的測試文件,即使沒有'-key'參數。這只是有點令人困惑,爲什麼我應該明確地導出證書,如果程序可以直接從令牌中獲取它......但是好的。我還沒有進行廣泛的測試,但乍一看它看起來工作得很好。感謝您的提示! – 2015-07-15 22:13:04