zhcn 技术 手机 每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

Keytool 是一个命令行实用程序,允许您管理和存储加密密钥和证书。

如果您的系统上安装了 Java,则可以使用 keytool 命令导入 CA 证书、列出证书、创建自签名证书、保存密码和公钥/私钥等等,您可以执行各种操作。

使困惑?不用担心。当你阅读时我会解释清楚。

请注意,我将使用 Linux 来测试命令并通过示例对其进行更多解释。

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

Keytool 命令是什么?

这是一个密钥和证书管理实用程序。您可以存储通常用于验证/验证对服务的访问的私钥和公钥对。

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

在大多数情况下,这是正确的,但用户可以调整 keytool 命令来存储密码和私钥,以用于身份验证、加密和解密目的。因此,如果您有兴趣,请在您自己的系统上尝试一下。

如果您不熟悉加密密钥的概念,请在尝试 keytool 命令之前参阅有关数据加密的文章。

此外,您还可以查看 OpenSSL 命令的示例,以了解它们的不同之处以及可以使用它们做什么。

每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

创建自签名证书

keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>

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

它可以使用上述 keytool 命令语法生成。例如:

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

您可以使用任何名称作为别名。 作为占位符文本。您可以通过替换上述命令中的“ passforkeystore ”来自定义有效性并指定密钥库密码。

请注意,PKCS12 密钥库仅支持一个密码。然而,这是一种有用的密钥库类型,并非特定于 Java。

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

更多信息请参考官方文档

如果您继续创建,系统会要求您提供其他详细信息以验证真实性。它看起来像这样:

 What is your first and last name?
  [Unknown]:  Ankush
What is the name of your organizational unit?
  [Unknown]:  
What is the name of your organization?
  [Unknown]:  
What is the name of your City or Locality?
  [Unknown]:  Bhubaneswar
What is the name of your State or Province?
  [Unknown]:  Odisha
What is the two-letter country code for this unit?
  [Unknown]:  91
Is CN=Ankush, OU=, O=, L=Bhubaneswar, ST=Odisha, C=91 correct?
  [no]:  yes 
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

创建 Java 密钥库和密钥对

keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias java -validity 3650 
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

生成 Java 密钥库并导入证书

确保您拥有有效的证书或之前已生成证书。完成后,您可以导入它以生成 Java 密钥库。

 keytool -importcert -file test.crt -keystore truststore.jks -alias 
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

使用主题生成默认密钥库的密钥对

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

 keytool -alias ca -dname CN=CA -genkeypair 
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

创建签名证书链

假设您创建了密钥对 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  -file server.cer

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

考虑到您已经创建了密钥库,您可以生成 CSR。

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

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

密钥库可以包含多个证书条目。假设您正在检查“ keystore.jks ”数据库中的证书列表,您应该输入:

 keytool -v -list -keystore keystore.jks

这种情况下的输出将是:

 keytool -v -list -keystore keystore.jks
Enter keystore password:  
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 2 entries

Alias name: cert
Creation date: 16-Nov-2022
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Ankush, OU=Geek, O=, L=Bhubaneswar, ST=od, C=91
Issuer: CN=Ankush, OU=Geek, O=, L=Bhubaneswar, ST=od, C=91
Serial number: a0b9a99
Valid from: Wed Nov 16 09:42:37 IST 2022 until: Sat Nov 13 09:42:37 IST 2032
Certificate fingerprints:
	 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
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

检查单个证书的内容

考虑到您已经拥有生成的证书,您可以使用以下命令检查证书详细信息:

 keytool -v -printcert -file server.crt

查看 Java 密钥库证书

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

 keytool -v -list -keystore keystore.jks

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

如果要使用创建密钥库时设置的别名来验证密钥库,请键入:

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

列出密钥库中的证书

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

 keytool -list -storepass passforkeystore

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

查看证书信息

如果需要查看单个证书的详细信息,可以使用其别名,而无需指定 keystone 数据库。

情况如下。

 keytool -list -v -alias  -storepass passforkeystore

查看 PEM 格式的证书

PEM 是最常见的证书和加密密钥格式之一。如果您想检查 PEM 中的证书,请键入:

 keytool -v -printcert -file .crt -rfc

更改 Java 密钥库密码

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

 keytool -delete -alias  -keystore keystore.jks

