Keytool 是一个有效的安全钥匙和证书的管理工具。
Java 中的 keytool.exe (位于 JDK\Bin 目录下)可以用来创建数字证书,所有的数字证书是以一条一条(采用别名区别)的形式存入证书库中的。证书库中的一条证书包含该条证书的私钥,公钥和对应的数字证书的信息。证书库中的一条证书可以导出数字证书文件,数字证书文件只包括主体信息和对应的公钥。
Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中。 在keystore里,包含两种数据:
1.密钥实体(Key entity)——密钥(secret key)又或者是私钥和配对公钥(采用非对称加密)
2.可信任的证书实体(trusted certificate entries)——只包含公钥
详细分析如下
Keystore的别名:所有的keystore入口(钥匙和信任证书入口)是通过唯一的别名访问,别名是不区分大小写, 如别名Hugo和hugo指向同一个keystore入口 。
可以在加一个入口到keystore的时候使用-genkey参数来产生一个钥匙对(公共钥匙和私有钥匙)时指定别名,也可以用-import参数加一个证书或证书链到信任证书。如:
1.keytool -genkey -alias duke –keypass dukekeypasswd
其中duke为别名,dukekeypasswd为duke别名的密码,这行命令的作用是产生一个新的公共/私有钥匙对。
假如你想修改密码,可以用:
keytool -keypasswd -alias duke -keypass dukekeypasswd -new newpass
将旧密码dukekeypasswd改为newpass
可以用-keystore指定其名时,将产生指定的keystore
2.检查一个keystore:
keytool -list -v -keystore keystore
Enter keystore password:your password(输入密码)
3.输出keystore到一个文件:testkey:
keytool -export -alias duke -keystore keystore -rfc -file testkey
系统输出:
Enter keystore password:your password(输入密码)
Certificate stored in file
例如:keytool -export -keystore monitor.keystore -alias monitor -file monitor.cer
将把证书库 monitor.keystore 中的别名为 monitor 的证书导出到 monitor.cer 证书文件中,它包含证书主体的信息及证书的公钥,不包括私钥,可以公开。
4.输入证书到一个新的truststore:
keytool -import -alias dukecert -file testkey -keystore truststore
Enter keystore password:your new password.(输入truststore新密码)
将keystore导入证书中这里向Java默认的证书 cacerts导入Rapa.cert
keytool -import -alias RapaServer -keystore cacerts -file Rapa.cert -keystore cacerts
5.证书条目的删除
keytool的命令行参数 -delete 可以删除密钥库中的条目,如: keytool -delete -alias RapaServer -keystore d2aApplet.keystore ,这条命令将 d2aApplet.keystore 中的 RapaServer 这一条证书删除了。
6.将证书导出到证书文件
keytool -export -alias myCA -file myCA.cer -keystore myCALib -storepass 123456 -rfc
使用该命令从名为myCALib的keystore中,把别名为myCA的证书导出到证书文件myCA.cer中。(其中-storepass指定keystore的密码,-rfc指定以可查看编码的方式输出,可省略)。
7.通过证书文件查看证书信息
keytool -printcert -file myCA.cer
8.密钥库中证书条目口令的修改
Keytool -keypasswd -alias myCA -keypass 654321 -new newpass -storepass 123456 -keystore myCALib
9.删除密钥库中的证书条目
keytool -delete -alias myCA -keystore myCALib
10.把一个证书文件导入到指定的密钥库
keytool -import -alias myCA -file myCA.cer -keystore truststore
(如果没有名为truststore的keystore,将自动创建,将会提示输入keystore的密码)
11.更改密钥库的密码
keytool -storepasswd -new 123456 -storepass 789012 -keystore truststore
其中-storepass指定原密码,-new指定新密码