如何使用 eSigner CKA(云密钥适配器)使用 Signtool.exe 或 Certutil.exe 自动执行 EV 代码签名

本指南文章介绍了如何安装 eSigner CKA 并将其用于 Signtool 上的自动和手动代码签名。 

eSigner CKA(云密钥适配器) 是一个基于 Windows 的应用程序,它使用 CNG 接口(KSP 密钥服务提供商)来允许 certutil.exe 和 signtool.exe 等工具使用符合 eSigner Cloud Signature Consortium (CSC) 标准的 API 进行企业代码签名操作。 它就像一个虚拟 USB 令牌,并将代码签名证书加载到证书存储区。

eSigner CKA 提供灵活的选项,可以在 CI/CD 流程中自动进行签名,而物理 USB 令牌不存在这些选项。 有关如何使用 eSigner CKA 在 CI/CD 工具(包括 CircleCI、GitHub Actions、Gitlab CI 和 Travis CI)中进行自动代码签名的指南,请访问此页面: 如何将 eSigner CKA 与 CI/CD 工具集成以实现自动代码签名.

注意 

本指导材料需要以下内容: 

  1. 颁发 EV 代码签名证书。 
  2. EV代码签名证书 当前必须在 eSigner 上注册。 如果不是这种情况,请参考这个 指导文章
  3. 在您的手机上安装的身份验证器应用程序,例如 Google 身份验证器应用程序。

 

用户可以使用 eSigner 的扩展验证代码签名功能对代码进行签名。 点击下方获取更多信息。

了解更多

制定命令行

命令行的组件

对于手动和自动代码签名,您需要在文本编辑器上输入命令行,例如 命令提示符. 命令行包含:

  1. SignTool(负责对文件进行数字签名并验证签名的命令行工具)的位置,括在括号中:“C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86\signtool.exe”
  2. /fd sha256 指定哈希算法的选项
  3. / tr http://ts.ssl.com 指定时间戳服务器地址的选项
  4. /td sha256 指定时间戳摘要算法的选项
  5. /sha1 选项指定 SignTool 用于从密钥库中查找适当的代码签名证书的指纹
  6. 实际的证书指纹
  7. 将被签名的文件的路径,括在括号中:“SIGNABLE FILE PATH”

整个命令行应如下所示: 

“C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86\signtool.exe” sign /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 证书指纹 “可签名文件路径”

请注意: 默认情况下,SSL.com 支持来自 ECDSA 密钥的时间戳。

如果您遇到此错误: The timestamp certificate does not meet a minimum public key length requirement,您应该联系您的软件供应商以允许来自 ECDSA 密钥的时间戳。

如果您的软件供应商无法允许使用普通端点,您可以使用此旧版端点 http://ts.ssl.com/legacy 从 RSA 时间戳单元获取时间戳。

找到您的证书指纹

稍后,在安装 eSigner CKA 并将您的 EV 代码签名证书添加到 用户证书存储,您将能够通过按来检查您的 EV 代码签名证书指纹 Windows键+ R 然后输入 certmgr.msc 访问用户证书存储。 弹出证书管理器窗口时,单击 个人方面 左侧面板上的文件夹,然后选择 证书 右侧的子文件夹以找到您的 EV 代码签名证书。

双击证书。 选择详细信息 选项卡,然后向下滚动以显示指纹。 当您签署代码时,复制指纹并将其包含到您的命令行中。

手动代码签名

安装 eSigner CKA

选择安装方式时,选择 手动代码签名 然后单击确定按钮。

登录到 eSigner CKA 程序

安装 eSigner CKA 后,打开程序并使用您的 SSL.com 帐户用户名和密码登录。

登录成功后,您将能够看到颁发 EV 代码签名证书的实体名称、序列号、到期日期和 电子控制系统 (扩展验证代码签名)首字母缩略词。

在文本编辑器上编写命令行

回想一下,代码签名的命令行如下所示: 

“C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86\signtool.exe” sign /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 证书指纹 “可签名文件路径”

在文本编辑器上编写命令行并按下 输入, 你会看到消息 完成添加其他商店. 然后会弹出一个窗口,要求您输入 SSL.com 帐户的用户名和密码。

输入一次性密码 (OTP) 

您的电子签名者注册的 EV 代码签名证书的一次性密码 (OTP) 将发送到您的身份验证器应用程序。 成功输入后,命令提示符将指示您的文件已成功签名。

检查文件上的数字签名

代码签名成功后,您现在可以查看文件上数字签名的详细信息。 右键单击已签名的文件,单击 查看房源,接着是 数字签名 标签。 在这里,您将看到签名者的名称、使用的摘要算法以及签名的时间戳。 点击 更多信息 按钮以获取有关签名代码的更多信息。

点击后 更多信息,您将能够阅读说明 这个数字签名没问题. 继续点击 查看证书 按钮。

点击后 查看证书 按钮,您将阅读指示为签名文件颁发的数字证书确保它来自发布者并保护它在发布后不被更改的信息。

自动代码签名

安装 eSigner CKA

选择安装方式时,选择 自动代码签名 然后单击确定按钮。

保存主密钥文件

