通过证明对 Windows 驱动程序进行签名
创作时间:
作者:
@小白创作中心
通过证明对 Windows 驱动程序进行签名
引用
1
来源
1.
https://learn.microsoft.com/zh-cn/windows-hardware/drivers/dashboard/attestation-signing-a-kernel-driver-for-public-release
本文介绍如何使用证明签名对驱动程序进行签名。 有关证明签名的详细信息和要求,请参阅Windows 10 证明签名的驱动程序。
先决条件
创建 CAB 文件
在本部分中,我们会逐步完成创建 CAB 文件提交的过程。 我们将使用echo 驱动程序示例来演示该过程。
典型的 CAB 文件提交必须包含:
- 驱动程序本身,例如 Echo.sys
- 驱动程序 INF 文件,仪表板使用它来简化签名过程。
- 符号文件,用于调试信息。 例如,Echo.pdb。 Microsoft 自动崩溃分析工具需要使用 .pdb 文件。
- 目录 .CAT 文件是必需的,仅用于公司验证。 Microsoft 会重新生成目录文件,并替换已提交的任何目录文件。
注意
CAB 文件中的每个驱动程序文件夹都必须支持同一组体系结构。 例如,它们必须支持 x86、x64,或者全都必须同时支持 x86 和 x64。
当引用驱动程序位置 (\\server\share) 时,请勿使用 UNC 文件共享路径。 必须使用映射的驱动器号才能使 CAB 有效。
若要创建 CAB 文件,请执行以下操作:
- 将要签名的二进制文件收集到一个目录中。 在本例中,我们使用 C:\Echo 。
- 以管理员身份打开命令提示符窗口。
- 输入 MakeCab /? 以查看 MakeCab 选项:
C:\Echo> MakeCab /?
Cabinet Maker - Lossless Data Compression Tool
MAKECAB [/V[n]] [/D var=value ...] [/L dir] source [destination]
MAKECAB [/V[n]] [/D var=value ...] /F directive_file [...]
source File to compress.
destination File name to give compressed file. If omitted, the
last character of the source file name is replaced
with an underscore (_) and used as the destination.
/F directives A file with MakeCAB directives (may be repeated). Refer to
Microsoft Cabinet SDK for information on directive_file.
/D var=value Defines variable with specified value.
/L dir Location to place destination (default is current directory).
/V[n] Verbosity level (1..3).
- 准备一个 cab 文件 DDF 输入文件。 对于我们的 Echo 驱动程序,它可能像是这样:
;*** Echo.ddf example
;
.OPTION EXPLICIT ; Generate errors
.Set CabinetFileCountThreshold=0
.Set FolderFileCountThreshold=0
.Set FolderSizeThreshold=0
.Set MaxCabinetSize=0
.Set MaxDiskFileCount=0
.Set MaxDiskSize=0
.Set CompressionType=MSZIP
.Set Cabinet=on
.Set Compress=on
;Specify file name for new cab file
.Set CabinetNameTemplate=Echo.cab
; Specify the subdirectory for the files.
; Your cab file should not have files at the root level,
; and each driver package must be in a separate subfolder.
.Set DestinationDir=Echo
;Specify files to be included in cab file
C:\Echo\Echo.Inf
C:\Echo\Echo.Sys
- 输入以下命令以创建 CAB 文件:
C:\Echo> MakeCab /f "C:\Echo\Echo.ddf
MakeCab 的输出应显示创建的 CAB 文件中的文件数。 在本例中,应该有两个文件。
C:\Echo> MakeCab /f Echo.ddf
Cabinet Maker - Lossless Data Compression Tool
17,682 bytes in 2 files
Total files: 2
Bytes before: 17,682
Bytes after: 7,374
After/Before: 41.70% compression
Time: 0.20 seconds ( 0 hr 0 min 0.20 sec)
Throughput: 86.77 Kb/second
- 在 Disk1 子目录中找到 CAB 文件。 可以在文件资源管理器中选择 CAB 文件,以验证它是否包含所需的文件。
使用 EV 证书对 CAB 文件进行签名
- 要通过 EV 证书对 CAB 文件进行签名,请使用 EV 证书提供商推荐的过程。 例如,要使用 SHA256 证书/摘要算法/时间戳对 CAB 文件进行签名,请输入以下命令:
C:\Echo> SignTool sign /s MY /n "Company Name" /fd sha256 /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td sha256 /v "C:\Echo\Disk1\Echo.cab"
重要
切记使用行业最佳做法管理 EV 代码签名过程的安全性。
使用合作伙伴中心提交 EV 签名的 Cab 文件
- 转到合作伙伴中心硬件仪表板并使用凭据登录。
- 选择“提交新硬件”。
- 在“包和签名属性”部分,输入驱动程序提交的产品名称。 此名称可用于搜索和整理驱动程序提交。
注意
如果与其他公司共享你的驱动程序,他们会看到该名称。
- 取消选中这两个测试签名选项。
- 对于“请求的签名”,选择希望包含在驱动程序包中的签名。
- 向下浏览页面,然后选择“提交”。
签名过程完成后,请从硬件仪表板下载已签名的驱动程序。
验证驱动程序是否已正确签名
完成以下步骤以确保驱动程序已正确签名。
- 下载提交文件后,解压缩驱动程序文件。
- 以管理员身份打开命令提示符窗口。
- 输入以下命令来验证驱动程序是否已按预期签名:
C:\Echo> SignTool verify Echo.Sys
- 若要列出其他信息,并让 SignTool 验证包含多个签名的文件中的所有签名,请输入以下命令:
C:\Echo> SignTool verify /pa /ph /v /d Echo.Sys
- 要确认驱动程序的 EKU,请完成以下步骤:
- 打开 Windows 资源管理器,找到二进制文件。 选择并按住(或右键单击)该文件并选择“属性”。
- 在“数字签名”选项卡上,选择签名列表中列出的项目。
- 选择“详细信息”,然后选择“查看证书”。
- 在“详细信息”选项卡上,选择“增强型密钥用法”。
当驱动程序由仪表板重新签名时将遵循以下过程:
- 追加 Microsoft SHA2 嵌入式签名。
- 如果客户使用自己的证书对驱动程序二进制文件进行嵌入式签名,将不会覆盖这些签名。
- 创建新目录文件并用 SHA2 Microsoft 证书签名。 此目录将替换客户提供的任何现有目录。
在 Windows 上测试驱动程序
按照以下说明安装示例驱动程序。
- 以管理员身份打开命令提示符窗口。 转到你的驱动程序包文件夹,然后输入以下命令:
C:\Echo> devcon install echo.inf root\ECHO
- 确认驱动程序安装过程不会显示“Windows 无法验证该驱动程序软件的发布者。”Windows 安全对话框。
创建包含多个驱动程序的提交
若要同时提交多个驱动程序,请执行以下操作:
- 为每个驱动程序创建一个子目录。
- 准备一个引用子目录的 CAB 文件 DDF 输入文件。 它应如下所示:
;*** Submission.ddf multiple driver example
;
.OPTION EXPLICIT ; Generate errors
.Set CabinetFileCountThreshold=0
.Set FolderFileCountThreshold=0
.Set FolderSizeThreshold=0
.Set MaxCabinetSize=0
.Set MaxDiskFileCount=0
.Set MaxDiskSize=0
.Set CompressionType=MSZIP
.Set Cabinet=on
.Set Compress=on
;Specify file name for new cab file
.Set CabinetNameTemplate=Echo.cab
;Specify files to be included in cab file
; First Driver
.Set DestinationDir=DriverPackage1
C:\DriverFiles\DriverPackage1\Driver1.sys
C:\DriverFiles\DriverPackage1\Driver1.inf
; Second driver
.Set DestinationDir=DriverPackage2
C:\DriverFiles\DriverPackage2\Driver2.sys
C:\DriverFiles\DriverPackage2\Driver2.inf
本文原文来自微软官方文档
热门推荐
中秋团圆必备:超级美味嫩滑的韭菜饺子
新手驾驶员必读:电动汽车驾驶全攻略
生抽和老抽的区别:从制作工艺到烹饪应用的全面解析
漓江:流淌千年的自然与文化交响曲
桂林两江四湖:打卡最美夜景!
探秘桂林:灵渠与靖江王府的历史密码
桂林摄影全攻略:十大景点拍摄技巧详解
长期恋爱中如何保持信任?
爱情心理学:保持长久恋爱的秘诀
水素杯真的能养生吗?科学解读与消费指南
水素杯真的能养生?别再被坑了!
秋冬养生新选择:富氢水杯使用全攻略
医保缴费倒计时:错过将迎3个月等待期!
做个CT就能确诊肺癌?起码误诊一半,必须要从身体里去点标本才行
怎样检查有没有肺结核
【肺部CT】认识详细步骤!进行前后要注意什么?
进销存管理完整方案:那些让人头疼的进销存难题及解决方法!
冰箱除臭清洁剂终极指南:消除异味,保持新鲜
自制中秋月饼:健康又美味!
中秋美食大揭秘:月饼、螃蟹、石榴谁更健康?
激发小学生学习动力:从理论到实践
平原县西葫芦:从“产量第一”到“质量标杆”
平原县:一根西葫芦的乡村振兴之路
北方人教你做超好吃的家常炒饼丝!
冬日暖心:北方家常炒饼丝的做法
中筋面粉:炒饼丝的最佳选择
炒饼丝的健康搭配:西红柿鸡蛋绝配!
春天的第一抹黄:罗平油菜花海
祁连山下的守护者:龙首山生态保护纪实
辽源龙首山:秋日探秘之旅