记录一次对文件数字签名
有时候报毒,或是需要权限(比如 .sys驱动)需要文件加上签名的要求。
代码签名(Code signing)是对各类软件代码文件进行数字签名,以确认软件发行者身份并保证软件在签名后未被篡改,它使用数字证书来识别软件的发布商,使用哈希算法来确保软件的完整性。代码签名机制借助PKI密码技术及数字证书,规范了软件的发行,帮助开发者和最终用户建立安全信任的软件发布环境和使用环境。
Windows内核代码 .sys文件、ActiveX文件、 .exe 和 .dll 文件、Java Applets、J2ME MIDlet、Office宏文件等多种类型的文件,都需要进行软件代码数字签名。对软件代码文件部署数字签名不仅需要代码签名证书,还需要代码签名工具软件将数字签名嵌入到软件中。下面说下微软推出SignTool工具
微软SignTool命令行工具
SignTool是微软提供的命令行工具,用于对软件代码进行数字签名,验证代码签名和时间戳。安装 Visual Studio 和 Windows SDK 时会自动安装此工具。要运行工具,可使用 Visual Studio 命令提示符或 Windows SDK 命令提示符(也称 CMD Shell)。您可以使用这些实用程序轻松运行工具,而不需要导航到安装文件夹。Signtool只能采用命令行方式进行代码签名,没有可视化引导界面,适合有命令行使用基础的用户。
先上传工具 签名工具
第一步 生成证书
makecert.exe -r -pe -ss Stweily -n "CN=Stweily" Stweily.cer
第二步 签名 (GDriver.sys是我需要签名的驱动文件 如果多个就是signtool sign /v /s Stweily /n Stweily A.sys B.sys --空格分开
signtool.exe sign /v /s Stweily /n Stweily.itc.com GDriver.sys
特记录一下 方便以后使用
🧰 签名工具signtool.exe
| 参数 | 含义 |
|---|---|
/a |
自动选择系统中符合条件的证书进行签名(比如符合用途的第一个) |
/f <文件> |
指定证书文件(通常是 .pfx 文件) |
/p <密码> |
如果 .pfx 文件有密码,使用此参数提供 |
/csp <名称> |
指定 CSP(加密服务提供者)名称,配合 Smart Card 等使用 |
/k <容器名> |
指定私钥容器名称,用于指定特定证书 |
/n <主题名称> |
按主题名称查找证书(通常是组织名或发行者名) |
/r <颁发者> |
限定按颁发者名称来筛选证书 |
/sha1 <指纹> |
使用 SHA1 指纹指定证书(最精确) |
/tr <URL> |
指定 RFC 3161 时间戳服务器(现代推荐) |
/t <URL> |
指定旧式的 Authenticode 时间戳服务器 |
/td <算法> |
指定时间戳使用的哈希算法(如 sha256) |
/fd <算法> |
指定文件签名的哈希算法(如 sha256) |
/as |
增量签名(用于多次签名同一个文件,比如嵌入多个签名) |
/debug |
显示调试输出信息 |
/v |
输出详细信息(verbose) |
/d <描述> |
提供签名的说明文字 |
/du <描述 URL> |
提供签名说明的网址链接 |
/s <store> |
指定证书所在的存储区(Store),比如:My(当前用户的“个人”存储区) |
/n <subject> |
根据主题名称查找证书(如:公司名或证书显示名称) |
/sha1 <thumbprint> |
根据 SHA1 指纹查找证书 |
/sm |
表示从本地计算机级的存储区中查找(默认是当前用户) |

浙公网安备 33010602011771号