如何给java签名
使用 jarsigner 工具签名 Java 文件
jarsigner 是 JDK 自带的工具,用于对 JAR 文件进行签名。确保已安装 JDK 并配置环境变量。
生成密钥库文件(如不存在):
keytool -genkey -alias mykey -keyalg RSA -keystore mykeystore.jks -validity 365
输入必要信息(如密码、姓名等),生成 mykeystore.jks 密钥库文件。
签名 JAR 文件:
jarsigner -keystore mykeystore.jks -signedjar signed-app.jar original-app.jar mykey
-signedjar 指定输出文件名,original-app.jar 为待签名文件,mykey 为密钥别名。
验证签名:
jarsigner -verify -verbose -certs signed-app.jar
使用 Maven 插件自动签名
在 pom.xml 中配置 maven-jarsigner-plugin:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jarsigner-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>sign</id>
<phase>package</phase>
<goals>
<goal>sign</goal>
</goals>
</execution>
</executions>
<configuration>
<keystore>mykeystore.jks</keystore>
<alias>mykey</alias>
<storepass>密钥库密码</storepass>
<keypass>密钥密码</keypass>
</configuration>
</plugin>
运行 mvn package 时自动完成签名。
使用 Gradle 插件签名
在 build.gradle 中添加签名配置:
signing {
sign configurations.archives
keyStore = file('mykeystore.jks')
alias = 'mykey'
storePassword = '密钥库密码'
keyPassword = '密钥密码'
}
执行 gradle signArchives 生成签名文件。
为 Java Web Start(JNLP)签名
对 JNLP 应用需签名所有 JAR 文件,并确保 Manifest 包含权限属性:
Permissions: all-permissions
Codebase: *
使用相同 jarsigner 步骤签名后,用户运行时将看到数字证书提示。

注意事项
- 签名后的 JAR 需分发密钥库对应的公钥证书(
.cer文件),供用户导入信任库。 - 商业发布建议使用正规 CA 颁发的代码签名证书(如 DigiCert、Sectigo)。
- 时间戳参数(
-tsa)可避免签名过期,示例:jarsigner -tsa http://timestamp.digicert.com -keystore mykeystore.jks app.jar mykey






