代码签名是Windows软件分发中绕不开的一步。未签名的EXE或DLL在用户下载运行时,容易触发SmartScreen的“未知发布者”提示,部分用户会因此放弃安装。
传统方案是使用微软Signtool,但证书调用、参数组合和错误排查对不熟悉PKI的团队成员并不友好。安信代码签名证书工具是一款开源、免费的中文图形化工具,目标是把代码签名从命令行搬到可视化界面中完成。
一、为什么需要图形化代码签名工具
Signtool本身可靠,但使用门槛集中在两个环节。
第一是证书接入。云证书需要配合SimplySign等客户端调用私钥,硬件UKey需要安装对应驱动。
第二是参数编排。签名时要正确指定证书、哈希算法、时间戳服务器和输出位置,任何一项出错都可能导致签名失败。
安信代码签名证书工具的做法,是将这些步骤封装为界面操作。用户打开工具后刷新证书列表,选择目标证书,添加待签名文件,指定输出目录,点击签名即可完成队列处理。
私钥始终停留在原有证书客户端或硬件设备中,工具本身不接触私钥导出,这在一定程度上降低了密钥泄露风险。
二、代码签名证书工具的主要功能
证书列表刷新:自动识别当前系统可用的代码签名证书。
图形化签名流程:通过界面选择证书、文件和输出目录,减少命令行参数记忆。
批量队列处理:从文件夹导入多个文件,按队列统一签名。
单签与双签模式:常规场景使用SHA-256单签;双签面向仍需兼容早期Windows的环境。
时间戳配置:内置RFC 3161时间戳服务地址配置,避免证书到期后签名失效。
诊断日志导出:签名失败时可导出日志,便于定位证书、驱动或参数问题。
中文界面与说明:常用操作配有文字提示,降低非专业PKI用户的理解成本。
三、代码签名证书工具使用流程
1.安装并登录对应的证书客户端,或插入硬件UKey并安装驱动。
2.打开安信代码签名证书工具,刷新证书列表。
3.选择用于签名的证书。
4.添加单个文件,或从文件夹批量导入待签名文件。
5.选择单签或双签模式,确认时间戳配置。
6.指定输出目录,启动签名队列。
7.查看处理结果;如有失败,导出诊断日志排查。
四、下载与获取方式
安信代码签名证书工具已在GitHub开源,仓库地址为:
https://github.com/anxinssl/anxin-code-signing-tool
用户可以在该仓库的Releases页面下载安装包,也可以克隆源码自行构建。工具以GPL-3.0协议开源,源码可供审查,便于在内部工具链中使用。
需要说明的是,GitHub上提供的是签名工具,不是代码签名证书本身。使用前仍需自备有效的代码签名证书、对应的云证书客户端或硬件UKey及驱动。
五、适用场景与限制
安信代码签名证书工具更适合已经持有有效代码签名证书、希望减少命令行操作负担的开发者和小型团队。
它不附带证书。用户需要自行准备云证书客户端或硬件UKey及其驱动,证书必须具有代码签名用途,且私钥可通过对应方式调用。
因此,它并非“开箱即用”的签名方案,而是在证书与签名操作之间增加了一层图形化调度。
对于需要嵌入CI/CD自动化流水线的场景,Signtool或脚本化方案仍然更合适。但在本地手动签名、小批量发布或团队成员轮流操作的场景中,图形界面带来的可重复性和可检查性具有实际价值。
工具以GPL-3.0协议开源,源码可供审查或自行构建,便于在内部工具链中使用。
FAQ(常见问题)
Q:使用安信工具签名后,证书到期了已签名的软件还能正常验证吗?
取决于签名时是否添加了时间戳。如果配置了可用的RFC 3161时间戳服务,签名会被记录在证书有效期内,证书到期后已签名文件通常仍可正常验证;未添加时间戳的签名在证书过期后将失去有效性。
Q:工具支持SHA-1和SHA-256双签吗?
支持,但有条件。双签功能面向EXE、DLL等PE文件,且需要文件本身支持双签并选择合适的辅助证书;MSI和CAB文件在本工具中不提供双签选项。
Q:我已经有云证书或UKey,还需要额外安装什么?
云证书用户需要安装并登录对应的兼容客户端,例如Certum云证书配合SimplySign Desktop;硬件UKey用户需要安装设备驱动,确保系统能够识别证书和私钥。工具安装包自带.NET运行时,无需额外配置SDK。