17个Sysadmin和开发人员需要知道的Keytool命令示例 Keytool是一个用于管理Java密钥库和证书的命令行工具。它可以用来生成密钥对、生成证书请求、导入/导出证书等操作。以下是17个Keytool命令示例,对于任何开发人员或系统管理员来说都很有用。 1. 生成自签名证书: keytool -genkey -alias mycert -keyalg RSA -keystore keystore.jks -validity 365 2. 生成证书请求: keytool -certreq -alias mycert -keystore keystore.jks -file certreq.csr 3. 导入证书: keytool -import -alias mycert -file cert.cer -keystore keystore.jks 4. 导出证书: keytool -export -alias mycert -file cert.cer -keystore keystore.jks 5. 列出密钥库中的条目: keytool -list -keystore keystore.jks 6. 删除密钥库中的条目: keytool -delete -alias mycert -keystore keystore.jks 7. 查看证书详情: keytool -printcert -file cert.cer 8. 更改密钥库密码: keytool -storepasswd -keystore keystore.jks 9. 更改别名密码: keytool -keypasswd -alias mycert -keystore keystore.jks 10. 导出密钥库为PKCS12格式: keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -srcstoretype JKS -deststoretype PKCS12 11. 将PKCS12密钥库转换为JKS格式: keytool -importkeystore -srckeystore keystore.p12 -destkeystore keystore.jks -srcstoretype PKCS12 -deststoretype JKS 12. 生成自签名证书并保存到PKCS12密钥库: keytool -genkey -alias mycert -keyalg RSA -keystore keystore.p12 -storetype PKCS12 -validity 365 13. 查看PKCS12密钥库内容: keytool -list -keystore keystore.p12 -storetype PKCS12 14. 生成自签名证书并保存为PEM格式: keytool -genkey -alias mycert -keyalg RSA -keystore keystore.jks -validity 365 keytool -exportcert -alias mycert -file cert.pem -keystore keystore.jks openssl x509 -inform DER -in cert.pem -out cert.crt 15. 查看PEM证书内容: openssl x509 -in cert.crt -text -noout 16. 生成自签名证书并保存为PKCS7格式: keytool -genkey -alias mycert -keyalg RSA -keystore keystore.jks -validity 365 keytool -certreq -alias mycert -keystore keystore.jks -file certreq.csr openssl smime -sign -in certreq.csr -text -out cert.p7b -signer cert.crt -inkey priv.key 17. 查看PKCS7证书内容: openssl pkcs7 -print_certs -in cert.p7b 这些命令涵盖了Keytool的常见用途,希望对您有所帮助。

Keytool是一个命令行实用工具,可让您管理/存储加密密钥和证书。

如果您的系统已安装Java,您可以使用keytool命令导入CA证书,列出证书,创建自签名证书,存储密码和公钥/私钥,并执行许多其他操作。

感到困惑了?不要担心;阅读时我会用更简单的术语解释。

请注意,我使用Linux测试命令并通过示例向您详细解释一些相关内容。

您也可以在Windows和macOS上使用Keytool命令。

Keytool命令是什么?

它是一个密钥和证书管理实用程序。它允许您存储通常用于验证/身份验证服务访问权限的私钥/公钥对。

考虑到本文的标题,可以假设该命令主要由系统管理员和开发人员使用。

在很大程度上是这样,但用户可以通过keytool命令存储用于身份验证、加密和解密目的的密码和秘密密钥。所以,如果您感到好奇,可以尝试在您的系统上使用它。

如果您对加密密钥的概念还不熟悉,您可能希望在尝试keytool命令之前先阅读我们的文章data encryption

此外,查看OpenSSL command examples还可以让您对它们的区别和您可以用它们做什么有一些想法。

创建自签名证书

keytool -genkeypair -alias  -keypass  -validity  -storepass 

与您购买的证书不同,自签名证书仅用于开发/测试目的以使用安全连接。

您可以使用上述keytool命令语法生成一个。例如,下面是一个示例:

keytool -genkeypair -alias yaoweibin -keypass passforkeystore -validity 365 -storepass passforkeystore

您可以为别名使用任何名称;我使用yaoweibin作为占位符文本。您可以自定义有效期,并在上述命令中替换“passforkeystore”以指定Keystore的密码。

请注意,对于PKCS12 KeyStores,仅支持一个密码。但是,它是一种方便的Keystore类型,不特定于Java。

如果您的Keystore和证书需要两个不同的密码,您可能需要明确告诉keytool命令使用另一个接口。

您可以在其链接_3>中了解更多信息。

一旦您继续创建,它将要求您提供其他的身份认证详细信息。下面是它应该是什么样子的:

您的名字是什么?
  [未知]:Ankush
您的组织单位名称是什么?
  [未知]:Geekflare
您的组织名称是什么?
  [未知]:Geekflare
您的城市或地区名称是什么?
  [未知]:Bhubaneswar
您的州或省份名称是什么?
  [未知]:Odisha
该单位的两位字母国家代码是什么?
  [未知]:91
