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

使用COMODO证书签名applet仍被判定为自签名的问题求助

解决Jarsigner签名COMODO证书出现的证书链验证警告与算法不可用错误

咱们先拆解你遇到的两个核心问题:证书链未验证导致applet被判定为自签名,以及后续出现的HmacPBESHA256算法不可用错误,下面一步步给你解决:

一、解决证书链未验证警告(自签名判定问题)

出现The signer's certificate chain is not validated警告,本质是你的COMODO PFX证书大概率只包含了终端用户证书,缺少中间证书和根证书——jarsigner无法构建完整的信任链,最终被系统识别为自签名。

解决步骤:

  1. 导出完整的COMODO证书链
    • 打开Windows证书管理器(运行certmgr.msc即可打开)
    • 找到你的COMODO证书,右键选择「所有任务」→「导出」
    • 导出向导中选择「是,导出私钥」,格式选PKCS #12 (.PFX)
    • 关键勾选:「包括证书路径中的所有证书(如果可能)」,这样导出的PFX就包含了完整的信任链(终端证书+中间证书+根证书)
    • 设置导出密码,完成导出操作。
  2. 用完整链的PFX重新签名
    替换成新导出的PFX文件执行签名命令,这时候证书链验证的警告应该会消失,applet也不会被判定为自签名了。

二、解决HmacPBESHA256 not available错误

这个错误和Java版本、加密策略或PFX加密算法兼容性有关,哪怕加了-sigalg SHA256withRSA -digestalg SHA256也没用,试试下面的方案:

  • 方案1:升级Java版本
    HmacPBESHA256是较新的算法,如果你用的是Java 8早期版本(比如u101之前),可能不支持该算法。建议升级到Java 8u151及以上版本(或直接用Java 11/17等LTS版本),新版本默认支持更多加密算法,且已启用无限制加密策略。
  • 方案2:手动指定密钥库密码参数
    没法升级Java的话,可以在签名命令中明确添加-storepass和-keypass参数,同时确保别名正确(可用keytool -list -v -storetype pkcs12 -keystore "PATH_TO\cert.pfx"查看别名):
    jarsigner "PATH_TO\my.jar" -storetype pkcs12 -keystore "PATH_TO\cert.pfx" -storepass YOUR_PFX_PASSWORD -keypass YOUR_PFX_PASSWORD -sigalg SHA256withRSA -digestalg SHA256 -tsa http://sha256timestamp.ws.symantec.com/sha256/timestamp 1
    
  • 方案3:用兼容算法重新导出PFX
    有些导出工具默认用了较新的加密算法,你可以用OpenSSL加-legacy参数导出兼容版本:
    openssl pkcs12 -export -in your_cert.crt -inkey your_private.key -certfile full_chain.crt -out new_cert.pfx -legacy
    
    -legacy参数会使用Java更易识别的兼容加密算法。

验证签名有效性

签名完成后,用以下命令确认结果:

jarsigner -verify -verbose -certs "PATH_TO\my.jar"

如果输出显示jar verified,且证书链显示完整的COMODO信任链,就说明签名成功了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:20:41