java

封装Java Jar包工具-制作子证书与签名APK功能

提供jar包供应使用, 使用方式有两种

访问-- -- --

封装java jar包工具 制作子证书与 签名apk功能

业务需要,封装java

工具使用

提供jar包供应使用, 使用方式有两种

1. java -jar xxx.jar 命令使用

由提供的 sign_tool-x.x-RELEASE.jar 到安装好jdk环境中使用命令, java -jar 获取支持的功能 image-20250820194534872


java -jar sign_tool-1.0-SNAPSHOT.jar help
证书工具命令行接口
用法:
--证书处理
  java -jar cert-tool.jar generate-cert --parent-cert <path> --parent-key <path> --org-name <name> --child-cert <path> --child-key <path>
  java -jar cert-tool.jar verify-issuer --child-cert <path> --parent-cert <path>
  java -jar cert-tool.jar get-cert-info --cert-file <path>
  java -jar cert-tool.jar get-cert-org --cert-content <content>
  java -jar cert-tool.jar verify-private-key --cert-content <content> --key-content <content>
--签名Apk
  java -jar sign-tool.jar sign-apk --cert-file <path> --key-file <path> --apk-path <path> --signed-apk-path <path>
--帮助
  java -jar cert-tool.jar help

参数说明:
  --parent-cert: 父证书文件路径
  --parent-key: 父私钥文件路径
  --org-name: 组织名称
  --child-cert: 子证书文件保存路径
  --child-key: 子私钥文件保存路径
  --output-cert: 输出证书文件路径
  --output-key: 输出私钥文件路径
  --cert-file: 证书文件路径
  --cert-content: 证书内容
  --key-content: 私钥内容
  --apk-path: 要签名的APK文件路径
  --signed-apk-path: 签名后APK文件保存路径

2. maven依赖对应库后 使用

maven 添加提供的阿里云maven中央仓库,


// maven添加对应的阿里云仓库地址 settings.xml配置

<servers>
  <server>
    <id>2048678-release-Cfs7mt</id>
    <username>5fb32796a3bcee4a48c8db2d</username>
    <password>************</password>
  </server>
</servers>

<repositories>
  <repository>
    <id>2048678-release-Cfs7mt</id>
    <url>https://packages.aliyun.com/5fb327ec22a8c7ff393513ea/maven/2048678-release-cfs7mt</url>
    <releases>
      <enabled>true</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
  </repository>
</repositories>


// 并且在pom.xml下面 添加如下maven依赖配置
 
<dependency>
  <groupId>com.xcheng.apex.kozen.signtool</groupId>
  <artifactId>sign_tool</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>

工具接口

因为秘钥与证书属于重要敏感文件,接口上建议都使用多都以文件为主, 入参出参都传有效文件绝度路径

1. 生成子证书

因为根证书未公开, 故上层证书由此接口生成

  • 命令

    java -jar sign_tool-1.0-SNAPSHOT.jar generate-root-cert --org-name orgtest1 --child-cert orgtest1.crt --child-key orgtest1.key
    
    证书生成成功:
    证书已保存到: orgtest1.crt
    私钥已保存到: orgtest1.key
    
  • 代码

    
    

2. 生成2级/ N级子证书

二级至后面的证书由此接口生成

  • 命令

    java -jar sign_tool-1.0-SNAPSHOT.jar generate-cert --parent-cert orgtest1.crt --parent-key orgtest1.key --org-name orgtest1_sub1 --child-cert orgtest1_sub1.crt --child-key orgtest1_sub1.key
    
    证书生成成功:
    证书已保存到: orgtest1_sub1.crt
    私钥已保存到: orgtest1_sub1.key
  • 代码

3. 获取证书所有信息

  • 命令

     java -jar sign_tool-1.0-SNAPSHOT.jar get-cert-info --cert-file orgtest1_sub1.crt
     
    Subject: CN=orgtest1_sub1, OU=Department, O=Organization
    Issuer: CN=orgtest1, OU=Department, O=Organization
    Serial Number: 1755684011245
    Not Before: Tue Aug 19 18:00:11 CST 2025
    Not After: Thu Aug 20 18:00:11 CST 2026
    Signature Algorithm: SHA256withRSA
  • 代码

4. 校验子级证书,是否由上一级签发

  • 命令

    \sign_tool\target> java -jar sign_tool-1.0-SNAPSHOT.jar verify-issuer --child-cert orgtest1_sub1.crt --parent-cert orgtest1.crt
    
    验证成功: 子证书由父证书签发
  • 代码

5. 获取证书拥有者的组织名称

  • 命令

    java -jar sign_tool-1.0-SNAPSHOT.jar get-cert-org --cert-path orgtest1_sub1.crt
    
    证书组织名称: Organization
  • 代码

6. 验证私钥是否正确

  • 命令

    # 匹配的证书
    java -jar sign_tool-1.0-SNAPSHOT.jar verify-private-key --cert-path orgtest1_sub1.crt --key-path orgtest1_sub1.key
    验证成功: 私钥与证书匹配
    
    # 不匹配的证书
    java -jar sign_tool-1.0-SNAPSHOT.jar verify-private-key --cert-path orgtest1_sub1.crt --key-path orgtest1.key
    验证失败: 私钥与证书不匹配
    
  • 代码

7. 证书签名App

  • 命令

    java -jar sign_tool-1.0-SNAPSHOT.jar sign-apk --cert-file orgtest1_sub1.crt --key-file orgtest1_sub1.key --apk-path People.apk --signed-apk-path People_signed1.apk
    
    APK签名成功!
    签名文件保存在: E:\codeworks\xc_projects\xc-projects_cert_jar\sign_jar\sign_tool\target\People_signed1.apk
  • 代码

访问 --

讨论与反馈