Fase 2: generazione o importazione di una chiave privata e certificato SSL/TLS - 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à.

Fase 2: generazione o importazione di una chiave privata e certificato SSL/TLS

Per abilitare il protocollo HTTPS, l'applicazione del server Web Tomcat necessita di una chiave privata e di un certificato SSL/TLS corrispondente. Per utilizzare l'offload SSL/TLS del server Web con AWS CloudHSM devi archiviare la chiave privata in un HSM nel tuo cluster AWS CloudHSM.

Nota

In mancanza di una chiave privata e di un certificato corrispondente, genera una chiave privata in un HSM, che serve a creare una richiesta di firma del certificato (CSR), che si utilizza per creare il certificato SSL/TLS.

Si crea un file KeyStore AWS CloudHSM locale che contiene un riferimento alla chiave privata sull'HSM e al certificato associato. Il server Web utilizza il file KeyStore AWS CloudHSM per identificare la chiave privata sull'HSM durante l'offload SSL/TLS.

Generazione di una chiave privata

Questa sezione illustra come generare una coppia di chiavi utilizzando KeyTool di JDK. Una volta generata una coppia di chiavi all'interno dell'HSM, è possibile esportarla come file KeyStore e generare il certificato corrispondente.

A seconda del caso d'uso, è possibile generare una coppia di chiavi RSA o EC. La procedura riportata di seguito illustra come generare una coppia di chiavi RSA.

Utilizza il comando genkeypair in KeyTool per generare una coppia di chiavi RSA
  1. Dopo aver sostituito le <VARIABLES> indicate sotto con i dati specifici, utilizza il seguente comando per generare un file KeyStore denominato jsse_keystore.keystore, che conterrà un riferimento alla chiave privata sull'HSM.

    $ keytool -genkeypair -alias <UNIQUE ALIAS FOR KEYS> -keyalg <KEY ALGORITHM> -keysize <KEY SIZE> -sigalg <SIGN ALGORITHM> \ -keystore <PATH>/<JSSE KEYSTORE NAME>.keystore -storetype CLOUDHSM \ -dname CERT_DOMAIN_NAME \ -J-classpath '-J'$JAVA_LIB'/*:/opt/cloudhsm/java/*:./*' \ -provider "com.amazonaws.cloudhsm.jce.provider.CloudHsmProvider" \ -providerpath "$CLOUDHSM_JCE_LOCATION" \ -keypass <KEY PASSWORD> -storepass <KEYSTORE PASSWORD>
    • <PATH>: il percorso desiderato in cui generare il file KeyStore.

    • <UNIQUE ALIAS FOR KEYS>: serve a identificare in modo univoco la chiave sull'HSM. Questo alias verrà impostato come attributo ETICHETTA della chiave.

    • <KEY PASSWORD>: password che protegge il riferimento alla chiave, memorizzato nel file KeyStore locale.

    • <KEYSTORE PASSWORD>: password del file KeyStore locale.

    • <JSSE KEYSTORE NAME>: nome del file KeyStore.

    • <CERT DOMAIN NAME>: nome distinto X.500.

    • <KEY ALGORITHM>: algoritmo della chiave per generare una coppia di chiavi (ad esempio, RSA ed EC).

    • <KEY SIZE>: dimensione della chiave per generare una coppia di chiavi (ad esempio 2048, 3072 e 4096).

    • <SIGN ALGORITHM>: dimensione della chiave per generare una coppia di chiavi (ad esempio, SHA1WithRSA, SHA224WithRSA, SHA256WithRSA, SHA384WithRSA e SHA512WithRSA).

  2. Per assicurarti che il comando sia stato eseguito correttamente, inserisci il seguente comando e verifica di aver generato correttamente una coppia di chiavi RSA.

    $ ls <PATH>/<JSSE KEYSTORE NAME>.keystore

Generazione di un certificato auto-firmato

Dopo aver generato una chiave privata insieme al file KeyStore, puoi utilizzare questo file per generare una richiesta di firma del certificato (CSR) e un certificato.

In un ambiente di produzione, per creare un certificato da una CSR in genere ci si avvale di un'autorità di certificazione, che non è invece necessaria per un ambiente di test. Se ti affidi a un'autorità di certificazione, invia il file della CSR a tale autorità e utilizza il certificato SSL/TLS firmato che ti è stato fornito nel server Web per HTTPS.

In alternativa all'utilizzo di un'autorità di certificazione, è possibile utilizzare KeyTool per creare un certificato auto-firmato. I certificati autofirmati non sono considerati attendibili dai browser e non devono essere utilizzati negli ambienti di produzione, ma solo negli ambienti di test.

avvertimento

È consigliabile utilizzare i certificati autofirmati solo in un ambiente di test. Per un ambiente di produzione, è consigliabile utilizzare un metodo più sicuro, ad esempio un'autorità di certificazione, per creare un certificato.

Argomenti
    Generazione di un certificato
    1. Ottieni una copia del file KeyStore generato in un passaggio precedente.

    2. Esegui il comando seguente per utilizzare KeyTool e creare una richiesta di firma del certificato (CSR).

      $ keytool -certreq -keyalg RSA -alias unique_alias_for_key -file certreq.csr \ -keystore <JSSE KEYSTORE NAME>.keystore -storetype CLOUDHSM \ -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass <KEY PASSWORD> -storepass <KEYSTORE PASSWORD>
      Nota

      Il file di output della richiesta di firma del certificato è certreq.csr.

    Firma di un certificato
    • Dopo aver sostituito le <VARIABLES> indicate sotto con i dati specifici, esegui il seguente comando per firmare la CSR con la chiave privata sull'HSM. In questo modo viene creato un certificato autofirmato.

      $ keytool -gencert -infile certreq.csr -outfile certificate.crt \ -alias <UNIQUE ALIAS FOR KEYS> -keypass <KEY_PASSWORD> -storepass <KEYSTORE_PASSWORD> -sigalg SIG_ALG \ -storetype CLOUDHSM -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keystore jsse_keystore.keystore
      Nota

      certificate.crt è il certificato firmato che utilizza la chiave privata dell'alias.

    Importazione di un certificato in KeyStore
    • Dopo aver sostituito le <VARIABLES> indicate sotto con i dati specifici, esegui il seguente comando per importare un certificato firmato come certificato attendibile. Questo passaggio archivierà il certificato nella voce KeyStore identificata dall'alias.

      $ keytool -import -alias <UNIQUE ALIAS FOR KEYS> -keystore jsse_keystore.keystore \ -file certificate.crt -storetype CLOUDHSM \ -v -J-classpath '-J$JAVA_LIB/*:/opt/cloudhsm/java/*:./*' \ -keypass <KEY PASSWORD> -storepass <KEYSTORE_PASSWORD>
    Conversione di un certificato in un file PEM
    • Esegui il seguente comando per convertire il file del certificato firmato (.crt) in un file PEM. Il file PEM verrà utilizzato per inviare la richiesta dal client http.

      $ openssl x509 -inform der -in certificate.crt -out certificate.pem

    Dopo aver completato questa procedura, vai alla Fase 3: configurazione del server Web.