将显示一条说明,说明保护主密钥文件的重要性。 请阅读它,然后单击“确定”按钮。

然后将弹出一个窗口,让您选择保存主密钥文件的位置。

输入您的 SSL.com 帐户用户名和密码

输入您的 SSL.com 帐户用户名和密码。

输入您的电子签名器 基于时间的一次性密码 (TOTP)

然后输入您的基于时间的一次性密码 (TOTP)。 您可以在 SSL.com 帐户的 EV 代码签名证书订单详细信息中找到您的 TOTP。 输入您之前在为 eSigner 注册订单时设置的 4 位 PIN,然后单击 显示二维码 按钮以显示 TOTP。

您的 TOTP 将显示在标有 密码. 复制 TOTP,粘贴到 TOTP秘密 eSigner CKA 窗口的字段,然后单击 OK 按钮来保存它。 

输入您的 SSL.com 帐户凭据和 TOTP 后,您将能够查看 EV 代码签名证书的详细信息。 如果您决定更新 TOTP,请将新的 TOTP 粘贴到分配的字段上,然后单击 保存.

在文本编辑器上编写命令行

回想一下,代码签名的命令行如下所示: 

C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x86\signtool.exe” 签名 /fd sha256 /tr http://ts.ssl.com /td sha256 /sha1 证书指纹“SIGNABLE文件路径”

可选 命令提示符 放置命令行。 按回车键后,您将看到这样的通知: 完成添加其他商店.

几秒钟后,您将看到通知 成功签约. 这表明您的文件已以自动方式签名,无需额外的 OTP。 

检查文件上是否存在数字签名

打开签名文件的文件夹位置。 右键单击它,然后单击 查看房源. 单击选项卡 数字签名 在这里你会看到使用的安全哈希算法有 256 位。 单击显示签名者名称、摘要算法和时间戳的直接空格。 突出显示后,继续单击 更多信息 按钮。

然后将显示一个弹出窗口,说明文件上的数字签名有效,并指出签名的具体时间。 点击 查看证书 按钮以查看有关已颁发的 EV 代码签名数字证书的更多信息。 

您将看到有关 EV 代码签名证书的信息,说明它验证您是可执行文件的创建者并保护您的文件不被篡改。 

如何使用您的沙盒帐户测试 eSigner CKA

安装 eSigner CKA

选择是否安装在 用户手册 or 自动化 模式

****请注意,如果您选择了一种模式,则必须重新安装程序才能在另一种模式下进行测试。*****

打开 Appdata 的 Roaming 子目录

 为了使用您的 SSL.com 沙盒帐户测试 eSigner CKA,您必须在 AppData 文件夹的 Roaming 子目录中修改应用程序的设置。 进入 %应用程序数据% 在 Windows 搜索栏上直接将您带到 AppData 的漫游子目录。

打开电子签名器 数据文件 用你的文本编辑器

打开 电子签名者CKA 文件夹,找到文件 设计者应用程序数据,右键单击它并选择使用文本编辑器编辑文件的选项,在这种情况下 记事本+ +

打开文本编辑器后,您将看到下面的值集。

您可以将值集分隔成连续的行,以便更易于编辑。 

手动模式测试签名

对于手动模式下的测试签名,应存在以下值:

  1. 客户 ID 应为: qOUeZCCzSqgA93acB3LYq6lBNjgZdiOxQc-KayC3UMw
  2. 地址 -尝试 在 api_url
    之前:“api_url”:“https://cs.ssl.com/csc/v0/
    之后:“api_url”:”https://cs-尝试.ssl.com/csc/v0/=
  3. 更换 登录 oauth 沙盒 在 auth_url
    之前:“auth_url”:“https://登录.ssl.com/oauth2/token”
    之后:“auth_url”:“https://oauth 沙盒.ssl.com/oauth2/token”
  4. “信用模式”: 0
  5. “master_key”:空

自动模式测试签名

对于自动模式下的测试签名,应提供以下值:

  1. 客户 ID 应为: qOUeZCCzSqgA93acB3LYq6lBNjgZdiOxQc-KayC3UMw
  2. 地址 -尝试 在 api_url
    之前:“api_url”:“https://cs.ssl.com/csc/v0/
    之后:“api_url”:”https://cs-尝试.ssl.com/csc/v0/=
  3. 更换 登录 oauth 沙盒 在 auth_url
    之前:“auth_url”:“https://登录.ssl.com/oauth2/token”
    之后:“auth_url”:“https://oauth 沙盒.ssl.com/oauth2/token”
  4. “信用模式”: 1
  5. 更换 在 master_key 上使用您的确切文件路径 主密钥 文件中。
    在自动模式下安装 eSigner CKA 以进行测试时,您必须提供您的沙盒帐户登录凭据。 原因是在自动代码签名中,登录凭据是使用主密钥加密的。 如果您在安装时输入生产登录凭据,然后按照自动测试格式更改 esignerapp.data 文件中的值,您将无法进行测试,因为您提供的用户名和密码不存在于沙盒测试环境中。

使用您的 SSL.com 沙盒帐户凭据登录到 eSigner CKA

