KeyStore是什么

What is the purpose of 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 都可以存储密钥对、证书、密钥。

题外话:将KeyStore类比为数据库,它可以设置密码;
那么Key就是表,alias也就是表名,密钥、密钥对、证书对应不同的表结构,密钥’表’只有一个字段,密钥对’表’有两个字段,存公钥和私钥,证书’表’同理,Key也可以设置密码。
设置密码的比喻有点勉强啊,理解意思就行哈。

实战

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值