KeyStore

简述

KeyStore是一个存储库,可用于存储一系列密钥(Secret Key)、密钥对(Key Pair)或证书(Certificate)。

密钥:只有一个钥,一般是对称加密时使用。 密钥对:包含公钥(Public Key)和私钥(Private Key),一般是非对称加密时使用。

  • KeyStore可以设置密码。
  • 密钥、密钥对、证书在KeyStore统称为Key(又称"条目"),每一个Key通过alias(别名)区分。Key也可以设置密码。
  • KeyStore可以理解为一种规范,常见的 JKS(Java Key Store)只是KeyStore的一种实现类型,其他的还有PKCS12、JCEKS等。
    • JKS 可以存储密钥对和证书,但不能用于存储密钥。
    • PKCS12、JCEKS 都可以存储密钥对、证书、密钥。

实战

JDK提供了 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 的用法

生成密钥对

查看帮助 keytool -genkeypair -help

  • storetype:指定KeyStore的实现类型(JKS(默认)、JCEKS、PKCS12)
  • keystore:指定KeyStore(存储库)名称(可包含路径)
  • storepass:指定KeyStore的密码
  • alias:指定Key的别名
  • keypass:指定Key的密码
  • keysize:指定Key的位大小
  • keyalg:指定Key的加密算法名称
  • validity:指定有效天数

生成密钥对

keytool -genkeypair -keystore my.keystore -storepass 123456 -alias my-key -keypass 654321 -keysize 1024 -keyalg RSA -validity 365
执行该命令,根据提示输入相关信息,就会往存储库中添加密钥对。(若存储库文件不存在,会自动创建)

查看存储库文件的明细(有多少Key)

keytool -list -keystore my.keystore -storepass 123456
-v 输出详情
-rfc 以 RFC 样式输出

查看密钥对中的公钥

(实际上密钥对中公钥是以证书的形式存放的,即密钥对->证书->公钥)
keytool -list -rfc --keystore my.keystore -storepass 123456 -alias my-key | openssl x509 -inform pem -pubkey
(openssl 命令需要在 git bash 执行)

-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCWUmrLbxhCiDB1Af1FyL3wPrSm
V9MYjLexx5dtPKWbwhv8aTvJT1bnsrFtepVLm0KcMjqA7sZdJNfolh9nXNUYqQU5
oFFkLjLyPjY5qwXNrbLms6MtEMKjH85GvMgLZjAsuwiqosqi/TpClG0b3ftXPByD
M4UBnOsVHFc3b2HKtQIDAQAB
-----END PUBLIC KEY-----

导出证书

keytool -export -keystore my.keystore -storepass 123456 -alias my-key -file my.cert

打印证书

keytool -printcert -rfc -file my.cert

查看证书中的公钥

keytool -printcert -rfc -file my.cert | openssl x509 -inform pem -pubkey

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值