keytool是 Java 提供的一个密钥和证书管理工具,常用于生成、导入、导出、查看和删除密钥库(KeyStore)中的条目。它广泛应用于 SSL/TLS 证书管理、HTTPS 配置、Java 应用安全等领域。
🔧 一、keytool 命令详解
1. 查看密钥库内容
keytool -list -v -keystore <keystore-file> -storetype <type> -storepass <password>
-list
: 列出密钥库中的所有条目。-v
: 显示详细信息。-keystore
: 指定密钥库文件路径。-storetype
: 密钥库类型(如JKS
,PKCS12
)。-storepass
: 密钥库密码。
示例:
keytool -list -v -keystore keystore.jks -storepass changeit
keytool -list -v -keystore cert.pfx -storetype PKCS12 -storepass 123456
2. 生成自签名证书
keytool -genkeypair -alias <alias> -keyalg <algorithm> -keysize <bits> -storetype <type> -keystore <keystore-file> -validity <days> -storepass <password>
-genkeypair
: 生成密钥对。-alias
: 密钥别名。-keyalg
: 加密算法(如 RSA、DSA)。-keysize
: 密钥长度(如 2048)。-validity
: 证书有效期(天数)。-storepass
: 密钥库密码。
示例:
keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 -storetype JKS -keystore mykeystore.jks -validity 365 -storepass changeit
3. 导出证书
keytool -exportcert -alias <alias> -file <cert-file> -keystore <keystore-file> -storepass <password>
-exportcert
: 导出证书。-file
: 输出的证书文件(通常为.cer
或.crt
)。
示例:
keytool -exportcert -alias mykey -file mycert.cer -keystore mykeystore.jks -storepass changeit
4. 导入证书到信任库
keytool -importcert -alias <alias> -file <cert-file> -keystore <truststore-file> -storepass <password>
-importcert
: 导入证书。-file
: 要导入的证书文件。
示例:
keytool -importcert -alias rootca -file rootca.crt -keystore truststore.jks -storepass changeit
5. 删除密钥库中的条目
keytool -delete -alias <alias> -keystore <keystore-file> -storepass <password>
示例:
keytool -delete -alias oldkey -keystore keystore.jks -storepass changeit
6. 更改密钥库密码
keytool -storepasswd -new <new-password> -keystore <keystore-file> -storepass <old-password>
示例:
keytool -storepasswd -new newpass -keystore keystore.jks -storepass oldpass
7. 更改密钥密码
keytool -keypasswd -alias <alias> -keystore <keystore-file> -keypass <old-key-pass> -new <new-key-pass> -storepass <keystore-pass>
示例:
keytool -keypasswd -alias mykey -keystore keystore.jks -keypass oldkeypass -new newkeypass -storepass keystorepass
📊 二、命令参数说明表格
参数 | 含义 | 示例 |
---|---|---|
-alias | 密钥/证书别名 | -alias mykey |
-keystore | 密钥库文件路径 | -keystore keystore.jks |
-storetype | 密钥库类型(JKS/PKCS12) | -storetype PKCS12 |
-storepass | 密钥库密码 | -storepass changeit |
-keypass | 密钥密码 | -keypass keypass |
-keyalg | 加密算法(RSA/DSA) | -keyalg RSA |
-keysize | 密钥长度 | -keysize 2048 |
-validity | 证书有效天数 | -validity 365 |
-file | 文件路径(证书或输出文件) | -file cert.cer |
🧩 三、常用场景推荐命令表格
场景 | 命令示例 |
---|---|
查看 JKS 内容 | keytool -list -v -keystore keystore.jks -storepass changeit |
查看 PFX 内容 | keytool -list -v -keystore cert.pfx -storetype PKCS12 -storepass 123456 |
生成自签名证书 | keytool -genkeypair -alias mykey -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 -storepass changeit |
导出证书 | keytool -exportcert -alias mykey -file cert.cer -keystore keystore.jks -storepass changeit |
导入证书 | keytool -importcert -alias rootca -file rootca.crt -keystore truststore.jks -storepass changeit |
删除证书 | keytool -delete -alias oldkey -keystore keystore.jks -storepass changeit |
修改密钥库密码 | keytool -storepasswd -new newpass -keystore keystore.jks -storepass oldpass |
修改密钥密码 | keytool -keypasswd -alias mykey -keystore keystore.jks -keypass oldkeypass -new newkeypass -storepass keystorepass |
如你有具体需求(例如:如何将 [.pfx](file://D:\workspace\me\rbac2024\read\后台系统\shop-api\itmk-base-web\target\classes\ssl\zhongyuele.top.pfx) 转换为 .jks
?如何批量导入多个证书?),我可以提供更详细的指导。