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à.
AWS CloudHSM Offload SSL/TLS su Linux utilizzando Tomcat con JSSE
Questo argomento fornisce step-by-step istruzioni per configurare l'offload SSL/TLS utilizzando Java Secure Socket Extension (JSSE) con JCE SDK. AWS CloudHSM
Argomenti
Panoramica
In AWS CloudHSM, i server web Tomcat funzionano su Linux per supportare HTTPS. L'SDK AWS CloudHSM JCE fornisce un'interfaccia che può essere utilizzata con JSSE (Java Secure Socket Extension) per consentire l'uso di HSMs tali server Web. AWS CloudHSM JCE è il bridge che collega JSSE al tuo cluster AWS CloudHSM. JSSE è un'API Java per i protocolli Secure Sockets Layer (SSL) e Transport Layer Security (TLS).
Fase 1: configurazione dei prerequisiti
Segui questi prerequisiti per utilizzare un server Web Tomcat con SSL/TLS offload on Linux. These prerequisites must be met to set up web server SSL/TLS offload con AWS CloudHSM Client SDK 5 e un server Web Tomcat.
Nota
Piattaforme diverse richiedono prerequisiti diversi. Segui sempre la procedura di installazione corretta per la tua piattaforma.
Prerequisiti
-
Un' EC2 istanza Amazon che esegue un sistema operativo Linux con un server web tomcat installato.
-
Un utente di crittografia (CU) che sia proprietario e che gestisca la chiave privata del server Web sull'HSM.
-
Un AWS CloudHSM cluster attivo con almeno due moduli di sicurezza hardware (HSMs) su cui è installato e configurato JCE for Client SDK 5.
Nota
È possibile utilizzare un singolo cluster HSM, ma bisogna prima disabilitare la durabilità delle chiavi del client. Per ulteriori informazioni, consulta la sezione sulla gestione delle impostazioni di durabilità delle chiavi del client e la pagina sullo strumento di configurazione di Client SDK 5.
Come soddisfare i prerequisiti
-
Installa e configura JCE for AWS CloudHSM su un AWS CloudHSM cluster attivo con almeno due moduli di sicurezza hardware (). HSMs Per ulteriori informazioni sull'installazione, consulta la pagina su JCE per Client SDK 5.
-
Su un'istanza EC2 Linux che ha accesso al tuo AWS CloudHSM cluster, segui le istruzioni di Apache Tomcat
per scaricare e installare il server web Tomcat. -
Utilizza la CLI di CloudHSM per creare un crypto user (CU). Per ulteriori informazioni sulla gestione degli utenti HSM, consulta la pagina sulla gestione degli utenti HSM con la CLI di CloudHSM.
Suggerimento
Prendere nota del nome utente e della password del CU, perché saranno necessari più avanti per creare o importare il certificato e la chiava privata HTTPS per il server Web.
Per configurare JCE con Java KeyTool, segui le istruzioni riportate nella pagina Usa Client SDK 5 per l'integrazione AWS CloudHSM con Java Keytool e Jarsigner.
Dopo aver completato queste operazioni, andare su Fase 2: generazione o importazione di una chiave privata e certificato SSL/TLS.
Note
-
Per utilizzare Security-Enhanced Linux (SELinux) e i server Web, è necessario consentire le connessioni TCP in uscita sulla porta 2223, che è la porta utilizzata da Client SDK 5 per comunicare con l'HSM.
-
Per creare e attivare un cluster e consentire a un' EC2 istanza di accedere al cluster, completa la procedura descritta in Getting Started with. AWS CloudHSM Questa sezione offre step-by-step istruzioni per creare un cluster attivo con un HSM e un'istanza EC2 client Amazon. È possibile utilizzare questa istanza client come server Web.
-
Per evitare di disabilitare la durabilità delle chiavi del client, aggiungi più di un HSM al cluster. Per ulteriori informazioni, consulta Aggiungere un HSM a un cluster AWS CloudHSM.
-
È possibile utilizzare SSH o PuTTY per connettersi all'istanza del client. Per ulteriori informazioni, consulta Connessione all'istanza Linux tramite SSH o Connessione all'istanza Linux da Windows tramite PuTTY nella documentazione di Amazon. EC2
Fase 2: generazione o importazione di una chiave privata e certificato SSL/TLS
Per abilitare HTTPS, l'applicazione del server Web Tomcat necessita di una chiave privata e di un SSL/TLS certificate. To use web server SSL/TLS offload corrispondente con AWS CloudHSM, è necessario archiviare la chiave privata in un HSM del 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 AWS CloudHSM KeyStore file locale che contiene un riferimento alla chiave privata sull'HSM e al certificato associato. Il server Web utilizza il AWS CloudHSM KeyStore file per identificare la chiave privata sull'HSM durante l'offload SSL/TLS.
Generazione di una chiave privata
Questa sezione mostra come generare una coppia di key pair utilizzando il file KeyTool da JDK. Una volta generata una key pair all'interno dell'HSM, è possibile esportarla come KeyStore file 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.
Usa il genkeypair
comando in KeyTool per generare una coppia di key pair RSA
Dopo aver sostituito i
<VARIABLES>
seguenti dati con i tuoi dati specifici, usa il seguente comando per generare un file keystore denominatojsse_keystore.keystore
, che conterrà un riferimento alla tua 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 in cui desiderate generare il file keystore.<UNIQUE ALIAS FOR KEYS>
: Viene utilizzato per identificare in modo univoco la chiave sull'HSM. Questo alias verrà impostato come attributo ETICHETTA della chiave.<KEY PASSWORD>
: Memorizziamo il riferimento alla tua chiave nel file keystore locale e questa password protegge quel riferimento locale.<KEYSTORE PASSWORD>
: Questa è la password per il file keystore locale.<JSSE KEYSTORE NAME>
: nome del file Keystore.<CERT DOMAIN NAME>
: X.500 Nome distinto.<KEY ALGORITHM>
: algoritmo 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, SHA1with RSA, SHA224with RSA, SHA256with RSA e SHA384with RSA). SHA512with
-
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 una CA, è possibile utilizzare il KeyTool per creare un certificato autofirmato. 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
-
Ottieni una copia del file KeyStore generato in un passaggio precedente.
-
Esegui il comando seguente per utilizzare per KeyTool 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 i
<VARIABLES>
seguenti dati con i tuoi dati specifici, esegui il comando seguente per firmare la CSR con la tua 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.keystoreNota
certificate.crt
è il certificato firmato che utilizza la chiave privata dell'alias.
Importazione di un certificato in KeyStore
Dopo aver sostituito i
<VARIABLES>
seguenti dati con i tuoi dati specifici, esegui il comando seguente per importare un certificato firmato come certificato affidabile. Questo passaggio memorizzerà il certificato nella voce del keystore identificata da 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 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.
Fase 3: configurazione del server Web Tomcat
È possibile aggiornare la configurazione del software del server Web per utilizzare il certificato HTTPS e il file PEM corrispondente creato nella fase precedente. Ricorda di eseguire il backup dei certificati e delle chiavi esistenti prima di iniziare. In questo modo viene completata la configurazione del software del server Web Linux per l'offload SSL/TLS con AWS CloudHSM. Per ulteriori informazioni, consulta la documentazione di riferimento relativa alla configurazione di Apache Tomcat 9
Arresta il server
Dopo aver sostituito quanto
<VARIABLES>
segue con i tuoi dati specifici, esegui il seguente comando per arrestare Tomcat Server prima di aggiornare la configurazione$
/
<TOMCAT DIRECTORY>
/bin/shutdown.sh<TOMCAT DIRECTORY>
: La tua directory di installazione di Tomcat.
Aggiorna il percorso di classe Tomcat
-
Effettuare la connessione all'istanza del client.
-
Individua la cartella di installazione di Tomcat.
-
Dopo aver sostituito quanto
<VARIABLES>
segue con i tuoi dati specifici, usa il seguente comando per aggiungere la libreria Java e il percorso AWS CloudHSM Java in Tomcatclasspath, che si trova nel file.sh. Tomcat/bin/catalina$
sed -i 's@CLASSPATH="$CLASSPATH""$CATALINA_HOME"\/bin\/bootstrap.jar@CLASSPATH="$CLASSPATH""$CATALINA_HOME"\/bin\/bootstrap.jar:'"
<JAVA LIBRARY>
"'\/*:\/opt\/cloudhsm\/java\/*:.\/*@'<TOMCAT PATH>
/bin/catalina.sh<JAVA LIBRARY>
: posizione della libreria Java JRE.<TOMCAT PATH>
: cartella di installazione di Tomcat.
Aggiungi un connettore HTTPS nella configurazione del server.
Vai alla cartella di installazione di Tomcat.
Dopo aver sostituito i
<VARIABLES>
seguenti dati con i tuoi dati specifici, utilizza il seguente comando per aggiungere un connettore HTTPS per utilizzare i certificati generati nei prerequisiti:$
sed -i '/<Connector port="8080"/i <Connector port=\"443\" maxThreads=\"200\" scheme=\"https\" secure=\"true\" SSLEnabled=\"true\" keystoreType=\"CLOUDHSM\" keystoreFile=\"
<CUSTOM DIRECTORY>
/<JSSE KEYSTORE NAME>
.keystore\" keystorePass=\"<KEYSTORE PASSWORD>
\" keyPass=\"<KEY PASSWORD>
\" keyAlias=\"<UNIQUE ALIAS FOR KEYS>
" clientAuth=\"false\" sslProtocol=\"TLS\"/>'<TOMCAT PATH>
/conf/server.xml<CUSTOM DIRECTORY>
: cartella in cui si trova il file keystore.<JSSE KEYSTORE NAME>
: nome del file Keystore.<KEYSTORE PASSWORD>
: Questa è la password per il file keystore locale.<KEY PASSWORD>
: Memorizziamo il riferimento alla tua chiave nel file keystore locale e questa password protegge quel riferimento locale.<UNIQUE ALIAS FOR KEYS>
: Viene utilizzato per identificare in modo univoco la chiave sull'HSM. Questo alias verrà impostato come attributo ETICHETTA della chiave.<TOMCAT PATH>
: Il percorso della cartella Tomcat.
Avvio del server
Dopo aver sostituito i
<VARIABLES>
seguenti dati con i tuoi dati specifici, usa il seguente comando per avviare Tomcat Server:$
/
<TOMCAT DIRECTORY>
/bin/startup.shNota
<TOMCAT DIRECTORY>
è il nome della directory di installazione di Tomcat.
Dopo avere aggiornato la configurazione del server Web, vai alla Fase 4: abilitazione del traffico HTTPS e verifica del certificato.
Fase 4: abilitazione del traffico HTTPS e verifica del certificato
Dopo aver configurato il server Web per l'offload SSL/TLS con AWS CloudHSM, aggiungi l'istanza del server Web a un gruppo di sicurezza che consente il traffico HTTPS in entrata. Ciò consente ai client, come i browser Web, di stabilire una connessione HTTPS con il server Web. Quindi effettua una connessione HTTPS al tuo server web e verifica che stia utilizzando il certificato con cui hai configurato per l'offload SSL/TLS. AWS CloudHSM
Argomenti
Abilitazione delle connessioni HTTPS in entrata
Per connetterti al server Web da un client (ad esempio un browser Web), crea un gruppo di sicurezza che consenta le connessioni HTTPS in entrata. Nello specifico, deve consentire le connessioni TCP in entrata sulla porta 443. Assegna questo gruppo di sicurezza al tuo server Web.
Per creare un gruppo di sicurezza per HTTPS e assegnarlo al server Web
-
Apri la EC2 console Amazon all'indirizzo https://console.aws.amazon.com/ec2/
. -
Seleziona Gruppi di sicurezza nel riquadro di navigazione.
-
Scegliere Create Security Group (Crea gruppo di sicurezza).
-
Per Create Security Group (Crea un gruppo di sicurezza), procedere come segue:
-
Per Security group name (Nome del gruppo di sicurezza), digitare un nome per il gruppo di sicurezza che si sta creando.
-
(Facoltativo) Digitare una descrizione del gruppo di sicurezza in fase di creazione.
-
Per VPC, scegli il VPC che contiene l'istanza Amazon del tuo server web. EC2
-
Seleziona Aggiungi regola.
-
Per Tipo, seleziona HTTPS dalla finestra a discesa.
-
Per Origine, inserisci una posizione di origine.
-
Scegliere Create Security Group (Crea gruppo di sicurezza).
-
-
Nel pannello di navigazione, seleziona Instances (Istanze).
-
Seleziona la casella di controllo accanto all'istanza del server Web.
-
Seleziona il menu a discesa Operazioni nella parte superiore della pagina. Seleziona Sicurezza, quindi Modifica gruppi di sicurezza.
-
Per Gruppi di sicurezza associati, seleziona la casella di ricerca e scegli il gruppo di sicurezza creato per HTTPS. Quindi, scegli Aggiungi i gruppi di sicurezza.
-
Seleziona Salva.
Verifica dell'utilizzo da parte di HTTPS del certificato configurato
Dopo aver aggiunto il server Web a un gruppo di sicurezza, puoi verificare che SSL/TLS offload utilizzi il tuo certificato autofirmato. Per farlo, puoi utilizzare un browser Web o uno strumento come OpenSSL s_client
Per verificare l'offload SSL/TLS con un browser Web
-
Utilizza un browser Web per connetterti al server Web utilizzando il nome DNS pubblico o l'indirizzo IP del server. Accertarsi che l'URL nella barra degli indirizzi inizi con https://. Ad esempio
https://ec2-52-14-212-67.us-east-2.compute.amazonaws.com/
.Suggerimento
Puoi utilizzare un servizio DNS come Amazon Route 53 per indirizzare il nome di dominio del tuo sito Web (ad esempio, https://www.example.com/) al tuo server Web. Per ulteriori informazioni, consulta la sezione Routing del traffico verso un' EC2istanza Amazon nella Amazon Route 53 Developer Guide o nella documentazione del servizio DNS.
-
Utilizza il browser Web per visualizzare il certificato del server Web. Per ulteriori informazioni, consulta gli argomenti seguenti:
-
Per Mozilla Firefox, consultare Visualizzare un certificato
sul sito Web di supporto di Mozilla. -
Per Google Chrome, consulta la pagina Understand Security Issues
sul sito Web di Google per sviluppatori.
Altri browser Web potrebbero avere caratteristiche simili da utilizzare per visualizzare il certificato del server Web.
-
-
Assicurati che il certificato SSL/TLS corrisponda a quello configurato per l'uso da parte del server Web.
Per verificare l'offload SSL/TLS con OpenSSL s_client
-
Esegui il seguente comando OpenSSL per connetterti al server Web tramite HTTPS. Sostituiscilo
<server name>
con il nome DNS pubblico o l'indirizzo IP del tuo server web.openssl s_client -connect
<server name>
:443Suggerimento
Puoi utilizzare un servizio DNS come Amazon Route 53 per indirizzare il nome di dominio del tuo sito Web (ad esempio, https://www.example.com/) al tuo server Web. Per ulteriori informazioni, consulta la sezione Routing del traffico verso un' EC2istanza Amazon nella Amazon Route 53 Developer Guide o nella documentazione del servizio DNS.
-
Assicurati che il certificato SSL/TLS corrisponda a quello configurato per l'uso da parte del server Web.
A questo punto disponi di un sito Web protetto con HTTPS. La chiave privata per il server Web è archiviata in un HSM del cluster. AWS CloudHSM
Per aggiungere un sistema di bilanciamento del carico, consulta la pagina Aggiungi un sistema di bilanciamento del carico con Elastic Load Balancing AWS CloudHSM per (opzionale).