Installare e utilizzare il provider JCE AWS CloudHSM per Client SDK 3 - AWS CloudHSM

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Installare e utilizzare il provider JCE AWS CloudHSM per Client SDK 3

È necessario disporre del client AWS CloudHSM prima di poter utilizzare il provider JCE.

Il client è un daemon che stabilisce una comunicazione end-to-end crittografata con i moduli HSM nel cluster. Il provider JCE comunica localmente con il client. Se non hai installato e configurato il pacchetto client AWS CloudHSM, fallo seguendo i passaggi descritti in Installazione del client (Linux). Dopo aver installato e configurato il client, esegui questo comando per avviarlo.

È supportato solo sui sistemi operativi Linux e altri sistemi operativi compatibili.

Amazon Linux
$ sudo start cloudhsm-client
Amazon Linux 2
$ sudo systemctl cloudhsm-client start
CentOS 7
$ sudo systemctl cloudhsm-client start
CentOS 8
$ sudo systemctl cloudhsm-client start
RHEL 7
$ sudo systemctl cloudhsm-client start
RHEL 8
$ sudo systemctl cloudhsm-client start
Ubuntu 16.04 LTS
$ sudo systemctl cloudhsm-client start
Ubuntu 18.04 LTS
$ sudo systemctl cloudhsm-client start
Ubuntu 20.04 LTS
$ sudo systemctl cloudhsm-client start

Installazione del provider JCE

Utilizza i seguenti comandi per scaricare e installare il provider JCE. Il provider è supportato solo sui sistemi operativi Linux e altri sistemi operativi compatibili.

Nota

Per l'aggiornamento, vedi Aggiornamento del Client SDK 3.

Amazon Linux
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL6/cloudhsm-client-jce-latest.el6.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el6.x86_64.rpm
Amazon Linux 2
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
CentOS 7
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
CentOS 8
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-client-jce-latest.el8.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el8.x86_64.rpm
RHEL 7
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL7/cloudhsm-client-jce-latest.el7.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el7.x86_64.rpm
RHEL 8
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/EL8/cloudhsm-client-jce-latest.el8.x86_64.rpm
$ sudo yum install ./cloudhsm-client-jce-latest.el8.x86_64.rpm
Ubuntu 16.04 LTS
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Xenial/cloudhsm-client-jce_latest_amd64.deb
$ sudo apt install ./cloudhsm-client-jce_latest_amd64.deb
Ubuntu 18.04 LTS
$ wget https://s3.amazonaws.com/cloudhsmv2-software/CloudHsmClient/Bionic/cloudhsm-client-jce_latest_u18.04_amd64.deb
$ sudo apt install ./cloudhsm-client-jce_latest_u18.04_amd64.deb

Dopo aver eseguito i comandi precedenti, è possibile individuare i seguenti file della del provider 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

Convalida dell'installazione

Esecuzione di operazioni di base sull’HSM per convalidare l'installazione.

Per convalidare l'installazione del provider JCE
  1. (Facoltativo) Se non hai già installato Java nell'ambiente, utilizza il comando seguente per installarlo.

    Linux (and compatible libraries)
    $ sudo yum install java-1.8.0-openjdk
    Ubuntu
    $ sudo apt-get install openjdk-8-jre
  2. Utilizza i seguenti comandi per impostare le variabili di ambiente necessarie. Sostituisci <nome utenteHSM> e <password> con le credenziali di un crypto user (CU).

    $ export LD_LIBRARY_PATH=/opt/cloudhsm/lib
    $ export HSM_PARTITION=PARTITION_1
    $ export HSM_USER=<HSM user name>
    $ export HSM_PASSWORD=<password>
  3. Utilizza il seguente comando per eseguire il test di funzionalità di base. Se il comando viene eseguito correttamente, verrà visualizzato un output simile al seguente.

    $ 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)

Fornire le credenziali al provider JCE

I moduli HSM necessitano di autenticare l'applicazione Java, prima che l'applicazione sia in grado di utilizzarli. Ogni applicazione può utilizzare una sessione. I moduli HSM autenticano una sessione utilizzando un accesso esplicito o un metodo di accesso implicito.

Accesso Esplicito – questo metodo consente di fornire le credenziali CloudHSM direttamente nell'applicazione. Utilizza il metodo LoginManager.login(), in cui si passa il nome utente, la password e l'ID della partizione HSM. Per ulteriori informazioni sull'utilizzo del metodo di accesso esplicito, vedi l'esempio di codice Accesso a un HSM.

Accesso Implicito – questo metodo consente di impostare le credenziali di CloudHSM in un nuovo file di proprietà, proprietà del sistema, oppure come variabili di ambiente.

  • Nuovo file di proprietà Crea un nuovo file con nome HsmCredentials.properties e aggiungilo a quello della tua applicazione. Il file deve contenere il testo seguente:

    HSM_PARTITION = PARTITION_1 HSM_USER = <HSM user name> HSM_PASSWORD = <password>
  • Proprietà di sistema – Imposta le credenziali attraverso le proprietà di sistema durante l'esecuzione di un'applicazione. I seguenti esempi mostrano due modi differenti con cui è possibile eseguire questa operazione:

    $ 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>");
  • Variabili di ambiente – Imposta le credenziali come variabili di ambiente.

    $ export HSM_PARTITION=PARTITION_1 $ export HSM_USER=<HSM user name> $ export HSM_PASSWORD=<password>

Le credenziali potrebbero non essere disponibili se l'applicazione non le fornisce o se viene eseguita un'operazione prima che l’HSM autentichi la sessione. In questi casi, la libreria software CloudHSM per Java cerca le credenziali nel seguente ordine:

  1. HsmCredentials.properties

  2. Proprietà di sistema

  3. Variabili di ambiente

Gestione degli errori

La gestione degli errori è più facile con l'accesso esplicito rispetto al metodo di login implicito. Quando si utilizza la classe LoginManager, si dispone di un maggiore controllo sulla modalità con cui l'applicazione gestisce gli errori. Il metodo di login implicito complica la gestione degli errori quando le credenziali non sono valide o si sono verificati problemi con i moduli HSM durante la sessione di autenticazione.

Nozioni di base sulla gestione delle chiavi nel provider JCE

Le nozioni di base sulla gestione delle chiavi nel provider JCE implicano l'importazione, l'esportazione di chiavi, il caricamento di chiavi tramite handle, oppure l'eliminazione di chiavi. Per ulteriori informazioni su come gestire le chiavi, vedi l'esempio di codice Gestire le chiavi.

Puoi inoltre trovare ulteriori esempi di codice del provider JCE all'indirizzoEsempi di codice.