一些常用的密钥证书转换命令收集

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一些常用的密钥证书转换命令收集相关的知识,希望对你有一定的参考价值。

参考技术A 最近的项目工作中使用到了比较多的证书,私钥转换命令。用来满足不同场景下对不同格式密钥的需求。现在整理一下,供以后项目参考

p7b 是#PKCS7证书的格式,特点是有一个完整的证书链,从根证书到应用层证书。一般的大厂会有自己的PKI系统,PKI发布出来的证书通常都是这个 p7b 格式的。 p7b 格式不够直观,Java的keytool也不支持对其导入,因此我们将它转换成常见的 cer / pem 格式

目录下会生成一份 cer / pem 格式的证书文件。打开就是一份份切分好的证书合集,从根证书到应用层证书,一目了然。在Windows环境下,cer格式证书可以直接导入到系统证书管理器中。方便的成为系统信任的根证书。

这是一种个人信息交换(#PKCS12)格式,后缀名也可以是p12,是一种包含私钥和证书的合体文件,并且通常有密码进行保护,可以直接导入到操作系统中。
提取私钥:

提取证书:

搞Java开发免不了使用JDK自己的密钥管理标准。Java自带的keytool工具是个密钥和证书管理工具。它使用户能够管理自己的公钥/私钥对及相关证书,用于(通过数字签名)自我认证(用户向别的用户/服务认证自己)或数据完整性以及认证服务。它还允许用户储存他们的通信对等者的公钥(以证书形式)。

在Java中,有Keystore来存储个人信息交换(Keystore / #PKCS12),信任库(Truststore)。尤其是在TLS,签名,加密的场景下,对自签名的证书都需要添加到JDK的信任库中。

JDK/JRE默认的Truststore存放位置为:

以我们从PKI发布给我们的p7b证书为例,我们在转换成cer格式之后,执行如下的命令,就能导入到JDK信任链中,命令会让你输入cacerts信任库密码,默认为 changeit

添加完之后可以查看存在的信任库

也可以导出信任库所有信任链信息到文本文件

如果是要删除一个信任链,那么执行以下命令

keytool常用操作

keytool

秘钥需要存储在秘钥库中,秘钥库可以理解为一个存储了一个或多个秘钥的文件。一个秘钥库可以存储多个密钥对,每个秘钥对你都需要给他们取一个名字。

D:softwareJavajdk1.7.0_79in>keytool
密钥和证书管理工具
 
命令:
 
 -certreq 生成证书请求
 -changealias 更改条目的别名
 -delete 删除条目
 -exportcert 导出证书
 -genkeypair 生成密钥对
 -genseckey 生成密钥
 -gencert 根据证书请求生成证书
 -importcert 导入证书或证书链
 -importkeystore 从其他密钥库导入一个或所有条目
 -keypasswd 更改条目的密钥口令
 -list 列出密钥库中的条目
 -printcert 打印证书内容
 -printcertreq 打印证书请求的内容
 -printcrl 打印 CRL 文件的内容
 -storepasswd 更改密钥库的存储口令
 
使用 "keytool -command_name -help" 获取 command_name 的用法

常用操作

  • 生成秘钥库
keytool -genkeypair -alias "localhost" -keyalg "RSA" -keystore "d:localhost.keystore"
 
keytool -genkey -keystore "d:localhost.keystore" -alias "localhost" -keyalg "RSA" -validity 365 -dname "CN=localhost, OU=org, O=org.cj, L=上海, ST=上海, C=中国" -keypass "123456" -storepass "123456"
  • 秘钥库添加条目
keytool -genkey -keystore "d:localhost.keystore" -alias "localhost2" -keyalg "RSA" -validity 365 -dname "CN=127.0.0.1, OU=org, O=org.cj, L=上海, ST=上海, C=中国" -keypass "123456" -storepass "123456"
  • 秘钥库删除条目
keytool -delete -keystore "d:localhost.keystore" -alias "localhost2"
  • 查看秘钥库信息
keytool -list -v -keystore "d:localhost.keystore" -storepass "123456"
  • 导出某个条目的证书
keytool -alias "localhost" -exportcert -keystore "d:localhost.keystore" -file "d:localhost.cer" -storepass "123456"
  • 证书导入JRE库
keytool -import -alias "localhost" -keystore "C:Javajdk1.8.0_40jrelibsecuritycacerts" -file "D:localhost.cer" -trustcacerts -storepass "123456"
  • JRE库中删除某个证书
keytool -delete -alias "localhost" -keystore "C:Javajdk1.8.0_40jrelibsecuritycacerts" -storepass "123456"
  • PFX证书转JSK
keytool -importkeystore -srckeystore a.pfx -destkeystore a.jks -srcstoretype PKCS12 -deststoretype JKS
  • 修改秘钥库条目密码
keytool -keypasswd -alias test1 -keypass testtesttest1 -new testtest1 -storepass testtest -keystore test.keystore
 

以上是关于一些常用的密钥证书转换命令收集的主要内容,如果未能解决你的问题,请参考以下文章

如何使用pkcs11接口读取证书的密钥进行RSA

keytool常用操作

C语言常用的一些转换工具函数收集

Docker笔记:收集Docker常用的一些命令

SSL证书安装小技巧:常用的OpenSSL命令备忘表

linux 运维常用的一些命令收集