本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
步骤 2:生成或导入私有密钥和 SSL/TLS 证书
要启用 HTTPS,您的 Tomcat Web 服务器应用程需要私有密钥和相应的 SSL/TLS 证书。要将 Web 服务器 SSL/TLS 卸载与一起使用 AWS CloudHSM,必须将私钥存储在集群的 HSM 中。 AWS CloudHSM
注意
如果您没有私有密钥及相应的证书,则可以在 HSM 中生成私有密钥。使用私有密钥创建证书签名请求(CSR),并用它来创建 SSL/TLS 证书。
您可以创建一个本地 AWS CloudHSM KeyStore 文件,其中包含对您在 HSM 上的私钥的引用和关联的证书。在 SSL/TLS 卸载期间,您的 Web 服务器使用该 AWS CloudHSM KeyStore 文件来识别 HSM 上的私钥。
生成私有密钥
本节介绍如何使用来 KeyTool 自 JDK 的生成密钥对。在 HSM 中生成密钥对后,可以将其导出为 KeyStore 文件,然后生成相应的证书。
根据您的使用案例,您可以生成 RSA 或 EC 密钥对。以下步骤将显示如何生成 RSA 密钥对。
使用中的genkeypair
KeyTool 命令生成 RSA key pair
用您的特定数据替换
<VARIABLES>
以下内容后,使用以下命令生成名为jsse_keystore.keystore
的密钥库文件,该文件将引用您在 HSM 上的私有密钥。$
keytool -genkeypair -alias
<UNIQUE ALIAS FOR KEYS>
-keyalg<KEY ALGORITHM>
-keysize<KEY SIZE>
-sigalg<SIGN ALGORITHM>
\ -keystore<PATH>
/<JSSE KEYSTORE NAME>
.keystore -storetype CLOUDHSM \ -dname CERT_DOMAIN_NAME \ -J-classpath '-J'$JAVA_LIB'/*:/opt/cloudhsm/java/*:./*' \ -provider "com.amazonaws.cloudhsm.jce.provider.CloudHsmProvider" \ -providerpath "$CLOUDHSM_JCE_LOCATION" \ -keypass<KEY PASSWORD>
-storepass<KEYSTORE PASSWORD>
<PATH>
:待生成密钥库文件的路径。<UNIQUE ALIAS FOR KEYS>
:这是您在 HSM 上的密钥的唯一标识。此别名将被设置为密钥的 LABEL 属性。<KEY PASSWORD>
:我们将对您的密钥的引用存储在本地密钥库文件中,此密码可以保护该本地引用。<KEYSTORE PASSWORD>
:这是您的本地密钥库文件的密码。<JSSE KEYSTORE NAME>
:密钥库文件的名称。<CERT DOMAIN NAME>
:X.500 可分辨名称。<KEY ALGORITHM>
:生成密钥对的密钥算法(例如,RSA 和 EC)。<KEY SIZE>
:生成密钥对的密钥大小(例如,2048、3072 和 4096)。<SIGN ALGORITHM>
:生成密钥对的密钥大小(例如 SHA1withRSA、SHA224withRSA、SHA256withRSA、SHA384withRSA 和 SHA512withRSA)。
-
要确认命令是否成功,请输入以下命令并验证您是否成功生成了 RSA 密钥对。
$
ls
<PATH>
/<JSSE KEYSTORE NAME>
.keystore
生成自签名证书
生成私有密钥和密钥库文件后,即可使用此文件生成证书签名请求(CSR)和证书。
在生产环境中,您通常使用证书颁发机构 (CA) 通过 CSR 创建证书。测试环境无需 CA。如果您使用 CA,则请将 CSR 文件发送给他们,然后使用他们在您的适用于 HTTPS的 Web 服务器中为您提供的签名 SSL/TLS 证书。
除了使用 CA 之外,您还可以使用创建自签名证书。 KeyTool 自签名证书不受浏览器的信任,不应在生产环境中使用。它们可在测试环境中使用。
警告
自签名证书只应在测试环境中使用。对于生产环境,请使用更安全的方法 (如证书颁发机构) 来创建证书。
主题
生成证书
-
获取前面步骤中生成的密钥库文件的副本。
-
运行以下命令以使用创建证书签名请求 (CSR)。 KeyTool
$
keytool -certreq -keyalg RSA -alias unique_alias_for_key -file certreq.csr \ -keystore
<JSSE KEYSTORE NAME>
.keystore -storetype CLOUDHSM \ -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass<KEY PASSWORD>
-storepass<KEYSTORE PASSWORD>
注意
证书签名请求的输出文件是
certreq.csr
。
签署证书
-
用您的特定数据替换
<VARIABLES>
以下内容后,运行以下命令在 HSM 上使用私有密钥签署您的 CSR。这会创建自签名证书。$
keytool -gencert -infile certreq.csr -outfile certificate.crt \ -alias
<UNIQUE ALIAS FOR KEYS>
-keypass<KEY_PASSWORD>
-storepass<KEYSTORE_PASSWORD>
-sigalg SIG_ALG \ -storetype CLOUDHSM -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keystore jsse_keystore.keystore注意
certificate.crt
是使用别名私有密钥的已签名证书。
在密钥库中导入证书
用您的特定数据替换
<VARIABLES>
以下内容后,运行以下命令将签名证书作为可信证书导入。此步骤会将证书存储在由别名标识的密钥库条目中。$
keytool -import -alias
<UNIQUE ALIAS FOR KEYS>
-keystore jsse_keystore.keystore \ -file certificate.crt -storetype CLOUDHSM \ -v -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass<KEY PASSWORD>
-storepass<KEYSTORE_PASSWORD>
将证书转换为 PEM
运行以下命令将签名证书文件(.crt)转换为 PEM。PEM 文件将用于发送来自于 http 客户端的请求。
$
openssl x509 -inform der -in certificate.crt -out certificate.pem
完成这些步骤后,转至步骤 3:配置 Web 服务器。