Keytool是Java自带的密钥和证书管理工具,用于管理公钥/私钥对及相关证书,进行自我认证或加密访问服务等,本文讲述如何通过keytool创建和维护证书,以及管理证书密码。
管理证书
创建证书
举例,创建一个别名为CERT_ALIAS_NAME的证书,并存储在cert.keystore的证书库中:
# 创建证书 keytool -genkeypair -alias "CERT_ALIAS_NAME" -keyalg "RSA" -keystore "cert.keystore" # 查看密库中的证书 keytool -list -keystore cert.keystore
以上命令的参数说明:
参数 | 说明 |
-genkeypair | 生成非对称密钥 |
-alias | 指定密钥对别名 |
-keyalg | 指定密钥的加密算法 |
-keystore | 指定证书库文件 |
导出证书
将生成的证书导出为证书文件CERT_FILE_NAME.cer:
keytool -export -alias CERT_ALIAS_NAME -file CERT_FILE_NAME.cer -keystore cert.keystore
以上命令的参数说明:
参数 | 说明 |
-alias | 指定证书别名 |
-keystore | 指定证书库存储文件 |
-file | 指定证书名称 |
备注:以上命令中均未指定文件路径,默认都在JDK的bin目录中,以下的命令中将指定文件路径。
导入证书
以上已经讲过如何创建和导出本地证书,然后大部分生产环境中,证书都是由专业机构生成,此时,仅需将待导入证书保存至本地,然后进入JRE证书库目录${JAVA_HOME}/jre/lib/security,运行以下命令:
keytool -import -alias CERT_ALIAS_NAME -keystore cacerts -file /opt/tmpfile/CERT_FILE_NAME.cer
输入jre证书库密码,默认是changeit,查看导入结果:
keytool -list -keystore ${JAVA_HOME}/jre/lib/security/cacerts -alias CERT_ALIAS_NAME
导入成功后,重启服务即可。
删除证书
keytool -delete -alias CERT_ALIAS_NAME -keystore ${JAVA_HOME}/jre/lib/security/cacerts
管理密码
修改证书库默认密码
keytool -storepasswd
依次输入keystore的原密码(changeit)、新密码即可。
修改指定证书的密码
举例,将测试证书库中别名为CERT_ALIAS_NAME的证书条目的密码更新为NEWPASSWD:
keytool -keypasswd -alias CERT_ALIAS_NAME -keypass OLDPASSWD -new NEWPASSWD -storepass STOREPASSWD -keystore ${JAVA_HOME}/jre/lib/security/testcert
原创文章禁止转载:技术学堂 » Java自带证书管理工具keytool的使用方法