使用 Jsign 和 SafeNet eToken 对文件进行签名

问题描述 投票:0回答:1

我正在尝试按照本指南对 Mac 上的 Electron-builder 生成的 Windows 可执行安装程序进行签名:https://www. Electron.build/tutorials/code-signing-windows-apps-on-unix#signing-windows -app-on-maclinux-using-jsign

我下载并安装了 SafeNet 身份验证客户端,并且可以确认

libeToken.dylib
的路径存在。我按照指示创建了
.cfg
文件。在启用调试信息的情况下运行命令,我得到以下输出:

$ java -Djava.security.debug=sunpkcs11 -jar jsign-4.2.jar --keystore hardwareToken.cfg --storepass NONE --storetype PKCS11 --tsaurl http://timestamp.digicert.com --alias path/to/cert.pem path/to/installer.exe

SunPKCS11 loading hardwareToken.cfg
sunpkcs11: Initializing PKCS#11 library /usr/local/lib/libeToken.dylib
Information for provider SunPKCS11-HardwareToken
Library info:
  cryptokiVersion: 2.20
  manufacturerID: SafeNet, Inc.                   
  flags: 0
  libraryDescription: SafeNet eToken PKCS#11          
  libraryVersion: 9.01
All slots: 0, 1, 2, 3, 4, 5, 6, 7, 8
Slots with tokens: (none)
jsign: Couldn't sign path/to/installer.exe
java.security.ProviderException: Failed to create a SunPKCS11 provider from the configuration hardwareToken.cfg
    at net.jsign.ProviderUtils.createSunPKCS11Provider(ProviderUtils.java:52)
[...]
Caused by: java.security.ProviderException: slotListIndex is 0 but token only has 0 slots
    at jdk.crypto.cryptoki/sun.security.pkcs11.SunPKCS11.<init>(SunPKCS11.java:363)
    ... 13 more

很明显,它不喜欢插槽 0 中没有令牌,但老实说,我不知道这在这种情况下意味着什么。上面的文档只提到了以下内容:

确保您使用正确的 PKCS 11 引擎和模块。如果您没有找到带有令牌的插槽,或者出现一些错误,例如 sc 连接卡错误和卡无效或无法处理,则表明您没有使用正确的模块,请确保您使用正确的模块。

但是,它并没有真正指定这个“正确的模块”是什么。我感觉我可能错过了一步?

任何建议将不胜感激。

code-signing
1个回答
0
投票

如果您升级到最新版本的 Jsign,现在使用

ETOKEN
密钥库类型时会自动猜测 SunPKCS11 配置:

jsign --storetype ETOKEN --storepass <password> path/to/installer.exe
© www.soinside.com 2019 - 2024. All rights reserved.