Fedora环境install4j Maven构建配置智能卡EV代码签名报错求助
Fedora系统install4j Maven构建EV签名报错解决方案
问题现象
你在.install4j配置文件中添加了如下EV签名配置:
<codeSigning windowsEnabled="true" verbose="true" windowsKeySource="pkcs11" windowsPkcs11Library="/usr/lib/pkcs11/libIDPrimePKCS11.so" winKeystorePassword="XXXXXXXXXXXXXX"> <windowsPkcs11Identifier issuer="GlobalSign GCC R45 EV CodeSigning CA 2020" serial="YYYYYYYYYYYYYYYYY" subject="ZZZZZZZZZZ" /> </codeSigning>
执行构建时收到报错:
[INFO] install4j: compilation failed. Reason: The certificate file /usr/lib/pkcs11/libIDPrimePKCS11.so does not exist.
已确认文件真实存在,且keytool工具可正常识别该文件。
排查步骤及解决方案
按优先级从上到下验证:
- 权限不足问题排查
执行构建的用户可能没有该文件或上层目录的读取权限,使用构建执行用户执行以下命令验证:
如果返回权限拒绝,执行以下命令修复权限:ls -l /usr/lib/pkcs11/libIDPrimePKCS11.sosudo chmod o+rx /usr/lib/pkcs11/ sudo chmod o+r /usr/lib/pkcs11/libIDPrimePKCS11.so - install4j版本兼容性问题排查
10.x之前的install4j版本存在Linux下PKCS11驱动识别的已知bug,会误将驱动文件判定为证书文件校验,优先将install4j升级到10.0.7及以上版本即可解决该问题。 - 架构不匹配问题排查
32位的install4j无法识别64位的PKCS11驱动,反之亦然,执行以下命令确认驱动架构:
确认和你安装的install4j架构保持一致,推荐统一使用64位版本适配Fedora主流环境。file /usr/lib/pkcs11/libIDPrimePKCS11.so - 系统安全规则限制排查
SELinux、容器沙箱等安全限制可能会阻止构建进程访问该路径文件,先临时关闭SELinux验证:
重新执行构建如果不再报错,说明是SELinux规则拦截,给对应文件配置合适的SELinux上下文即可。如果是使用flatpak/容器运行的Maven/JDK,将/usr/lib/pkcs11目录挂载到容器内部即可。sudo setenforce 0 - 临时替代方案
如果以上方案都未生效,可将libIDPrimePKCS11.so复制到Maven构建的工作目录下,将配置中的windowsPkcs11Library值改为相对路径./libIDPrimePKCS11.so,同时给文件添加执行权限:chmod +x libIDPrimePKCS11.so
内容的提问来源于stack exchange,提问作者MaggieL
相关产品推荐
相关产品推荐

