Java Keytool Essentials:使用 Java Keystores

介绍

Java Keytool 是一个用于操纵 Java Keystores 的密钥和证书管理工具,并与 Java 一起提供。Java Keystore 是授权证书或公共密钥证书的容器,通常由基于 Java 的应用程序用于加密、身份验证和通过 HTTPS 服务。它的条目由密码密码保护。 密钥条目被一个 alias 标识,并且由构成信任链的密钥和证书组成。

这个 cheat sheet 风格的指南提供了一个快速的参考keytool命令,这些命令在使用 Java Keystores 时通常是有用的,包括创建和修改 Java Keystores,以便它们可以与您的 Java 应用程序一起使用。

** 如何使用此指南:**

创建和导入 Keystore 条目

本节涵盖了与生成密钥对和证书以及导入证书相关的Java Keytool命令。

在新/现有 Keystore 中生成密钥

如果您想使用 HTTP (HTTP over TLS) 来保护您的 Java 应用程序,则使用此方法在新的或现有的 Java Keystore 中创建一个新密钥对,可用于创建 CSR,并从证书管理机构获得 SSL 证书。

此命令会生成一个 2048 位 RSA 密钥对,在指定的键盘文件( keystore.jks)中使用指定的代码(domain):

1keytool -genkeypair \
2        -alias domain \
3        -keyalg RSA \
4        -keystore keystore.jks

如果指定的键盘已经不存在,它将在提供所要求的信息后创建,这将提示键盘密码(新或现有),随后有一个区别名提示(对于私钥),然后是所需的私钥密码。

生成现有私钥的CSR

如果您想要生成 CSR,可以将其发送给 CA 以要求 CA 签名的 SSL 证书。

此命令会创建一个 CSR (domain.csr) 通过键盘(keystore.jks)中的名称(domain)识别的私钥签名:

1keytool -certreq \
2        -alias domain \
3        -file domain.csr \
4        -keystore keystore.jks

在输入键盘的密码后,CSR将被生成。

进口签名/根/中间证书

如果您想将签名的证书,例如由 CA 签名的证书,导入您的键盘,则使用此方法;它必须匹配指定的代码中存在的私钥;您也可以使用相同的命令导入 rootintermediate 证书,您的 CA 可能需要完成一个信任链条。

此命令将证书(domain.crt)导入到键盘(keystore.jks)中,并在指定的名称(domain)下导入。

1keytool -importcert \
2        -trustcacerts -file domain.crt \
3        -alias domain \
4        -keystore keystore.jks

您将被要求键盘密码,然后确认导入操作。

** 注意:** 您也可以使用该命令将 CA 证书导入您的 Java 信托商店,该商店通常位于$JAVA_HOME/jre/lib/security/cacerts,假设$JAVA_HOME是您安装的 JRE 或 JDK 的位置。

在新/现有钥匙商店生成自签证书

如果您想为您的 Java 应用程序生成自签名的证书,则使用此命令,实际上是用来创建新密钥对的相同命令,但有效期为日期。

此命令会生成一个 2048 位 RSA 密钥对,有效期为 365 天,在指定的密码文件( keystore.jks)中使用指定的名称(‘domain’):

1keytool -genkey \
2        -alias domain \
3        -keyalg RSA \
4        -validity 365 \
5        -keystore keystore.jks

如果指定的键盘已经不存在,它将在提供所要求的信息后创建,这将提示键盘密码(新或现有),随后有一个区别名提示(对于私钥),然后是所需的私钥密码。

查看关键字入口

本节涵盖列出 Java Keystore 的内容,例如查看证书信息或导出证书。

关键字 证书 指纹

此命令列出了 keystore.jks 中的所有证书的 SHA 指纹,分别为:

1keytool -list \
2        -keystore keystore.jks

您还可以通过使用 -alias 域 选项来限制输出到特定的代码,其中是代码名称。

关键字 关键字 内容

此命令列出了有关键盘(‘keystore.jks’)包含的条目的详细信息,包括证书链长度、链中的证书的指纹、知名名称、序列号和创建/终止日期,分别为以下字体:

1keytool -list -v \
2        -keystore keystore.jks

您还可以通过使用 -alias 域 选项来限制输出到特定的代码,其中是代码名称。

** 注意:** 您也可以使用此命令查看 Java 信托商店中的哪些证书,通常位于$JAVA_HOME/jre/lib/security/cacerts,假设$JAVA_HOME是您安装的 JRE 或 JDK 的位置。

使用 Keytool 查看证书信息

此命令打印了有关证书文件(‘certificate.crt’)的信息,包括其指纹、所有者和发行人的知名名称以及其有效期:

1keytool -printcert \
2        -file domain.crt

您将被要求使用 keystore 密码。

出口证书

此命令将一个二进制 DER 编码的证书(‘domain.der’)导出到键盘(‘keystore.jks’)中,该证书与代号(‘domain’)相关联:

1keytool -exportcert
2        -alias domain
3        -file domain.der
4        -keystore keystore.jks

如果您想将 DER 加密证书转换为 PEM 加密,请遵循我们的 OpenSSL 骗局表

关键字变更

本节涵盖了修改 Java Keystore 条目,例如删除或更名副名。

更改密码密码

此命令用于更改键盘的密码(keystore.jks):

1keytool -storepasswd \
2        -keystore keystore.jks

您还可以使用-newpass选项在命令中指定新密码,其中newpass是密码。

删除 Alias

此命令用于删除键盘(‘keystore.jks’)中的名称(‘域’):

1keytool -delete \
2        -alias domain \
3        -keystore keystore.jks

您将被要求使用 keystore 密码。

改名 阿拉斯

此命令将代号(‘域’)重命名为键盘(‘keystore.jks’)中的目的地代号(‘newdomain’):

1keytool -changealias \
2        -alias domain \
3        -destalias newdomain \
4        -keystore keystore.jks

您将被要求使用 keystore 密码。

结论

这应该涵盖大多数人如何使用Java Keytool来操纵他们的Java Keystores。它有许多其他用途,这些用途在这里没有被涵盖,所以请在评论中询问或建议其他用途。

本教程是基于与 Java 1.7.0 更新 65 搭载的键盘的版本。

Published At
Categories with 技术
Tagged with
comments powered by Disqus