刚刚获得 EV 代码签名证书,它位于 USB 密钥中,插入后会显示在 Windows 证书存储中。install4j 确实可以选择在签名时使用 Windows 证书存储中的证书。
但是当我尝试使用此选项时,出现错误:
引起:com.install4j.d.k:org.bouncycastle.operator.OperatorCreationException:无法创建签名者:不支持密钥类型
导致:org.bouncycastle.operator.OperatorCreationException:无法创建签名者:不支持密钥类型
原因:java.security.InvalidKeyException:不支持密钥类型
在 jdk.crypto.mscapi/sun.security.mscapi.RSASignature.engineInitSign(RSASignature.java:533)
那么,install4j 支持这些证书吗?
更进一步:使用密钥需要在签名时输入 PIN。
对于自动化构建,每晚都会构建安装程序,install4j 如何处理 PIN(我在项目文件中没有看到任何选项)?
我可以确认这原则上确实有效,没有弹出 PIN 对话框,至少在这个特定配置中:
我们使用 Intellij 在 Mac 上开发 JavaFX 应用程序。我们的打包和代码签名过程由 install4j 处理,并且我们使用 Sectigo 来获取证书。
2024 年 1 月之前,代码签名证书驻留在 Mac 计算机上,我们使用 PFX 文件。最近,我们转向基于硬件,Sectigo 向我们邮寄了一个 HSM,“SafeNet eToken 5100/5110”。
首先我们访问了 Sectigo 网站,在那里我们下载了 Safenet 程序并将其安装到我们的 Mac 计算机上。 Safenet 将 dylib 文件安装在 /usr/local/lib/ libeTPkcs11.dylib (我们将 install4j 指向该文件)。
HSM 附带了我们安装的证书。然后,Sectigo 通过电子邮件向我们发送了相关的根证书、中间证书和交叉签名证书,我们手动将每一项证书导入到令牌中。 (请注意,Sectigo 通过电子邮件发送给我们的证书具有“crt”扩展名,我们将其更改为“cer”扩展名)。
这对我们有用。