从 Java 密钥库中删除证书

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

 keytool -delete -alias  -keystore keystore.jks

探索命令并获取帮助

该命令有多个参数和扩展来执行各种操作。根据您的用例,您可能需要也可能不需要使用所有这些。

因此,如果您想了解有关命令选项的更多信息,您可以随时键入:

 keytool -help

无论哪种情况,如果您使用的是 Linux 终端,我们建议您使用以下命令阅读手册页:

 man keytool

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

所以,让这个超能力成为你的,尽你所能地学习它。

概括

文件路径和其他自定义选项可能会略有不同,具体取决于您使用的平台。另请参阅 Oracle 文档以了解标准化选项。

Keytool 是一个适用于各种任务的出色工具。尝试一下,看看你能做什么!

您还可以探索一些 Linux 命令来保持系统最佳运行。

《系统管理员和开发者应该知道的17个Keytool命令示例》浅显易懂的讲解!您必须观看的最佳 2 个视频

Red Data Tools開発者に聞け!第21回 「RubyGemsとRDocの密結合を解消する」Part2
https://www.youtube.com/watch?v=2nDoVFvIobo&pp=ygVn44K344K544OG44Og566h55CG6ICF44GK44KI44Gz6ZaL55m66ICF44GM55-l44Gj44Gm44GK44GP44G544GNIDE3IOOBriBLZXl0b29sIOOCs- OD nuODs-ODieOBRUS-iyZobD1KQQ%3D%3D
Red Data Tools開発者に聞け!第20回 「RubyGemsとRDocの密結合を解消する」Part1
https://www.youtube.com/watch?v=Mr4ihlcbC6c&pp=ygVn44K344K544OG44Og566h55CG6ICF44GK44KI44Gz6ZaL55m66ICF44GM55-l44Gj44Gm44GK44GP44G544GNIDE3IOOBriBLZXl0b29sIOOCs -OD nuODs-ODieOBbruS-iyZobD1KQQ%3D%3D

Keytool 是一个命令行实用程序,允许您管理和存储加密密钥和证书。

如果您的系统上安装了 Java,则可以使用 keytool 命令导入 CA 证书、列出证书、创建自签名证书、保存密码和公钥/私钥等等,您可以执行各种操作。

使困惑?不用担心。当你阅读时我会解释清楚。

请注意,我将使用 Linux 来测试命令并通过示例对其进行更多解释。

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

Keytool 命令是什么?

这是一个密钥和证书管理实用程序。您可以存储通常用于验证/验证对服务的访问的私钥和公钥对。

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

在大多数情况下,这是正确的,但用户可以调整 keytool 命令来存储密码和私钥,以用于身份验证、加密和解密目的。因此,如果您有兴趣,请在您自己的系统上尝试一下。

如果您不熟悉加密密钥的概念,请在尝试 keytool 命令之前参阅有关数据加密的文章。

此外,您还可以查看 OpenSSL 命令的示例,以了解它们的不同之处以及可以使用它们做什么。

每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

创建自签名证书

keytool -genkeypair -alias <alias> -keypass <keypass> -validity <validity> -storepass <storepass>

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

它可以使用上述 keytool 命令语法生成。例如:

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

您可以使用任何名称作为别名。 作为占位符文本。您可以通过替换上述命令中的“ passforkeystore ”来自定义有效性并指定密钥库密码。

请注意,PKCS12 密钥库仅支持一个密码。然而,这是一种有用的密钥库类型,并非特定于 Java。

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

更多信息请参考官方文档

如果您继续创建,系统会要求您提供其他详细信息以验证真实性。它看起来像这样:

 What is your first and last name?
  [Unknown]:  Ankush
What is the name of your organizational unit?
  [Unknown]:  
What is the name of your organization?
  [Unknown]:  
What is the name of your City or Locality?
  [Unknown]:  Bhubaneswar
What is the name of your State or Province?
  [Unknown]:  Odisha
What is the two-letter country code for this unit?
  [Unknown]:  91
Is CN=Ankush, OU=, O=, L=Bhubaneswar, ST=Odisha, C=91 correct?
  [no]:  yes 
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

创建 Java 密钥库和密钥对

keytool -genkeypair -keyalg RSA -keysize 2048 -keystore keystore.jks -alias java -validity 3650 
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

