欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

工具集 | 使用 Keytool 管理密钥和证书

最编程 2024-04-27 17:20:39
...
  • Keytool:JDK中自带(路径:%JAVA_HOME%\bin)
  • OpenSSL下载地址:http://slproweb.com/products/Win32OpenSSL.html

生成数字证书

  • 命令行执行:
    keytool -genkey -alias [你的数字证书别名] -keyalg RSA -validity 36500 -keystore [你的密钥库文件名]
    
  • 输入密钥库口令(建议妥善记录):
  • 连续回车跳过几个配置,输入"y"确认
  • 输入密钥口令(如果保持和密钥库口令相同,按回车)

1、如果在 C:\User[你的计算机名] 下没有 [你的密钥库文件名].keystore 文件,上述命令将在该目录下新建一个[你的密钥库文件名].keystore文件(密钥库文件)
2、密钥库口令是访问 [你的密钥库] 的密码,密钥口令指的是 [你的数字证书] 的密码


列举数字证书

  • 命令行执行:
    keytool -list -keystore [你的密钥库路径]
    如:keytool -list -keystore C:\Users\XuRui\[你的密钥库文件名]
    
  • 输入密钥库口令
  • 输出结果:
    密钥库类型: jks
    密钥库提供方: SUN
    
    您的密钥库包含 1 个条目
    
    [你的数字证书别名], 2019-4-16, PrivateKeyEntry,
    证书指纹 (SHA1): F3:D6:######:1B:F9
    

提取SHA1证书指纹

  • 命令行执行:
    keytool -exportcert -list -v -alias [你的数字证书别名] -keystore [你的密钥库路径]
    如:keytool -exportcert -list -v -alias [你的数字证书别名]-keystore C:\Users\XuRui\[你的密钥库文件名]
    
  • 输入密钥库口令
  • 输出结果:
    别名: [你的数字证书别名]
    创建日期: 2019-4-16
    条目类型: PrivateKeyEntry
    证书链长度: 1
    证书[1]:
    所有者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
    发布者: CN=Unknown, OU=Unknown, O=Unknown, L=Unknown, ST=Unknown, C=Unknown
    序列号: [序列号]
    有效期为 Tue Apr 16 11:34:22 CST 2019 至 Thu Mar 23 11:34:22 CST 2119
    证书指纹:
             MD5:  36:18:######:2D:65
             SHA1: F3:D6:######:1B:F9
             SHA256: D5:E3:######:36:1A
    签名算法名称: SHA256withRSA
    主体公共密钥算法: 2048 位 RSA 密钥
    版本: 3
    // 以下省略
    

提取密钥散列

  • 命令行执行:
    keytool -exportcert -alias [你的数字证书别名] -keystore [你的密钥库路径] | openssl sha1 -binary | openssl base64
    如:keytool -exportcert -alias [你的数字证书别名]-keystore C:\Users\XuRui\[你的密钥库文件名] | openssl sha1 -binary | openssl base64
    
  • 输入秘钥口令
  • 输出结果:
    8KC/######CuZ3=
    

APK签名

  • build.gradle中配置:
android{
    ...
    signingConfigs {
        release {//构建变体名
            keyAlias '[密钥/数字证书别名]'
            keyPassword '[密钥密码]'
            storePassword '[密钥库密码]'
            storeFile file('release/[密钥库文件名]') //密钥库文件的相对于项目根目录的路径
        }
    }
}

查看APK签名

  • 用WinRAR等工具解压apk,进入META-INF文件夹,其中RSA文件为签名信息
  • 命令行执行:
    keytool -printcert -file META-INF/[RSA文件名].RSA
    
  • 输出结果:
    所有者: [所有者]
    发布者: [发布者]
    序列号: [序列号]
    有效期为 Sat Sep 25 15:37:04 CST 2010 至 Sun Jun 28 15:37:04 CST 2065
    证书指纹:
             MD5:  84:6B:######:87:74
             SHA1: 23:27:######:05:33
             SHA256: BF:46:######:0A:B4
    签名算法名称: SHA1withRSA
    主体公共密钥算法: 1024 位 RSA 密钥
    版本: 3
    

推荐阅读

  • Java | ThreadLocal 线程本地存储
  • Android | 文件存储
  • Android | 再按一次返回键退出
  • Android | InputManagerService 与输入事件采集
  • 设计模式 | 静态代理与动态代理
  • Cocos Creator | 封装音频池工具
  • 笔记 | 使用 Markdown 高效率编写文档

感谢喜欢!你的点赞是对我最大的鼓励!欢迎关注彭旭锐的简书!