安装适用于 AWS CloudHSM Client SDK 3 的 JCE 提供程序
使用 JCE 提供程序之前,您需要 AWS CloudHSM 客户端。
此客户端是一个守护程序,它建立与群集中的 HSM 的端到端加密通信。JCE 提供程序在本地与客户端通信。如果您尚未安装和配置 AWS CloudHSM 客户端程序包,请立即执行安装客户端 (Linux) 中的步骤。在您安装和配置客户端之后,可以使用以下命令来启动客户端。
请注意 JCE 提供程序仅在 Linux 和兼容的操作系统中受支持。
使用以下部分来安装、验证提供程序并向提供程序提供凭证。
步骤 1:安装 JCE 提供程序
使用以下命令下载和安装 JCE 提供程序。此提供程序仅在 Linux 和兼容的操作系统上受支持。
注意
有关升级,请参阅升级 Client SDK 3。
运行上述命令后,可以找到以下 JCE 提供程序文件:
-
/opt/cloudhsm/java/cloudhsm-
version
.jar -
/opt/cloudhsm/java/cloudhsm-test-
version
.jar -
/opt/cloudhsm/java/hamcrest-all-1.3.jar
-
/opt/cloudhsm/java/junit.jar
-
/opt/cloudhsm/java/log4j-api-2.17.1.jar
-
/opt/cloudhsm/java/log4j-core-2.17.1.jar
-
/opt/cloudhsm/lib/libcaviumjca.so
步骤 2:验证安装
在 HSM 上执行基本操作来验证安装。
验证 JCE 提供程序的安装
-
(可选)如果您尚未在您的环境中安装 Java,可使用以下命令安装它。
-
使用以下命令可设置必要的环境变量。将
<HSM user name>
和<password>
替换为加密用户 (CU) 的凭证。$
export LD_LIBRARY_PATH=/opt/cloudhsm/lib
$
export HSM_PARTITION=PARTITION_1
$
export HSM_USER=
<HSM user name>
$
export HSM_PASSWORD=
<password>
-
使用以下命令可运行基本功能测试。如果成功,命令的输出应该与下面的输出类似。
$
java8 -classpath "/opt/cloudhsm/java/*" org.junit.runner.JUnitCore TestBasicFunctionality
JUnit version 4.11 .2018-08-20 17:53:48,514 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:33) - Adding provider. 2018-08-20 17:53:48,612 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:42) - Logging in. 2018-08-20 17:53:48,612 INFO [main] cfm2.LoginManager (LoginManager.java:104) - Looking for credentials in HsmCredentials.properties 2018-08-20 17:53:48,612 INFO [main] cfm2.LoginManager (LoginManager.java:122) - Looking for credentials in System.properties 2018-08-20 17:53:48,613 INFO [main] cfm2.LoginManager (LoginManager.java:130) - Looking for credentials in System.env SDK Version: 2.03 2018-08-20 17:53:48,655 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:54) - Generating AES Key with key size 256. 2018-08-20 17:53:48,698 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:63) - Encrypting with AES Key. 2018-08-20 17:53:48,705 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:84) - Deleting AES Key. 2018-08-20 17:53:48,707 DEBUG [main] TestBasicFunctionality (TestBasicFunctionality.java:92) - Logging out. Time: 0.205 OK (1 test)
步骤 3:向 JCE 提供程序提供凭证
HSM 需要先验证 Java 应用程序,之后该应用程序才能使用 HSM。每个应用程序均可使用一个会话。HSM 使用显式登录或隐式登录方法来验证会话。
显式登录:此方法可让您直接在应用程序中提供 CloudHSM 凭证。它使用 LoginManager.login()
方法,在其中传递 CU 用户名、密码和 HSM 分区 ID。有关使用显式登录方法的更多信息,请参阅登录到 HSM
隐式登录:此方法可让您在新属性文件或系统属性中设置 CloudHSM 凭证,或将此类凭证设置为环境变量。
-
新属性文件:创建一个名为
HsmCredentials.properties
的新文件,然后将该文件添加到应用程序的CLASSPATH
。该文件应包含以下内容:HSM_PARTITION = PARTITION_1 HSM_USER =
<HSM user name>
HSM_PASSWORD =<password>
-
系统属性:在运行应用程序时通过系统属性设置凭证。以下示例演示了可执行此操作的两种不同方式:
$
java -DHSM_PARTITION=PARTITION_1 -DHSM_USER=
<HSM user name>
-DHSM_PASSWORD=<password>
System.setProperty("HSM_PARTITION","PARTITION_1"); System.setProperty("HSM_USER","
<HSM user name>
"); System.setProperty("HSM_PASSWORD","<password>
"); -
环境变量:将凭证设置为环境变量。
$
export HSM_PARTITION=PARTITION_1
$
export HSM_USER=
<HSM user name>
$
export HSM_PASSWORD=
<password>
如果应用程序未提供凭证,或者在 HSM 验证会话前尝试执行操作,则凭证可能不可用。在这些情况下,适用于 Java 的 CloudHSM 软件库按以下顺序搜索凭证:
-
HsmCredentials.properties
-
系统属性
-
环境变量
错误处理
通过显式登录方法处理错误比通过隐式登录方法处理错误更轻松。在使用 LoginManager
类时,您可以更好地控制应用程序处理失败情况的方式。当凭证无效或 HSM 在验证会话时遇到问题时,隐式登录方法使得难以理解错误处理。