使用 Jarsigner 签署 JAR 文件指南:JKS 转换与命令行操作
在 Java 应用的安全体系中,利用 jarsigner 工具对 JAR 文件进行签署是验证软件来源与完整性的关键步骤。本文通过对不同证书获取场景的梳理,明确了从原始密钥对到 JKS 格式转换,再到执行签名指令的技术逻辑。
使用 Jarsigner 签署 JAR 文件技术手册
1. 签署所需材料准备
根据证书申请方式的不同,所需的原始材料分为以下两类:
CSR 与 Key 单独生成的情况
- 从代码签名证书邮件底部的代码段提取,包含
-----BEGIN CERTIFICATE-----至-----END CERTIFICATE-----(含头尾),保存为cert.crt(名称及后缀可自定义)。 - 指在证书签发前已生成并妥善保存的文件(通常由对接商务或技术负责人保管),常见文件名为
xxxPrivateKey.pem或key.txt。文本打开后开头通常为-----BEGIN RSA PRIVATE KEY-----。 - JDK 目录
bin下的jarsigner工具,建议将其路径添加至系统环境变量(Path)。
使用 MPKI 系统生成密钥对的情况
- 凭证: MPKI 系统的登录账户及密码。
- 密码: 申请证书时自行设定的私钥保护密码。
2. 获取 JKS 格式证书
由于 jarsigner 工具原生支持 JKS 格式,需先进行证书格式转换。
场景一:手动转换(针对单独生成的 CSR 和 Key)
利用 ssl证书工具 进行在线转换:
- 工具地址: https://www.ssltools.org/tools/
- 源格式: 选择 PEM。
- 目标格式: 选择 JKS。
- 上传文件: 证书文件(材料 1)与私钥文件(材料 2)。
- 密码设置: PEM 私钥密码留空;密钥库密码(及确认密码)需自定义一个简单密码,此密码在后续签名步骤中必须使用。
- 操作: 提交并下载生成的
.jks文件。
场景二:MPKI 系统直接导出
- 登录 MPKI 系统:
https://topssl.cn。 - 在订单管理中找到对应订单,点击“密钥库下载”。
- 输入下单时设定的私钥密码,并为即将获取的 JKS 文件设置新的密钥库密码。
- 证书格式选择 JKS,提交并下载文件。
3. 执行签名指令
在获取 JKS 文件后,通过命令行完成对 JAR 文件的签署。
标准指令格式:
Bash
jarsigner -keystore <jks文件> -storepass <密钥库密码> <待签署的jar文件> mykey
实操演示(以 Windows 环境为例):
假设在 D:\1 目录下存有 1.jks(密码:123123)和 1.jar 文件。若需添加时间戳(需保持网络畅通),操作步骤如下:
- 打开命令行(CMD)。
- 切换至目标盘符并进入目录:
- 执行签署指令:
总结问题
问:为什么签名时最后要加 mykey?
答:mykey 是 JKS 证书库中的别名(Alias)。在通过工具转换或 MPKI 导出时,默认别名通常定义为 mykey。若别名不匹配,指令将无法定位到证书。
问:时间戳服务器地址是固定的吗?
答:并非固定。示例使用的是 Symantec 的 SHA256 时间戳服务。在实际部署中,建议使用证书颁发机构提供的官方 TSA 地址。
常见问题 FAQ
问:签署完成后如何验证 JAR 文件?
答:可以使用指令 jarsigner -verify -verbose -certs 1.jar 来查看签名状态及证书链详细信息。
问:运行 jarsigner 提示“不是内部或外部命令”?
答:说明系统 Path 变量中未包含 JDK 的 bin 目录,请手动定位到该目录或配置环境变量。
问:私钥文件丢失了可以重写生成吗?
答:如果私钥丢失,已签发的证书将无法使用,通常需要重新生成 CSR 并通过 数字证书 机构进行重签(Reissue)。



京公网安备11010502031690号
网站经营企业工商营业执照
















