Z次元
文章 笔记 日志
专题
专栏分类 文章归档
友链
友情链接 朋友圈
留言
头像
系列文章
使用KeyStore生成证书
系列文章
知识积累
最后更新:2024/12/15|创建时间:2022/1/13
文章摘要
这篇文章介绍了使用Keytool工具生成和管理Java密钥库(keystore)中的证书。详细列出了keytool的常用命令,并提供了具体的命令示例和参数解释。文章还展示了如何将生成的证书导出为不同格式,并介绍了密钥库和证书之间的转换方法,为用户提供了全面的密钥和证书管理指南。

前言

Keytool是一个Java数据证书的管理工具 , 在keystore里,包含两种数据:

  • 密钥实体(Key entity):即密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
  • 可信任的证书实体(trusted certificate entries):即证书(包含公钥)

keytool常用命令:

  • genkey 在用户主目录中创建一个默认文件”.keystore”
  • alias 产生别名
  • keystore 指定密钥库的名称(产生的各类信息将不在.keystore文件中)
  • keyalg 指定密钥的算法 (如 RSA DSA(如果不指定默认采用DSA))
  • validity 指定创建的证书有效期多少天
  • keysize 指定密钥长度
  • storepass 指定密钥库的密码(获取keystore信息所需的密码)
  • keypass 指定别名条目的密码(私钥的密码)
  • dname 指定证书拥有者信息 例如: “CN=名字与姓氏,OU=组织单位名称,O=组织名称,L=城市或区域名称,ST=州或省份名称,C=单位的两字母国家代码”
  • list 显示密钥库中的证书信息 keytool -list -v -keystore 指定keystore -storepass 密码
  • v 显示密钥库中的证书详细信息
  • export 将别名指定的证书导出到文件 keytool -export -alias 需要导出的别名 -keystore 指定keystore -file 指定导出的证书位置及证书名称 -storepass 密码
  • file 参数指定导出到文件的文件名
  • delete 删除密钥库中某条目 keytool -delete -alias 指定需删除的别 -keystore 指定keystore -storepass 密码
  • printcert 查看导出的证书信息 keytool -printcert -file abc.crt
  • keypasswd 修改密钥库中指定条目口令 keytool -keypasswd -alias 需修改的别名 -keypass 旧密码 -new 新密码 -storepass keystore密码 -keystore sage
  • storepasswd 修改keystore口令 keytool -storepasswd -keystore e:\abc.keystore(需修改口令的keystore) -storepass 123456(原始密码) -new abc(新密码)
  • import 将已签名数字证书导入密钥库 keytool -import -alias 指定导入条目的别名 -keystore 指定keystore -file 需导入的证书

创建一个Keystore证书

keytool -genkeypair -alias serverkey -keyalg RSA -keysize 2048 -validity 3650 -keystore CATest.keystore

说明: storepass keystore 文件存储密码,不加这个参数会在后面要求你输入密码 keypass 私钥加解密密码 alias 实体别名(包括证书私钥) dname 证书个人信息 keyalg 采用公钥算法,默认是DSA,这里采用RSA keysize 密钥长度(DSA算法对应的默认算法是sha1withDSA,不支持2048长度,此时需指定RSA) validity 有效期 keystore 指定keystore文件储存位置

设置密钥口令,及证书信息,输入Y确定,生成证书
图片

查看证书信息:

keytool -v -list -keystore CATest.keystore

图片
导出为cer公钥证书:

keytool -exportcert -keystore  CATest.keystore -file CATest.cer -alias serverkey

如果要导出crt的话,只需要改后缀即可(下面的证书也是同理):

keytool -exportcert -keystore  CATest.keystore -file CATest.crt -alias serverkey

创建一个JKS证书

与keystore证书同理
生成JKS证书:

keytool -genkey -alias testClient -keyalg RSA -keysize 1024 -keystore CATest.jks -validity 365

查看证书信息:

keytool -list -v -keystore CATest.jks

导出为cer文件证书:

keytool -alias testClient -exportcert -keystore CATest.jks -file CATest.cer

创建P12证书

keytool -genkey -v -alias testClient -keyalg RSA -storetype PKCS12 -keystore CATest.p12

图片
查看证书信息:

keytool -list -v -keystore CATest.p12

导出为cer文件证书:

keytool -export -alias testClient -keystore  CATest.p12 -storetype PKCS12 -storepass 密钥口令 -rfc -file CATest.cer

格式转化

将公钥证书导出密钥库:
将cer公钥证书转为keystore证书

keytool -import -v -file CATest.cer -keystore CATest2.keystore

图片

将keystore转为p12:

keytool -importkeystore -srckeystore CATest.keystore -destkeystore CATest2.p12 -srcalias serverkey -destalias serverkey -srcstoretype jks -deststoretype pkcs12 -noprompt

图片

版权声明
本文依据 CC-BY-NC-SA 4.0 许可协议授权,请您在转载时注明文章来源为 Z次元 ,若本文涉及转载第三方内容,请您一同注明。
更多专栏文章推荐
知识积累
人非生而知之者,孰能无惑?惑而不从师,其为惑也,终不解矣。
SpringBoot的AOP实战
2021/12/23
Java私有成员是否会被继承
2021/12/12
SpringBoot集成轻量级搜索引擎——Meilisearch
2025/8/7
JDK新版特性(18-21)
2025/2/7
评论区

删除确认

评论删除后无法恢复,请确认是否继续?
发表评论

这里还没有评论哦

快来发一条评论抢占前排吧

前言
创建一个Keystore证书
创建一个JKS证书
创建P12证书
格式转化
目录
前言
创建一个Keystore证书
创建一个JKS证书
创建P12证书
格式转化
博客
文章 笔记 日志
专题
专栏分类 文章归档
友链
友情链接 朋友圈
交流
留言 关于我
主页
菜单
置顶
主题
我的
十玖八柒
每天进步多一点
欢迎到访φ(゜▽゜*)♪
最新评论
个人占星:
DeepSeek没有想象中的好用
个人占星:
想给自己的网站弄个统计功能,但不会弄,头疼
永恒末匕:
好哇塞,这个厉害
Corwin: @十玖八柒
哎 主要是我的个人网站用的是静态的cos 实现评论框还是有点困难
我的
关于我
个人主页
站点地图
RSS订阅
导航
十年之约
虫洞穿梭
开源博客
前端开源仓库
后端开源仓库
©2020 - 2025 By 十玖八柒 版权所有
豫ICP备20021466号