

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用用戶端 SDK 5 搭配 Jarsigner 使用 AWS CloudHSM 金鑰存放區
<a name="using_keystore_jarsigner_5"></a>

Jarsigner 是常用的命令列公用程式，用於使用安全地存放在硬體安全模組 (HSM) 上的金鑰簽署 JAR 檔案。Jarsigner 的完整教學課程超出 AWS CloudHSM 文件的範圍。本節說明您應該用來簽署和驗證簽章的 Jarsigner 參數，搭配 AWS CloudHSM 做為透過 AWS CloudHSM 金鑰存放區的信任根。

# 使用 Jarsigner 設定 AWS CloudHSM 金鑰和憑證
<a name="jarsigner_set_up_certificates_5"></a>

在使用 Jarsigner 簽署 AWS CloudHSM JAR 檔案之前，請確定您已設定或完成下列步驟：

1. 遵循 [AWS CloudHSM 金鑰存放區必要條件](keystore-prerequisites_5.md)中的指引。

1. 設定您的簽署金鑰以及關聯的憑證和憑證鏈，這些憑證和憑證鏈應存放在目前伺服器或用戶端執行個體的 AWS CloudHSM 金鑰存放區中。在 上建立金鑰， AWS CloudHSM 然後將相關聯的中繼資料匯入至您的 AWS CloudHSM 金鑰存放區。如果您要使用 Keytool 設定金鑰和憑證，請參閱 [使用 keytool 建立新的 AWS CloudHSM 金鑰](create_key_keytool_5.md)。如果您使用多個用戶端執行個體來簽署 JAR，請建立金鑰並匯入憑證鏈。然後將生成的金鑰存放區文件複製到每個用戶端執行個體。如果您經常產生新的金鑰，您可能會發現將憑證個別匯入至每個用戶端執行個體更容易。

1. 整個憑證鏈必須是可驗證的。若要驗證憑證鏈，您可能需要將 CA 憑證和中繼憑證新增至 AWS CloudHSM 金鑰存放區。有關使用 Java 程式碼驗證憑證鏈的說明，請參閱 [使用 AWS CloudHSM 和 Jarsigner 簽署 JAR 檔案](jarsigner_sign_jar_using_hsm_jarsigner_5.md) 中的程式碼片段。如果需要，您也可以使用 Keytool 匯入憑證。如需使用 Keytool 的說明，請參閱 [使用 keytool 將中繼憑證和根憑證匯入 AWS CloudHSM 金鑰存放區](import_cert_using_keytool_5.md)。

# 使用 AWS CloudHSM 和 Jarsigner 簽署 JAR 檔案
<a name="jarsigner_sign_jar_using_hsm_jarsigner_5"></a>

使用以下命令，使用 AWS CloudHSM 和 Jarsigner 簽署 JAR 檔案：

------
#### [ Linux; ]

對於 OpenJDK 8

```
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>
```

對於 OpenJDK 11、OpenJDK 17 和 OpenJDK 21

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

------
#### [ Windows ]

對於 OpenJDK8

```
jarsigner -keystore example_keystore.store `
	-signedjar signthisclass_signed.jar `
	-sigalg sha512withrsa `
	-storetype CloudHSM `
	-J-classpath '-JC:\Program Files\Amazon\CloudHSM\java\*;C:\Program Files\Java\jdk1.8.0_331\lib\tools.jar' `
	 "-J-Djava.library.path='C:\Program Files\Amazon\CloudHSM\lib\'" `
	signthisclass.jar <key pair label>
```

對於 OpenJDK 11、OpenJDK 17 和 OpenJDK 21

```
jarsigner -keystore example_keystore.store `
	-signedjar signthisclass_signed.jar `
	-sigalg sha512withrsa `
	-storetype CloudHSM `
	-J-classpath '-JC:\Program Files\Amazon\CloudHSM\java\*'`
	 "-J-Djava.library.path='C:\Program Files\Amazon\CloudHSM\lib\'" `
	signthisclass.jar <key pair label>
```

------

使用以下命令來驗證已簽署的 JAR：

------
#### [ Linux ]

對於 OpenJDK8

```
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>
```

對於 OpenJDK 11、OpenJDK 17 和 OpenJDK 21

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

------
#### [ Windows ]

對於 OpenJDK 8

```
jarsigner -verify `
	-keystore example_keystore.store `
	-sigalg sha512withrsa `
	-storetype CloudHSM `
	-J-classpath '-JC:\Program Files\Amazon\CloudHSM\java\*;C:\Program Files\Java\jdk1.8.0_331\lib\tools.jar' `
	"-J-Djava.library.path='C:\Program Files\Amazon\CloudHSM\lib\'" `
	signthisclass_signed.jar <key pair label>
```

對於 OpenJDK 11、OpenJDK 17 和 OpenJDK 21

```
jarsigner -verify `
	-keystore example_keystore.store `
	-sigalg sha512withrsa `
	-storetype CloudHSM `
	-J-classpath '-JC:\Program Files\Amazon\CloudHSM\java\*`
	"-J-Djava.library.path='C:\Program Files\Amazon\CloudHSM\lib\'" `
	signthisclass_signed.jar <key pair label>
```

------