keytool

Posted kevin00

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了keytool相关的知识,希望对你有一定的参考价值。

keytool

一、keytool是java自带的生成数字证书的一种命令工具,KeyStore里面存放3个实体,PrivateKeyEntry,SecretKeyEntry,TrustedCertificateEntry,一个条目就是条目名+实体keytool命令在jdk安装路  径的位置:/Library/java/JavaVirtualMachines/jdk1.8.0_171.jdk/Contents/Home/bin

    技术分享图片

二、java自带的密钥库在$JAVA_HOME/jre/lib/security目录下的cacerts文件

  技术分享图片

 

三、keytool命令的参数信息,在安装了jdk环境的pc下输入keytool -help,查看具体参数详解的信息可用keytool 参数 -help来实现

MBP-de-bitmain:bin bitmain$ keytool -help
密钥和证书管理工具

命令:

 -certreq            生成证书请求
 -changealias        更改条目的别名
 -delete             删除条目
 -exportcert         导出证书
 -genkeypair         生成密钥对
 -genseckey          生成密钥
 -gencert            根据证书请求生成证书
 -importcert         导入证书或证书链
 -importpass         导入口令
 -importkeystore     从其他密钥库导入一个或所有条目
 -keypasswd          更改条目的密钥口令
 -list               列出密钥库中的条目
 -printcert          打印证书内容
 -printcertreq       打印证书请求的内容
 -printcrl           打印 CRL 文件的内容
 -storepasswd        更改密钥库的存储口令

  

四、常用命令

1> 生成密钥库:   

keytool -genkey -v  -keyalg RSA -alias keyAlias -keypass password -storepass password -keystore /Users/bitmain/learndemo/keytool/key.jks   

-v 详细输出
-alias 处理的条目的别名
-keyalg 密钥算法名称
-keypass 密钥口令
-storepass 密钥库口令
-keystore 密钥库名称
-storetype <storetype> 密钥库类型

 

如上命令在/Users/bitmain/learndemo/keytool下生成名为key.jks密钥库

注意:使用需要指列出部分参数,其他参数可通过keytool -genkey -help来查看。keytool -genkey 如果不指定条目的别名,会自动生成一个名为mykey的条目,条目可以理解成证书,storetype有jks,pkcs12两种类型

    技术分享图片

2> 查看证书库信息

  keytool -list -v -keystore key.jks 查看证书库信息

  keytool -list -v  -alias  mykey -keystore key.jks  使用别名查看keystore特定条目

  如下图:记录了密钥库类型:jks,密钥库中条目的数量,条目的别名,条目类型(默认添加的条目类型才是privatekeyentry),证书链的长度

      技术分享图片

3> 导出导入

  keytool -export -alias mykey -keystore /Users/bitmain/learndemo/keytool/key.jks -file publickey.cer  导出密钥库中的证书(包含公钥的证书)

  keytool -certreq -alias mykey -keystore /Users/bitmain/learndemo/keytool/key.jks -file key.csr  // 为存在的keystore生成证书请求文件CSR(Certificate Signing Request证书请求文件) CSR在此不多做介绍

  keytool -import -trustcacerts -alias google -file google.cer -keystore key.jks  // 导入根证书或中级证书到keystore,导入之后可通过keytool -list

查看密钥库中多了一条别名为google的条目

4> 查看单个证书

  keytool -printcert -v -file key.cer   // 查看cer证书的内容

  keytool -printcertreq -v -file key.csr  // 查看csr文件的内容

5> 删除密钥库中的条目、修改密钥库的密码

  keytool -delete -alias google  -keystore key.jks  // 从key.jks密钥库中删除别名为google的条目

  keytool -storepasswd -new new_storepass -keystore key.jks  //  修改密钥库的密码

五、java自带的密钥库cacerts

  cacerts密钥库和密钥的密码默认是changeit

  //  导入新的CA到信任证书

      keytool -import -trustcacerts -file /path/to/ca/ca.pem -alias CA_ALIAS -keystore $JAVA_HOME/jre/lib/security/cacerts

六、说明:签发证书与信任证书:PrivateKeyEntry trustedCertEntry

 

     

    

 


以上是关于keytool的主要内容,如果未能解决你的问题,请参考以下文章

keytool的一些命令

FW--tomcat bi-laternal https and keytool

keytool

使用keytool 生成证书

Java结合keytool实现非对称加密和解密

Java 结合 keytool 实现非对称加密和解密