生成 Java 密钥库并导入证书

确保您拥有有效的证书或之前已生成证书。完成后,您可以导入它以生成 Java 密钥库。

 keytool -importcert -file test.crt -keystore truststore.jks -alias 
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

使用主题生成默认密钥库的密钥对

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

 keytool -alias ca -dname CN=CA -genkeypair 
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例
每个系统管理员和开发人员都应该知道的 17 个 Keytool 命令示例

创建签名证书链

假设您创建了密钥对 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  -file server.cer

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

考虑到您已经创建了密钥库,您可以生成 CSR。

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

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

密钥库可以包含多个证书条目。假设您正在检查“ keystore.jks ”数据库中的证书列表,您应该输入:

 keytool -v -list -keystore keystore.jks

这种情况下的输出将是:

 keytool -v -list -keystore keystore.jks
Enter keystore password:  
Keystore type: PKCS12
Keystore provider: SUN

Your keystore contains 2 entries

Alias name: cert
Creation date: 16-Nov-2022
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=Ankush, OU=Geek, O=, L=Bhubaneswar, ST=od, C=91
Issuer: CN=Ankush, OU=Geek, O=, L=Bhubaneswar, ST=od, C=91
Serial number: a0b9a99
Valid from: Wed Nov 16 09:42:37 IST 2022 until: Sat Nov 13 09:42:37 IST 2032
Certificate fingerprints:
	 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
Signature algorithm name: SHA256withRSA
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3

检查单个证书的内容

考虑到您已经拥有生成的证书,您可以使用以下命令检查证书详细信息:

 keytool -v -printcert -file server.crt

查看 Java 密钥库证书

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

 keytool -v -list -keystore keystore.jks

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

如果要使用创建密钥库时设置的别名来验证密钥库,请键入:

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

列出密钥库中的证书

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

 keytool -list -storepass passforkeystore

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

查看证书信息

如果需要查看单个证书的详细信息,可以使用其别名,而无需指定 keystone 数据库。

情况如下。

 keytool -list -v -alias  -storepass passforkeystore

查看 PEM 格式的证书

PEM 是最常见的证书和加密密钥格式之一。如果您想检查 PEM 中的证书,请键入:

 keytool -v -printcert -file .crt -rfc

更改 Java 密钥库密码

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

 keytool -delete -alias  -keystore keystore.jks

从 Java 密钥库中删除证书

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

 keytool -delete -alias  -keystore keystore.jks

探索命令并获取帮助

该命令有多个参数和扩展来执行各种操作。根据您的用例,您可能需要也可能不需要使用所有这些。

因此,如果您想了解有关命令选项的更多信息,您可以随时键入:

 keytool -help

无论哪种情况,如果您使用的是 Linux 终端,我们建议您使用以下命令阅读手册页:

 man keytool

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

所以,让这个超能力成为你的,尽你所能地学习它。

概括

文件路径和其他自定义选项可能会略有不同,具体取决于您使用的平台。另请参阅 Oracle 文档以了解标准化选项。

Keytool 是一个适用于各种任务的出色工具。尝试一下,看看你能做什么!

您还可以探索一些 Linux 命令来保持系统最佳运行。

《系统管理员和开发者应该知道的17个Keytool命令示例》浅显易懂的讲解!您必须观看的最佳 2 个视频

Red Data Tools開発者に聞け!第21回 「RubyGemsとRDocの密結合を解消する」Part2
https://www.youtube.com/watch?v=2nDoVFvIobo&pp=ygVn44K344K544OG44Og566h55CG6ICF44GK44KI44Gz6ZaL55m66ICF44GM55-l44Gj44Gm44GK44GP44G544GNIDE3IOOBriBLZXl0b29sIOOCs- OD nuODs-ODieOBRUS-iyZobD1KQQ%3D%3D
Red Data Tools開発者に聞け!第20回 「RubyGemsとRDocの密結合を解消する」Part1
https://www.youtube.com/watch?v=Mr4ihlcbC6c&pp=ygVn44K344K544OG44Og566h55CG6ICF44GK44KI44Gz6ZaL55m66ICF44GM55-l44Gj44Gm44GK44GP44G544GNIDE3IOOBriBLZXl0b29sIOOCs -OD nuODs-ODieOBbruS-iyZobD1KQQ%3D%3D