Instalar e usar o provedor JCE para o Client SDK 3 do AWS CloudHSM
É preciso ter o cliente do AWS CloudHSM antes de poder usar o provedor JCE.
O cliente é um daemon que estabelece comunicação criptografada ponta a ponta com os HSMs no cluster. O provedor JCE se comunica localmente com o cliente. Se você não tiver instalado e configurado o pacote de clienteAWS CloudHSM, faça isso agora, seguindo as etapas em Instalar o cliente (Linux). Após instalar e configurar o cliente, use o comando a seguir para iniciá-lo.
O provedor JCE é suportado somente em Linux e sistemas operacionais compatíveis.
Use as seções a seguir para instalar, validar e fornecer credenciais ao provedor.
Tópicos
Etapa 1: instalar o provedor JCE
Use so seguintes comandos para fazer download e instalar o provedor JCE. Este provedor só tem suporte no Linux e em sistemas operacionais compatíveis.
nota
Para atualizar, consulte Fazer upgrade do Client SDK 3.
Depois de executar os comandos anteriores, você pode encontrar os seguintes arquivos do provedor 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
Etapa 2: validar a instalação
Execute operações básicas no HSM para validar a instalação.
Para validar a instalação do provedor JCE
-
(Opcional) Se você ainda não tiver o Java instalado em seu ambiente, use o comando a seguir para instalá-lo.
-
Use os comandos a seguir para definir as variáveis de ambiente necessárias. Substitua
<nome do usuário do HSM>
e<senha>
pelas credenciais de um usuário de criptografia (CU).$
export LD_LIBRARY_PATH=/opt/cloudhsm/lib
$
export HSM_PARTITION=PARTITION_1
$
export HSM_USER=
<HSM user name>
$
export HSM_PASSWORD=
<password>
-
Use o comando a seguir para executar o teste de funcionalidade básica. Se bem-sucedido, a saída do comando deverá ser semelhante à saída a seguir.
$
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)
Etapa 3: fornecer credenciais ao provedor JCE
Os HSMs precisam autenticar seu aplicativo Java antes que o aplicativo possa usá-los. Cada aplicativo pode usar uma sessão. Os HSMs autenticam uma sessão usando o método de login explícito ou implícito.
Login explícito: esse método permite que você forneça credenciais do CloudHSM diretamente no aplicativo. Ele usa o método LoginManager.login()
, em que você passa no mome do usuário, a senha e o ID da partição do HSM do usuário CU. Para obter mais informações sobre como usar o método de login explícito, consulte o código de exemplo Fazer login em um HSM
Login implícito: esse método permite que você defina as credenciais do CloudHSM em um novo arquivo de propriedades, propriedades do sistema, ou como variáveis de ambiente.
-
Novo arquivo de propriedades: crie um novo arquivo chamado
HsmCredentials.properties
e adicione-o aoCLASSPATH
de seu aplicativo. O arquivo deve conter o seguinte:HSM_PARTITION = PARTITION_1 HSM_USER =
<HSM user name>
HSM_PASSWORD =<password>
-
Propriedades do sistema: defina as credenciais por meio das propriedades do sistema ao executar seu aplicativo. Os exemplos a seguir mostram duas formas diferentes de fazer isso:
$
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>
"); -
Variáveis de ambiente: defina as credenciais como variáveis de ambiente.
$
export HSM_PARTITION=PARTITION_1
$
export HSM_USER=
<HSM user name>
$
export HSM_PASSWORD=
<password>
As credenciais talvez não estejam disponíveis se o aplicativo não fornecê-las ou se você tentar uma operação antes que o HSM autentique a sessão. Nesses casos, a biblioteca de software do CloudHSM para Java procura as credenciais na seguinte ordem:
-
HsmCredentials.properties
-
Propriedades do sistema
-
Variáveis de ambiente
Tratamento de erros
O tratamento de erros é mais fácil com o login explícito do que com o método de login implícito. Ao usar a classe LoginManager
, você tem mais controle sobre como seu aplicativo trata as falhas. O método de login implícito torna o tratamento de erros difícil de compreender quando as credenciais são inválidas ou os HSMs estiverem com problemas na autenticação da sessão.