名词解释
keytool: Key and Certificate Management Tool证书和密钥管理工具,是JDK自带的工具,一般安装JDK后就可以使用;
BKS: bks证书是Android平台上的证书格式,用于存储公钥、私钥以及相关的密码和信息。 bks证书通常用于Android应用程序开发中,用于加密通信、数字签名等安全功能。 bks证书的格式是二进制格式,不同于p12证书的基于ASN.1编码的格式。一般来说,我们使用jdk的keytool只能生成jks的证书库,如果生成bks的则需要下载BouncyCastle库。
查看BKS证书条目
keytool -list -keystore /path/to/bksfile -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass {passwd}
密钥库类型: BKS
密钥库提供方: BC
您的密钥库包含 4 个条目
GeoTrust, 2021-3-17, trustedCertEntry,
证书指纹 (SHA-256): 23:DD:F0:8B:22:37:3D:86:15:8E:xxxx
self-intermedia, 2021-3-17, trustedCertEntry,
证书指纹 (SHA-256): 43:A7:4B:5C:55:EA:95:26:A5:xxxx
self-root, 2021-3-17, trustedCertEntry,
证书指纹 (SHA-256): 3B:AD:F4:F8:CA:CB:A2:59:47:2D:xxxx
DigiCert, 2021-3-17, trustedCertEntry,
证书指纹 (SHA-256): 43:48:A0:E9:44:4C:78:CB:xxxx
导出证书文件
keytool -exportcert -keystore /path/to/bksfile -storetype BKS -provider org.bouncycastle.jce.provider.BouncyCastleProvider -storepass {passwd} -alias self-intermedia -file self-intermedia.crt
存储在文件 <self-intermedia.crt> 中的证书
// 其中`-alias`即list显示的证书代号
crt证书转换pem格式
openssl x509 -inform der -in self-root.crt -outform pem -out self-root.pem
其他
keytool报错java.security.KeyStoreException: BKS not found
正如前面所说,BKS格式需要下载BouncyCastle库支持。
下载BouncyCastle jar包文件后,复制到jre/lib/ext
目录即可。
官网链接 https://www.bouncycastle.org/latest_releases.html#LATEST
注意下载对应JDK版本的jar包。
keytool其他用法
keytool
密钥和证书管理工具
命令:
-certreq 生成证书请求
-changealias 更改条目的别名
-delete 删除条目
-exportcert 导出证书
-genkeypair 生成密钥对
-genseckey 生成密钥
-gencert 根据证书请求生成证书
-importcert 导入证书或证书链
-importpass 导入口令
-importkeystore 从其他密钥库导入一个或所有条目
-keypasswd 更改条目的密钥口令
-list 列出密钥库中的条目
-printcert 打印证书内容
-printcertreq 打印证书请求的内容
-printcrl 打印 CRL 文件的内容
-storepasswd 更改密钥库的存储口令
使用 "keytool -command_name -help" 获取 command_name 的用法