You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下用Sectigo硬件令牌签名Windows EXE的工具与命令

在Ubuntu上用Sectigo硬件令牌签名Windows EXE

所需工具

  • osslsigncode:支持通过PKCS#11协议调用硬件令牌完成签名
  • OpenSSL PKCS#11引擎:Ubuntu下可直接安装openssl-engine-pkcs11包
  • pkcs11-tool:你已在使用,无需额外安装
  • Sectigo eToken驱动:已存在/usr/lib/pkcs11/libeToken.so,无需额外配置

步骤1:确认令牌内的证书与私钥信息

先通过pkcs11-tool获取证书和私钥的标签、ID(后续签名命令需要用到这些标识):

pkcs11-tool --module /usr/lib/pkcs11/libeToken.so --login --list-objects

输出会包含类似以下内容,记录私钥和对应代码签名证书的ID或Label:

Private Key Object; RSA
label: "CodeSigningPrivateKey"
ID: 01
Certificate Object; type = X.509 cert
label: "CodeSigningCertificate"
ID: 01

步骤2:使用osslsigncode签名EXE

根据获取的ID/标签,选择以下任意一种方式执行签名:

方式1:通过ID指定证书和私钥(推荐,ID通常唯一)

osslsigncode sign \
  -pkcs11engine pkcs11 \
  -pkcs11module /usr/lib/pkcs11/libeToken.so \
  -pkcs11id 01 \  # 替换为你记录的证书/私钥ID
  -h sha256 \     # Sectigo推荐使用SHA256哈希算法
  -in input.exe \ # 待签名的原始EXE文件路径
  -out signed.exe # 签名后的输出文件路径

执行时会提示输入硬件令牌的PIN码,直接输入即可(输入内容不会明文显示)。

方式2:通过标签和令牌名称指定

如果ID不明确,也可以用标签和令牌名称定位对象:

osslsigncode sign \
  -pkcs11engine pkcs11 \
  -pkcs11module /usr/lib/pkcs11/libeToken.so \
  -pkcs11cert "pkcs11:token=SectigoToken;object=CodeSigningCertificate" \
  -pkcs11key "pkcs11:token=SectigoToken;object=CodeSigningPrivateKey" \
  -h sha256 \
  -in input.exe \
  -out signed.exe

将SectigoToken替换为你的令牌实际名称,CodeSigningCertificate/CodeSigningPrivateKey替换为对应的标签。

步骤3:验证签名有效性

签名完成后,用以下命令验证签名是否有效:

osslsigncode verify signed.exe

如果输出包含Signature verification: ok,则说明签名成功。

注意事项

  • 确保osslsigncode版本支持PKCS#11:Ubuntu 20.04及以上版本的官方包已支持,若版本过旧可编译最新版。
  • 不要明文传递PIN:除非在非交互环境,否则避免使用--pkcs11pin参数,让命令提示输入PIN更安全。
  • 签名过程中不要拔出令牌:硬件令牌需全程保持连接状态。

内容的提问来源于stack exchange,提问作者nicorellius

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 19:32:40