在 Java 应用的安全体系中,利用 jarsigner 工具对 JAR 文件进行签署是验证软件来源与完整性的关键步骤。本文通过对不同证书获取场景的梳理,明确了从原始密钥对到 JKS 格式转换,再到执行签名指令的技术逻辑。
根据证书申请方式的不同,所需的原始材料分为以下两类:
-----BEGIN CERTIFICATE----- 至 -----END CERTIFICATE-----(含头尾),保存为 cert.crt(名称及后缀可自定义)。xxxPrivateKey.pem 或 key.txt。文本打开后开头通常为 -----BEGIN RSA PRIVATE KEY-----。bin 下的 jarsigner 工具,建议将其路径添加至系统环境变量(Path)。由于 jarsigner 工具原生支持 JKS 格式,需先进行证书格式转换。
利用 ssl证书工具 进行在线转换:
.jks 文件。https://topssl.cn。在获取 JKS 文件后,通过命令行完成对 JAR 文件的签署。
标准指令格式:
Bash
jarsigner -keystore <jks文件> -storepass <密钥库密码> <待签署的jar文件> mykey
实操演示(以 Windows 环境为例):
假设在 D:\1 目录下存有 1.jks(密码:123123)和 1.jar 文件。若需添加时间戳(需保持网络畅通),操作步骤如下:
问:为什么签名时最后要加 mykey?
答:mykey 是 JKS 证书库中的别名(Alias)。在通过工具转换或 MPKI 导出时,默认别名通常定义为 mykey。若别名不匹配,指令将无法定位到证书。
问:时间戳服务器地址是固定的吗?
答:并非固定。示例使用的是 Symantec 的 SHA256 时间戳服务。在实际部署中,建议使用证书颁发机构提供的官方 TSA 地址。
常见问题 FAQ
问:签署完成后如何验证 JAR 文件?
答:可以使用指令 jarsigner -verify -verbose -certs 1.jar 来查看签名状态及证书链详细信息。
问:运行 jarsigner 提示“不是内部或外部命令”?
答:说明系统 Path 变量中未包含 JDK 的 bin 目录,请手动定位到该目录或配置环境变量。
问:私钥文件丢失了可以重写生成吗?
答:如果私钥丢失,已签发的证书将无法使用,通常需要重新生成 CSR 并通过 数字证书 机构进行重签(Reissue)。
加密您的网站,赢得客户信任!