eSigner CodeSignTool命令指南

CodeSign工具 是一个安全的、面向隐私的多平台 Java 命令行实用程序,用于远程签署 Microsoft Authenticode 和 Java 代码对象 电子签名者 EV 代码签名证书。 文件的哈希值被发送到 SSL.com 用于签名,以便不发送代码本身。 这是需要签名的敏感文件的理想选择,但不应通过网络发送进行签名。 CodeSignTool 也是自动化批处理的理想选择,用于大量签名或集成到现有 CI/CD 管道工作流中。

如果您想使用演示帐户和证书尝试 CodeSignTool,请阅读 eSigner 演示凭据和证书 获取凭据和配置信息。

要了解 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。
有关在eSigner中注册EV代码签名证书和设置两因素身份验证的信息,请阅读 使用eSigner进行远程EV代码签名。 有关TOTP机密值的信息,请参阅 自动执行eSigner EV代码签名.

例子:

手动输入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机密。
一些 eSigner 用户在对使用 Microsoft Visual Studio 构建的 MSI 安装程序进行签名时报告了签名无效的问题。 作为一种解决方法,我们建议使用以下命令构建您的 MSI 文件 WiX 工具集. 为了方便 Visual Studio 用户, WiX 工具集 VS 扩展 是可用的。

批号

注意:100 是每批允许签名的最大代码文件数。

使用一个 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, -otpoutput_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 如果没有必需的参数,将显示该命令的用法信息。

视频:使用 eSigner 和 CodeSignTool 进行云 EV 代码签名

https://youtu.be/Br25mZIlKdU
感谢您选择SSL.com! 如有任何疑问,请通过电子邮件与我们联系 Support@SSL.com,致电 1-877-SSL-SECURE,或只需单击此页面右下方的聊天链接。 您还可以在我们的网站上找到许多常见支持问题的答案 知识库.
Twitter
Facebook
LinkedIn
Reddit
电邮

保持信息灵通和安全

SSL.com 是网络安全领域的全球领导者, PKI 和数字证书。注册以接收最新的行业新闻、提示和产品公告 SSL.com.

我们希望收到您的反馈

参加我们的调查,让我们知道您对最近购买的想法。