CN=Ankush, OU=Geekflare, O=Geekflare, L=Bhubaneswar, ST=Odisha, C=91 正确吗?
  [no]:yes

创建Java Keystore和密钥对

keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias yaoweibinjava -validity 3650

生成Java Keystore并导入证书

确保您拥有有效的证书或之前已生成一个;完成后,您可以导入它并生成一个Java Keystore。

keytool -importcert -file test.crt -keystore truststore.jks -alias yaoweibin

生成带有主题的默认Keystore的密钥对

您可以使用以下命令快速生成一个密钥对(例如,名为“ca”):

keytool -alias ca -dname CN=CA -genkeypair

创建一系列已签名的证书

假设您已经创建了ca和ca1的密钥对,您可以使用以下命令创建一个由ca签署ca1的签名证书链:

keytool -alias ca1 -certreq
keytool -alias ca -gencert -ext san=dns:ca1
keytool -alias ca1 -importcert

您可以使用另外两对密钥ca1和ca2来完成该链,其中ca1将签署ca2。

导入证书

如果您想从一个可用文件中导入证书,可以执行以下操作:

keystool -import -alias yaoweibin -file yaoweibinserver.cer

为现有密钥库创建证书签名请求(CSR)

假设您已经创建了一个密钥库,您可以生成一个CSR。

keytool -certreq -keyalg rsa -keystore keystore.jks -alias server -file yaoweibin.csr

列出存储在Java密钥库中的证书

一个密钥库可以有多个证书条目。假设我们要检查“keystore.jks”数据库中的证书列表,我们需要输入以下内容:

keytool -v -list -keystore keystore.jks

这个命令的输出如下所示:

keytool -v -list -keystore keystore.jks
输入密钥库口令:
密钥库类型: PKCS12
密钥库提供方: SUN

您的密钥库包含 2 个条目

别名: yaoweibincert
创建日期: 16-Nov-2022
条目类型: PrivateKeyEntry
证书链长度: 1
证书[1]:
所有者: CN=Ankush, OU=Geek, O=Geekflare, L=Bhubaneswar, ST=od, C=91
发布者: CN=Ankush, OU=Geek, O=Geekflare, L=Bhubaneswar, ST=od, C=91
序列号: a0b9a99
有效期始于: Wed Nov 16 09:42:37 IST 2022, 终止于: Sat Nov 13 09:42:37 IST 2032
证书指纹:
	 SHA1: 23:7C:65:A7:A6:84:18:F8:45:04:92:DF:D4:BB:0F:91:6D:A5:C5:BE
	 SHA256: C0:25:ED:B8:CF:1A:E6:E1:C5:75:A8:10:8F:CD:BE:42:26:96:9C:9A:FA:74:65:07:71:06:9A:2C:F5:80:FE:7F
签名算法名称: SHA256withRSA
主题公钥算法: 2048 位 RSA 密钥
版本: 3

检查单个证书的内容

假设您已经生成了一个证书,您可以使用以下命令来查看更多信息:

keytool -v -printcert -file server.crt

查看Java密钥库中的证书

您可以列出密钥库数据库中的所有证书。命令如下:

keytool -v -list -keystore keystore.jks

使用别名和密钥库查看密钥库

如果您想要使用创建密钥库时设置的别名名称来检查密钥库,输入以下内容:

keytool -v -list -keystore keystore.jks -alias yaoweibinserver

列出密钥库中的证书

如果您想要检查默认密钥库中存储的证书,使用以下命令:

keytool -list -storepass passforkeystore

您需要将“passforkeystore”替换为您设置的密码。

查看证书信息

如果您需要检查单个证书的详细信息,可以使用其别名而不指定密钥库数据库。

命令如下:

keytool -list -v -alias yaoweibin -storepass passforkeystore

以PEM格式查看证书

PEM是证书和加密密钥的最常用格式之一。如果您想要检查PEM格式的证书,输入以下内容:

keytool -v -printcert -file yaoweibin.crt -rfc

更改Java密钥库密码

如果您已经为Java密钥库创建了密码,可以使用以下命令更改密码:

keytool -delete -alias yaoweibin -keystore keystore.jks

从Java密钥库中删除证书

您可以指定Java密钥库及其别名进行删除。例如:

keytool -delete -alias yaoweibin -keystore keystore.jks

探索命令并获取帮助

该命令有几个参数和扩展功能可以完成许多任务。根据您的用例,您可能需要使用其中的全部或部分。

因此,如果您想深入了解命令选项,您可以随时键入:

keytool -help

无论如何,如果您使用的是Linux终端,我建议使用以下命令阅读man(手册)页:

man keytool

使用man命令,您可以获得有关keytool命令的所有所需详细信息。

因此,保持它是您学习有关它的所有内容的超能力!

总结

文件路径和其他自定义选项可能与您使用的平台有所不同。您还可以参考Oracle的文档以获取标准化选项。

Keytool是一个非常好的工具,可以完成各种任务。试试看,看看您能做些什么!

您还可以探索一些Linux commands来维护和保持系统的最佳运行状态。

类似文章