

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用客户端 SDK 3 将 AWS CloudHSM 密钥存储与 Jarsigner 配合使用
<a name="using_keystore_jarsigner"></a>

Jarsigner 是一个流行的命令行实用程序，用于使用安全存储在硬件安全模块（HSM）上的密钥签署 JAR 文件。有关 Jarsigner 的完整教程超出了本文档的 AWS CloudHSM 范围。本节介绍了 Jarsigner 参数，您应该使用这些参数通过 AWS CloudHSM 密钥存储区 AWS CloudHSM 作为信任根进行签名和验证签名。

# 使用 Jarsigner 设置 AWS CloudHSM 密钥和证书
<a name="jarsigner_set_up_certificates"></a>

在使用 AWS CloudHSM Jarsigner 签署 JAR 文件之前，请确保您已经设置或完成了以下步骤：

1. 按照 [AWS CloudHSM 密钥库先决条件](keystore-prerequisites.md)中的指导操作。

1. 设置您的签名密钥以及相关的证书和证书链，这些证书和证书链应存储在当前服务器或客户端实例的 AWS CloudHSM 密钥存储中。在上创建密钥， AWS CloudHSM 然后将关联的元数据导入您的 AWS CloudHSM 密钥存储区。使用向密钥[库注册预先存在的 AWS CloudHSM 密钥](register-pre-existing-keys-with-keystore.md)中的代码示例将元数据导入密钥库。如果要使用 keytool 设置密钥和证书，请参阅 [使用 keytool 创建新 AWS CloudHSM 密钥](create_key_keytool.md)。如果您使用多个客户端实例来签名 JARs，请创建密钥并导入证书链。然后将生成的密钥库文件复制到每个客户端实例。如果您经常生成新密钥，您可能会发现将证书单独导入到每个客户端实例更容易。

1. 整个证书链应该是可验证的。要使证书链可验证，您可能需要将 CA 证书和中间证书添加到 AWS CloudHSM 密钥库中。有关使用 Java 代码验证证书链的说明[，请参阅使用对 Jarsigner 文件进行签名中的代码片段， AWS CloudHSM 以及](jarsigner_sign_jar_using_hsm_jarsigner.md) Jarsigner。如果您愿意，可以使用 keytool 导入证书。有关使用 keytool 的说明，请参阅[使用 Keytool 将中间证书和根证书导入 AWS CloudHSM 密钥](import_cert_using_keytool.md)库。

# 使用 AWS CloudHSM 和 Jarsigner 对 Jarsigner 文件进行签名
<a name="jarsigner_sign_jar_using_hsm_jarsigner"></a>

使用以下命令使用和 jarsigner 对 JAR 文件 AWS CloudHSM 进行签名：

```
jarsigner -keystore example_keystore.store \
        -signedjar signthisclass_signed.jar \
        -sigalg sha512withrsa \
        -storetype CloudHSM \
        -J-classpath '-J/opt/cloudhsm/java/*:/usr/lib/jvm/java-1.8.0/lib/tools.jar' \
        -J-Djava.library.path=/opt/cloudhsm/lib \
        signthisclass.jar <key pair label>
```

使用以下命令验证已签名的 JAR：

```
jarsigner -verify \
        -keystore example_keystore.store \
        -sigalg sha512withrsa \
        -storetype CloudHSM \
        -J-classpath '-J/opt/cloudhsm/java/*:/usr/lib/jvm/java-1.8.0/lib/tools.jar' \
        -J-Djava.library.path=/opt/cloudhsm/lib \
        signthisclass_signed.jar <key pair label>
```