CodeSign工具 是一个安全的、面向隐私的多平台 Java 命令行实用程序,用于远程签署 Microsoft Authenticode 和 Java 代码对象 电子签名者 EV 代码签名证书。 文件的哈希值被发送到 SSL.com 用于签名,以便不发送代码本身。 这是需要签名的敏感文件的理想选择,但不应通过网络发送进行签名。 CodeSignTool 也是自动化批处理的理想选择,用于大量签名或集成到现有 CI/CD 管道工作流中。
要了解 CodeSignTool 能够签名的所有文件类型,请参阅本文: eSigner 支持的文件类型
有关如何操作的说明 使用 signtool.exe 或 certutil.exe 自动化 EV 代码签名 请查阅 这个方法.
如果您希望使用 esigner 代替签署文件,请 请参阅此 DocSignTool 指南.
CodeSignTool安装
要安装当前版本的CodeSignTool,只需为您的操作系统下载并解压缩正确的文件即可:
请注意,Windows 下载包括 Java 运行时,但 Linux/macOS 版本需要在您的计算机上安装 Java 运行时。 该命令的 Windows 版本是一个批处理文件 (CodeSignTool.bat
),而Linux / macOS版本是shell脚本(CodeSignTool.sh
).
CodeSignTool使用概述
用法: CodeSignTool [-hV] [COMMAND] [PARAMETERS]
选项:
-h
,--help
:显示帮助消息并退出。-V
,--version
:显示版本信息并退出。
命令:
get_credential_ids
:输出与特定用户关联的电子签名者凭据 ID 列表。credential_info
:输出与凭证 ID 相关的密钥和证书信息。sign
:签名和时间戳代码对象。batch_sign
:使用一个 OTP 对多个代码对象进行签名和时间戳。hash
:预先计算哈希值以备后用batch_hash_sign
命令。batch_sign_hash
: 预先计算的签名哈希hash
命令。
参数:
-access_token=<TOKEN>
:OAuth 访问令牌.-credential_id=<CREDENTIAL_ID>
:用于签署证书的凭据 ID。-input_dir_path=<PATH>
:要签名的代码对象的输入目录,计算哈希值,或选择未签名的文件和相应的哈希值进行签名。-input_file_path=<PATH>
:要签名的代码对象的路径。-otp=<OTP>
:来自身份验证应用程序的 OAuth OTP 值。-output_dir_path=<PATH>
:将写入签名代码对象的目录。-password=<PASSWORD>
:SSL.com 帐户密码。-program_name=<PROGRAM_NAME>
:程序名称(仅适用于 MSI 安装程序)。-totp_secret=<TOTP_SECRET>
:OAuth TOTP秘密-username=<USERNAME>
: SSL.com 账户用户名-override="true"
:覆盖签名文件
-password="P!@^^ssword12"
).CodeSignTool命令
获取凭据 ID
输出与特定用户关联的电子签名者凭据 ID 列表。 参数 -username
和 -password
是必要的。
用法: CodeSignTool [-hV] get_credential_ids -username=<USERNAME> -password=<PASSWORD>
示例:
CodeSignTool get_credential_ids -username=john.doe@example.com -password="P0z9@lxo41" Credential ID(s): - fe537ace-e132-52a9-c2e7-egcd2ac3f1e6
进入 CodeSignTool get_credential_ids
如果没有必需的参数,将显示该命令的用法信息。
凭证信息
输出与凭证 ID 相关的密钥和证书信息。 参数 -credential_id
, -username
及 -password
是必要的。
用法: CodeSignTool [-hV] credential_info -credential_id=<CREDENTIAL_ID> -username=<USERNAME> -password=<PASSWORD>
示例:
CodeSignTool credential_info -credential_id=fe537ace-e132-52a9-c2e7-egcd2ac3f1e6 -username=john.doe@example.com -password="P0z9@lxo41" EVCS 证书主题信息: - 主题 DN:OID.1.3.6.1.4.1.311.60.2.1.3. .1.3.6.1.4.1.311.60.2.1.2=美国,OID.2.5.4.15=内华达州,OID.20081614243=私人组织,CN=SSL Corp,SERIALNUMBER=NV26,O=SSL Corp,L=休斯顿, ST=Texas, C=US - 证书到期时间:21 年 21 月 37 日星期一 2024:3:XNUMX EST - 发行人 DN:CN=SSL.com EV 代码签名中间件 CA RSA RXNUMX,O=SSL Corp,L=Houston,ST=Texas , C=美国
进入 CodeSignTool credential_info
如果没有必需的参数,将显示该命令的用法信息。
扫描码
启用预签名恶意软件扫描。 这会扫描您的文件中是否存在任何可能的恶意软件,以避免代码泄露 并在检测到恶意软件时阻止代码签名。
用法: CodeSignTool scan_code [-hV] -credential_id=<credentialId> -input_file_path=<inputFilePath> -password=<password> [-program_name=<programName>] -username=<username>
有关 SSL.com 恶意软件扫描服务的安全优势的更多详细信息,您可以访问我们的 专用页面.
签署
签名和时间戳代码对象。 参数 -username
, -password
及 -input_file_path
是必要的。 -credential_id
仅具有多个eSigner代码签名证书的用户才需要。 -output_dir_path
, -program_name
及 -totp_secret
是可选的。
用法: CodeSignTool sign [-hV] [-credential_id=<CREDENTIAL_ID>] -username=<USERNAME> -password=<PASSWORD> -input_file_path=<PATH> [-output_dir_path=<PATH>] [-program_name=<PROGRAM_NAME>] [-totp_secret=<TOTP_SECRET>]
可选参数:
- If
-credential_id
省略,并且用户只有一个eSigner代码签名证书,CodeSignTool将默认为该证书。 如果用户具有多个代码签名证书,那么此参数是必需的。 - If
-output_dir_path
省略,在中指定的文件-input_file_path
将被签名文件覆盖。 CodeSignTool将在覆盖文件之前提示用户。 - If
-program_name
MSI安装程序签名时出现,则该值将在确认对话框中显示为程序名称。 - If
-totp_secret
如果存在,CodeSignTool将计算基于时间的OTP进行签名,从而可以自动使用该工具。 如果不存在此参数,将提示用户手动输入OTP。
例子:
手动输入OTP:
CodeSignTool 签名 -credential_id=fe537ace-e132-52a9-c2e7-egcd2ac3f1e6 -username=john.doe@example.com -password="P0z9@lxo41" -output_dir_path=signed -input_file_path=test.exe 输入 OTP - 按 Enter 继续:884646 代码签名成功:C:\Users\John Doe\Desktop\CodeSignTool-v1.0-windows\signed\test.exe
自动生成OTP:
CodeSignTool sign -credential_id=fe537ace-e132-52a9-c2e7-egcd2ac3f1e6 -username=john.doe@example.com -password="P0z9@lxo41" -totp_secret=ii5gVvZ9G+WkxB3FauAnoL/z14AXSMistcE0jZMWWNSjQDlql2kt2D6Z+l8= -output_dir_path=signed -input_file_path=test.exe Code signed successfully: C:\Users\John Doe\Desktop\CodeSignTool-v1.0-windows\signed\test.exe
进入 CodeSignTool sign
如果没有必需的参数,将显示该命令的用法信息。
Error: invalid otp
尝试对文件进行签名时,可能是由以下一个或多个问题引起的:
- 您扫描到身份验证应用程序中的QR码与命令中的用户名,密码和/或凭据ID不匹配。 如果发生以下情况,可能会发生这种情况:
- 您在设备上为2FA配置了多个帐户,然后选择了错误的帐户。
- 您正在尝试将登录凭据用于 共享证书,但扫描了队友从其帐户共享的QR码。
- 您输入的OTP已过期。
- 您的命令包含无效的TOTP机密。
批号
使用一个 OTP 对多达 100 个代码文件进行签名和时间戳。 参数 -username
, -password
及 -input_dir_path
是必要的。 -credential_id
仅具有多个eSigner代码签名证书的用户才需要。 -output_dir_path
, -program_name
及 -totp_secret
是可选的。
用法: CodeSignTool [-hV] batch_sign [-credential_id=<CREDENTIAL_ID>] -username=<USERNAME> -password=<PASSWORD> -input_dir_path=<PATH> [-output_dir_path=<PATH>] [-program_name=<PROGRAM_NAME>] [-totp_secret=<TOTP_SECRET>]
如果用户想要通过恶意软件检查进行批量签名,则必须首先使用该批次中的每个代码对象进行扫描 scan_code
命令,然后, batch_sign
可以运行命令。
可选参数:
- If
-credential_id
省略,并且用户只有一个eSigner代码签名证书,CodeSignTool将默认为该证书。 如果用户具有多个代码签名证书,那么此参数是必需的。 - If
-output_dir_path
被省略,指定的文件-input_dir_path
将被签名文件覆盖。 CodeSignTool 将在覆盖文件之前提示用户。 - If
-program_name
MSI安装程序签名时出现,则该值将在确认对话框中显示为程序名称。 - If
-totp_secret
如果存在,CodeSignTool将计算基于时间的OTP进行签名,从而可以自动使用该工具。 如果不存在此参数,将提示用户手动输入OTP。
示例:
CodeSignTool batch_sign -username=john.doe@example.com -password="P0z9@lxo41" -credential_id=fe537ace-e132-52a9-c2e7-egcd2ac3f1e6 -input_dir_path=input -output_dir_path=output 输入OTP - 按回车455145继续:批量签名命令成功执行。 签名文件的输出目录:output
进入 CodeSignTool batch_sign
如果没有必需的参数,将显示该命令的用法信息。
哈希
预先计算哈希值供以后使用 batch_hash_sign
命令。 范围 -input_dir_path
是必须的。 -program_name
是可选的
用法: CodeSignTool [-hV] hash -input_dir_path=<PATH> [-program_name=<PROGRAM_NAME>]
可选参数:
- If
-program_name
MSI安装程序签名时出现,则该值将在确认对话框中显示为程序名称。
示例:
CodeSignTool hash -input_dir_path=input Hash 命令执行成功。 在以下位置创建的哈希文件:输入
进入 CodeSignTool hash
如果没有必需的参数,将显示该命令的用法信息。
批处理签名哈希
预先计算的签名哈希 hash
命令。 参数 -access_token
, input_dir_path
, -otp
及 output_dir_path
是必要的。 -credential_id
仅具有多个eSigner代码签名证书的用户才需要。
用法: CodeSignTool [-hV] batch_sign_hash -access_token=<ACCESS_TOKEN> [-credential_id=<CREDENTIAL_ID>] -input_dir_path=<PATH> -output_dir_path=<PATH> -otp=<OTP>
可选参数:
- If
-credential_id
省略,并且用户只有一个eSigner代码签名证书,CodeSignTool将默认为该证书。 如果用户具有多个代码签名证书,那么此参数是必需的。
示例:
CodeSignTool batch_sign_hash -access_token=eyJraWQiOiJmUE1yYUdlbXVMWGUtcG9JWUtLem1CMEYwYXlFczktUEpiN29lTWFlY2I0IiwiYWxnIjoiUlMyNTYifQ.eyJpc3MiOiJTU 0wuY29tIEF1dGhlbnRpY2F0aW9uIFNlcnZpY2UiLCJleHAiOjE2MTQ4OTcxNDIsImlhdCI6MTYxNDg5MzU0MiwianRpIjoiZmI2OTZlNDUtMTIzOS00ZGE4LW I1MmYtODNkZDE2MTY3ZTM3IiwidXNlciI6eyJ1c2VyX2lkIjoxMzIyODU4LCJ1c2VyX2VtYWlsIjoiYWFyb24uZS5ydXNzZWxsQGdtYWlsLmNvbSIsInNzbF9 hY2NvdW50X2lkIjo0NzQzMDJ9LCJjbGllbnQiOnsiaWQiOiJmUE1yYUdlbXVMWGUtcG9JWUtLem1CMEYwYXlFczktUEpiN29lTWFlY2I0In19.fCKDs1igjsI UDG2sUN_2OTb90Jw1nKNPHcD1MyEUR6sHCv_aJmcvcaFRne_eKLHzeQ9WtT5y3Fb2ppc50kMnjPG6JgX5gnFMptMn-ySsI277CtKbkSn3u-WSDSovn51jPm82 4wTeJmuXEzdv9clRjTwp6VoM9eqHCIaDAd3MP2xpMaa35cZbDaaAFKQ7jxWo9dUuTZY7DsKK0p1LloUEnmNxtNimQ3GDwkj_M600WB1zYrhDL9_3oZKaXcUx9 qzHcBCLzGgeaZ0xdpZtADxmXDUCcmkZi20yQ53bxqVL2w00sJ73efKB7JGeGWVehO-ZlGs3PUQwooox1JgEgcsA -credential_id=fe537ace-e132-52a9 -c2e7-egcd2ac3f1e6 -input_dir_path=input -output_dir_path=output -otp=142392 Batch sign hash command executed successfully. Output directory for signed files: output
进入 CodeSignTool batch_sign_hash
如果没有必需的参数,将显示该命令的用法信息。