1.Microsoft Windows?SDK(必須安裝以取得以下所需的工具)
?pvk2pfx.exe
?inf2cat.exe
?signtool.exe
2. 微軟交叉憑證 請在這篇文章底部的附加文件下載此憑證,文件名是 MSCV-VSClass3.cer
3. PVK 匯入(賽門鐵克 不支援此工具)
如果您的證書不在個人證書欄,使用PVK工具導入您的證書到個人證書欄。
從使用命令行界面signtool.exe 簽署代碼。
如果想成功簽署驅動程序文件,請確保遵循以下步驟:
1. 確保Microsoft驗證代碼簽名證書被安裝在用戶的個人證書存儲。 (這可能需要pvk2pfx.exe和/或
pvkimport.exe)
2. 使用inf2cat.exe驗證驅動程序包INF文件,并創建一個有效的目錄文件。如果成功,一個目錄文件
(*.cat)將被創建。
3. 使用signtool.exe簽署目錄(*.cat)和所有的驅動程序(的* .sys),如下列指令:
注意:將 CatFileName.cat 置換為你需要簽署的文件名。 這將需要針對所有的驅動和目錄文件的運
行
SHA-1包含時間戳:
signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /s MY /n "Symantec Corp"
/thttp://timestamp.veriSign.com/scripts/timstamp.dll C:\CatFileName.cat
SHA-1不包含時間戳:
signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /s MY /n "Symantec Corp" C:
\CatFileName.cat
SHA-256包含RFC3161時間戳:
signtool sign /v /ac C:\Authenticode\MSCV-VSClass3.cer /s MY /n "Symantec Corp" /fd sha256
/trhttp://sha256timestamp.ws.symantec.com/sha256/ C:\CatFileName.cat
SHA-256不包含RFC3161時間戳:
signtool sign /v /ac C:\Authenticode\MSCV-VSClass3.cer /s MY /n "Symantec Corp" /fd sha256
C:\CatFileName.cat
4. 確認文件被正確交叉簽署,請使用以下語法,并尋找“微軟代碼驗證根(Microsoft Code
Verification Root)":
signtool verify /v /kp "C:\driver.sys"
此范例使用數個SignTool 支援的參數:
?Sign:設定工具簽署名為CatFileName.cat 的目錄檔
?/a: 自動選擇最佳的簽名證書。登錄工具會找到所有滿足規定條件,并選擇一個有效時間最長的有效
證書。如果這個選項不存在,登錄工具期望發現只有一個有效的簽名證書。
?
/v:指定verbose 選項,用于成功執行或警告訊息
?
?
/s:指定名為SPCCertificateStore 的憑證存放區(如果憑證匯入「個人存放區」中,則
SPCCertificateStore 為My)
?
?/n:是指憑證中出現在「ISSUED TO」欄位的公司名稱。
?/t:指定數位簽章將加上URL 所指的時間戳記授權單位(TSA) 發行的時間戳記
?/f: 指定一個文件中的簽名證書。僅支持個人信息交換(PFX)文件格式。
?/p: 如果該文件是受密碼保護的PFX格式,使用/ p選項來指定密碼。
?/as: 追加此簽名。如果目前沒有主簽名,這一簽名會成為主簽名
?/fd: 指定文件摘要算法用于創建文件簽名。默認值為SHA1
?/tr: 指定RFC3161時間戳服務器的URL。如果該選項(或/t)不存在,則簽名的文件不會被時間標記
。如果時間戳失敗會生成一條警告。此選項不能與/t 選項并用。
注意:加上SHA1時間戳記的賽門鐵克網址為 http://timestamp.verisign.com/scripts/timstamp.dll
(必須有timstamp.dll檔案名稱才符合舊的MS-DOS命名慣例)
賽門鐵克的SHA256 RFC3161 時間戳網址是 http://sha256timestamp.ws.symantec.com/sha256/
如需詳細資訊,請參閱下列Microsoft 知識庫文件:
Windows驅動程序工具包(WDK):http://www.microsoft.com/whdc/driver/64bitguide.mspx
使用SignTool簽署一份文件:http://msdn.microsoft.com/en-us/library/aa388170
交叉證書內核模式代碼簽名:http://msdn.microsoft.com/en-
us/library/windows/hardware/dn170454(v=vs.85).aspx
Microsoft 同時提供下列摘要版 簽署程序:
問題- 使用signtool 和交叉憑證簽署驅動程式時的問題
環境 - Vista 64 位元
解決方法- 按兩下安裝憑證,并允許根據憑證類型自動安裝。如此您就不必擔心憑證所在的憑證存放區
為何
使用SIGNTOOL 時,使用經過x64 檢查的建置環境或Server 2008 SDK 建置環境
僅交叉簽署 .SYS 檔。 CAT 檔不需要交叉簽署。載入時,系統只會查看SYS 檔進行驗證,而不會查看
CAT 檔(僅適用于64 位元系統)。
交叉簽署時,請使用下列語法:注意:「Company Cert Name(公司憑證名稱)」應該與您所屬憑證的「
憑證ISSUED TO」欄位完全一致。
下列簽署語法使用一個證書存儲在密碼保護.PFX的文件
SHA-1包含時間戳:
signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /f C:\Authenticode\YourCert.pfx /p
Password /n "Symantec Corp" /t http://timestamp.verisign.com/scripts/timstamp.dll "C:
\driver.sys"
SHA-1不包含時間戳::
signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /f C:\Authenticode\YourCert.pfx /p
Password /n "Symantec Corp" "C:\driver.sys"
SHA-256包含RFC3161時間戳:
signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /f C:\Authenticode\YourCert.pfx /p
Password /n "Symantec Corp" /fd sha256
/tr http://sha256timestamp.ws.symantec.com/sha256/ "C:\driver.sys"
SHA-256不包含RFC3161時間戳:
signtool sign /v /ac "C:\Authenticode\MSCV-VSClass3.cer" /f C:\Authenticode\YourCert.pfx /p
Password /n "Symantec Corp" /fd sha256 "C:\driver.sys"
提示:
?確認程式已正確交叉簽署,請使用下列語法
signtool verify /v /kp driver.sys
?驗證驅動程序被特定的目錄文件“簽名”使用下面的命令:
signtool verify /v /kp /c "C:\CatFileName.cat" "C:\driver.sys"
?為了有效減少啟動時間,簽署所有驅動程序和目錄文件。
MSCV-VSClass3[1].cer下載
https://symwisedownload.symantec.com/resources/sites/SYMWISE/content/live/SOLUTION/5000/SO5
820/zh_CN/MSCV-VSClass3%5B1%5D.cer?__gda__=1469141685_f4623dc529715f095ed6cc1539bd5433