更改值后 设计者应用程序数据, 您现在可以按照前面为实时证书概述的相同步骤从沙箱中测试您的 EV 代码签名证书。

如何使用 eSigner CKA 和 HLKSigntool 签署硬件实验室工具包 (HLK) 文件

Hardware Lab Kit 是一种用于测试和准备内核模式驱动程序以提交给 Microsoft 的工具。 目前,eSigner CKA 还需要安装 HLKSigntool 才能在 Microsoft 的 HLK 软件中使用 

在运行 HLKSignTool.exe 之前,必须首先安装和配置 eSigner CKA(用户登录并设置 TOTP 密码)。 

. 安装和配置 eSigner CKA

. 在下面的命令行中使用 HLKSignTool

命令行
HLKSignTool.exe 证书_序列号“文件路径”

示例:

HLKSignTool.exe 3364de1e9ed1882e963a89ff7a958e9d "A:\teet.hlkx"

如何使用 eSigner CKA 签署 VBA 宏

使用此链接下载并安装用于数字签名 VBA 项目的 Microsoft Office 主题接口包: https://www.microsoft.com/en-us/download/details.aspx?id=56617

安装后,请执行以下步骤:

  1. 打开管理员命令提示符并键入以下内容,路径将是您刚刚安装文件的位置:

    regsvr32.exe

    regsvr32.exe

    有关如何注册 OLE 控件的更多信息,请访问 微软的网站.

    如果成功,您将看到一条消息:“DIIRegister Server in 成功了。”

  2. 安装以下内容: download.microsoft.com/download/C/6/D/C6D0FD4E-9E53-4897-9B91-836EBA2AACD3/vcredist_x86.exe
  3. 安装 eSigner CKA
  4. 运行 SignTool 命令来签署宏: https://www.ssl.com/how-to/automate-ev-code-signing-with-signtool-or-certutil-esigner/#components-of-the-command-line

如何使用 eSigner CKA 签署 .app 文件

  1. 下载 Dynamics.365.BC.55195.US.DVD.zip at https://www.microsoft.com/en-US/download/details.aspx?id=105113 
    注意:如果您尝试签署 .app 使用 eSigner CKA 文件,无需先安装 Microsoft Dynamics 365 Business Central 应用程序,您将收到此 SignTool 错误: 由于无法识别此文件格式,因此无法对其进行签名。
  2. 打开 Dynamics.365.BC.55195.US.DVD.zip 并将内容提取到您的首选位置。
  3. 可选 SETUP.EXE 微软 Dynamics 365 Business Central 并单击 下一页> 按钮。
  4. 阅读 Microsoft 软件许可条款,然后单击 我接受> 按钮。
  5. 高级安装选项
  6. 点击 选择安装选项.
  7. 选择 服务器 安装选项。
  8. 点击 使用 .
  9. 等待安装完成。 安装成功后,点击 关闭 按钮。
  10. 在 SignTool 上签署您的 .app 文件: https://www.ssl.com/how-to/automate-ev-code-signing-with-signtool-or-certutil-esigner/#components-of-the-command-line

如何使用 eSigner CKA 签署 vsix 文件

  1. 下载 Dotnet 核心 SDK: https://dotnet.microsoft.com/en-us/download/dotnet/7.0
  2. 安装 OpenVsixSignTool
    dotnet tool install -g OpenVsixSignTool
  3. 使用此符号命令:
    OpenVsixSignTool sign --sha1 CERTIFICATE THUMBPRINT --timestamp http://ts.ssl.com -ta sha256 -fd sha256 "SIGNABLE FILE PATH"

如何在 eSigner CKA 上使用恶意软件扫描

说明:

  1. 登录您的 SSL.com 帐户。 单击订单选项卡,然后单击 下载 您的证书的链接以显示其详细信息。 向下滚动到 签署凭证 部分并找到显示您的 eSigner 证书凭据的部分。 确保单选按钮显示 已启用签名凭据 和 已启用恶意软件拦截器 被选中。
  2. 安装 eSigner 云密钥适配器。
  3. 安装 eSigner CodeSignTool。 点击 点击此处 下载 eSigner CodeSignTool。
  4. 使用以下命令扫描 CodeSignTool 上的代码: scan_code [-hV] -input_file_path=<inputFilePath> -password=<PASSWORD> [-program_name=<programName>] -username=<USERNAME>
  5. 使用签名工具使用以下命令通过 eSigner CKA 对代码进行签名: scan_code -username=<USERNAME> -password=<PASSWORD> -credential_id=<eSigner Credential ID> -input_file_path=<inputFilePath>

参数:

  • -input_file_path=<PATH>:要签名的代码对象的路径。
  • -username=<USERNAME>SSL.com 帐户用户名
  • -password=<PASSWORD>SSL.com 户口密码。
  • -program_name=<PROGRAM_NAME>: 节目名称
  • -credential_id=<CREDENTIAL_ID>:签名证书的凭据 ID。 您的电子签名者凭证 ID 位于您的 SSL.com 证书订购页面。

订阅 SSL.com 的时事通讯

不要错过SSL.com上的新文章和更新

保持信息灵通和安全

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

我们希望收到您的反馈

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