近期在使用DevEco Studio3.1打包应用时遇到了一个问题,我使用Build—Generate Key and CSR创建了密钥库文件。 我这里需要获取到创建的.p12证书文件的MD5值,于是在控制台使用了keytool -list -v -keystore D:\myapp.p12命令获取证书指纹,但是如图所示没有MD5的信息。
然后我在网上查找了问题原因,为什么KeyTools不展示MD5,原来我是使用的较高版本的JDK生成的证书,已经不支持获取MD5了,我的DevEco Studio使用的JDK版本是17.0.5。而我使用较低版本的JDK运行命令则会报错:keytool 错误: java.io.IOException: Invalid keystore format。原因是生成证书的JDK与运行命令的JDK不匹配,无法解析。于是我又查询是否还有其他方法能获取当前证书文件的MD5,我找到了这个命令:keytool -exportcert -keystore xxx.keystore | openssl dgst -md5,可以导出MD5,下面来看一下这个命令的使用方法。
如果未安装openssl库直接运行命令会报以下的错误:
所以需要先安装并配置好OpenSSL再执行命令:
1. 前往官网下载OpenSSL库:Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions,选择其中一个版本下载安装即可
2. 安装完毕,需要配置一下环境变量,新建系统变量,配置如图:
在“path”中添加%OPENSSL_HOME%的引用
3. 保存环境变量后,在命令行中输入 openssl version 查看是否可用。
至此OpenSSL库就已经配置安装完成了,下面执行命令“keytool -exportcert -keystore xxx.keystore | openssl dgst -md5”就可以获取到证书的MD5了。