Java Keytool 是什么?
Keytool 是Java提供的密钥(Key)和证书(Certificate)管理工具,用于管理公钥/私钥对以及相关证书。 Keytool是Java自带的工具,安装Java即可。位于Java安装的bin目录中, 比如C:\Program Files\Java\jre1.8.0_131\bin 。
如果安装了JDK则配置了JAVA_HOME, 则证书库文件位于 “%JAVA_HOME%/jre/lib/security/cacerts”。
密钥存储形式
Keytool 将密钥和证书存在 keystore 文件中,该文件包含:
- 密钥: 如果是非对称加密,则包含私钥和配对公钥; 对称加密则只包含密钥。
- 可信任的证书实体, 只包含公钥
密钥存储在密钥库中,一个密钥库可以存储多个密钥对,每个密钥都取一个别名。
keytool 命令选项
- -genkey 生成密钥
- -genkeypair 生成一对非对称密钥
- -alias 别名
- -keysize 密钥长度
- -keystore 生成密钥库的路径和名字。不指定的话则是在用户主目录, 文件名是 .keystore
- -keyalg 密钥算法,比如RSA, DSA
- -certreq 生成密钥请求文件
- -import 导入证书
- -export 导出证书
- -validity 证书有效期, 默认90天
- -list 列出证书库中的已有证书
- -delete 删除某个证书
- -keypass 密钥口令
- -storepass 密钥库口令
- -dname , 拥有者信息, CN姓名 , OU 组织单位名称, O组织名称, ST省市 , C国家
-dname "CN=xx,OU=xx,O=xx,L=xx,ST=xx,C=CN"
genkey 生成公私密钥对
keytool -genkey -alias myapp -keyalg RSA -keystore myapp.keystore
- 以上命令会要求输入密码等信息, 证书库密码默认是
changeit - 名字和姓氏输入的是域名或是主机名。
- 密钥库的密码和密钥的密码可以相同,也可以分别设置。第一次输入的是证书库的管理密码, 第二次输入的是该证书的密码。
将证书导入JDK的证书信任库
分为两步:
keytool -export -trustcacerts -alias myapp -file myapp.cer -keystore myapp.keystore -storepass changeit 导出的证书文件myapp.cerkeytool -import -trustcacerts -alias myapp -file myapp.cer -keystore %JAVA_HOME%/jre/lib/security/cacerts -storepass changeit
查看当前机器的java证书库中的已有证书
keytool -list -v -keystore "C:\Program Files\Java\jre1.8.0_131\lib\security\cacerts"
-v 详细列出 这里需要输入证书管理密码, 默认是 changeit
删除某个证书
keytool -delete -alias www.my.com -keystore "C:\Program Files\Java\jre1.8.0_131\lib\security\cacerts" -storepass changeit
|