bg-tutorials

Come installare un certificato SSL su JBoss Server

Questo tutorial mostra come installare un certificato SSL su JBoss EAP e WildFly utilizzando keytool e il sottosistema di sicurezza Elytron. Se non hai ancora i file del tuo certificato, la prima sezione tratta la generazione di un CSR.

Nota sulle versioni: le versioni moderne di JBoss EAP (7.1 e successive, incluso EAP 8) e le recenti release di WildFly configurano HTTPS tramite il sottosistema elytron collegato al https-listener di Undertow. Il vecchio metodo security-realm e i connettori legacy Tomcat o Jetty sono deprecati, quindi questa guida utilizza l’approccio attuale.

Abbiamo anche registrato un video che ti guida attraverso l’intero processo. Puoi guardare il video, leggere le istruzioni, oppure fare entrambe le cose. Puoi guardare il video qui sotto.

Generare un codice CSR su JBoss

Un CSR (Certificate Signing Request) è un blocco di testo codificato che invii alla Certificate Authority (CA) quando ordini un certificato. Contiene i dettagli del tuo dominio e della tua organizzazione, che la CA utilizza per convalidare la richiesta. Generando il CSR viene creata anche la chiave privata corrispondente, che rimane sul tuo server ed è necessaria durante l’installazione.

Hai due opzioni:

Su JBoss il CSR viene generato con keytool a partire da un keystore .jks o .p12. Prendi nota dell’alias e del nome del keystore che scegli ora: in seguito dovrai importare il certificato firmato esattamente in quello stesso alias. Invia il CSR alla CA durante l’ordine e, una volta emesso il certificato, prosegui con l’installazione riportata di seguito.

Installare un certificato SSL su JBoss Server

Passo 1: Prepara i file del certificato

Dopo la convalida, la CA invia via email i file del tuo certificato, solitamente in un archivio ZIP. Estrailo. Dovresti avere:

  • Il tuo certificato primario (un file .crt, .cer, o .pem).
  • I certificati intermedi, spesso forniti come file .ca-bundle (il CA bundle). Alcune CA includono anche il certificato radice.
  • Il keystore (.jks o .p12) che hai creato con il CSR, che contiene la tua chiave privata sotto l’alias scelto durante la generazione del CSR.

Tieni questi file insieme e copiali sul server, ad esempio nella directory di configurazione di JBoss ($JBOSS_HOME/standalone/configuration/). Se un file si apre come testo, puoi verificare che contenga le righe previste BEGIN CERTIFICATE ed END CERTIFICATE.

Passo 2: Importa la catena della CA nel keystore

Importa prima i certificati intermedi (e quello radice, se fornito) in modo che keytool possa costruire una catena di fiducia completa. Utilizza lo stesso keystore che contiene la tua chiave privata e assegna a ogni certificato della CA un proprio alias:

keytool -import -trustcacerts -alias root -file root.crt -keystore your_keystore.jks

keytool -import -trustcacerts -alias intermediate -file intermediate.crt -keystore your_keystore.jks

Se la tua CA ha fornito un unico file .ca-bundle, importalo con un solo alias (ad esempio -alias intermediate). Quando richiesto, inserisci la password del keystore e conferma la fiducia. Queste voci sono voci di certificato attendibile, non voci di chiave, quindi non influiscono sulla tua chiave privata.

Passo 3: Importa il certificato firmato nel tuo alias di chiave

Ora importa il tuo certificato firmato (la risposta della CA) nell’esatto alias che hai utilizzato durante la generazione del CSR. Poiché quell’alias contiene già la chiave privata, keytool tratta questa operazione come una risposta di certificato e sostituisce il certificato autofirmato temporaneo con la catena firmata dalla CA, mantenendo intatta la chiave:

keytool -import -trustcacerts -alias your_csr_alias -file your_domain.crt -keystore your_keystore.jks

Sostituisci your_csr_alias con l’alias utilizzato durante la generazione del CSR e your_keystore.jks con il tuo keystore. In caso di successo, keytool stampa Certificate reply was installed in keystore.

Importante: non inventare un nuovo alias qui. Importare la risposta con un nuovo alias crea una voce di certificato attendibile senza chiave privata, la catena viene persa e il server non può completare l’handshake TLS. Se vedi Failed to establish chain from reply, significa che il certificato intermedio o radice del Passo 2 manca nel keystore.

Puoi verificare il risultato: l’alias dovrebbe ora mostrare una catena di certificati di lunghezza superiore a 1:

keytool -list -v -alias your_csr_alias -keystore your_keystore.jks

Passo 4: Configura HTTPS nel sottosistema Elytron

Colloca il keystore in $JBOSS_HOME/standalone/configuration/, quindi definisci un key-store, un key-manager e un server-ssl-context Elytron. Il modo più rapido è utilizzare la CLI di gestione. Avvia il server, connettiti con jboss-cli.sh --connect ed esegui un batch in modo che le modifiche vengano applicate insieme:

batch

/subsystem=elytron/key-store=httpsKS:add(path=your_keystore.jks, relative-to=jboss.server.config.dir, credential-reference={clear-text=your_keystore_password}, type=JKS)

/subsystem=elytron/key-manager=httpsKM:add(key-store=httpsKS, credential-reference={clear-text=your_keystore_password})

/subsystem=elytron/server-ssl-context=httpsSSC:add(key-manager=httpsKM, protocols=["TLSv1.3","TLSv1.2"])

run-batch

Successivamente, punta il https-listener di Undertow verso il nuovo ssl-context. Undertow non può fare riferimento contemporaneamente a un security-realm legacy e a un ssl-context Elytron, quindi rimuovi il vecchio riferimento e imposta il nuovo in un unico batch:

batch

/subsystem=undertow/server=default-server/https-listener=https:undefine-attribute(name=security-realm)

/subsystem=undertow/server=default-server/https-listener=https:write-attribute(name=ssl-context, value=httpsSSC)

run-batch

Se preferisci modificare direttamente standalone.xml (con il server arrestato), la configurazione equivalente è la seguente all’interno del sottosistema elytron:

<tls>
    <key-stores>
        <key-store name="httpsKS">
            <credential-reference clear-text="your_keystore_password"/>
            <implementation type="JKS"/>
            <file path="your_keystore.jks" relative-to="jboss.server.config.dir"/>
        </key-store>
    </key-stores>
    <key-managers>
        <key-manager name="httpsKM" key-store="httpsKS">
            <credential-reference clear-text="your_keystore_password"/>
        </key-manager>
    </key-managers>
    <server-ssl-contexts>
        <server-ssl-context name="httpsSSC" key-manager="httpsKM" protocols="TLSv1.3 TLSv1.2"/>
    </server-ssl-contexts>
</tls>

E il listener corrispondente nel sottosistema undertow fa riferimento a quel ssl-context:

<https-listener name="https" socket-binding="https" ssl-context="httpsSSC" enable-http2="true"/>

Limitare i protocols a TLS 1.3 e TLS 1.2 disabilita i protocolli obsoleti TLS 1.0 e 1.1. La porta HTTPS predefinita è 8443; associala alla porta 443 con un load balancer o un reindirizzamento di porta se hai bisogno della porta standard.

Passo 5: Riavvia JBoss

Se hai modificato manualmente standalone.xml, riavvia il server in modo che carichi la nuova configurazione. Se hai utilizzato i batch della CLI descritti sopra, le modifiche si applicano immediatamente, ma un reload conferma un avvio pulito:

jboss-cli.sh --connect --command=:reload

Controlla il log del server per eventuali errori SSL o Elytron durante l’avvio. Una volta avviato correttamente, il tuo certificato SSL è installato su JBoss.

Verifica l’installazione SSL

Dopo l’installazione, verifica che il certificato e la catena vengano serviti correttamente. Apri il tuo sito tramite HTTPS (ad esempio https://www.tuodominio.com:8443) e controlla il lucchetto, oppure esegui una scansione esterna con il nostro SSL Checker per un report completo su certificato, catena e supporto dei protocolli. Puoi anche verificare da riga di comando:

echo | openssl s_client -connect yourdomain.com:8443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -dates

Questo stampa l’emittente e le date di validità del certificato che JBoss sta servendo. Se l’emittente è la tua CA (e non una voce autofirmata), la risposta è stata importata correttamente.

Domande frequenti

Come faccio a sapere se un certificato SSL è installato su JBoss?

Connettiti alla porta HTTPS con OpenSSL e leggi il certificato restituito dal server:
echo | openssl s_client -connect yourdomain.com:8443 -servername yourdomain.com 2>/dev/null | openssl x509 -noout -issuer -subject -dates
Se un certificato è installato, questo comando stampa l’emittente, il soggetto e le date di validità. Puoi anche esaminare il keystore con keytool -list -v -keystore your_keystore.jks, oppure aprire il tuo sito in un browser e controllare il lucchetto.

Dove devo inserire il certificato SSL in JBoss?

Il certificato risiede all’interno di un keystore, e il keystore è referenziato dal key-store Elytron. Una posizione comune è la directory di configurazione del server, $JBOSS_HOME/standalone/configuration/, con il percorso del key-store Elytron impostato relative-to jboss.server.config.dir. Puoi conservarlo altrove, purché il percorso del key-store punti ad esso.

Perché keytool restituisce “Failed to establish chain from reply”?

keytool non è riuscito a costruire un percorso dal tuo certificato fino a una radice attendibile. Importa prima i certificati intermedi (e quello radice, se fornito) nello stesso keystore, con -trustcacerts, quindi importa la risposta firmata nel tuo alias CSR. Se hai importato la risposta con un alias completamente nuovo, la chiave privata è persa: elimina quella voce e reimporta invece nell’alias di chiave originale.

Come posso verificare quando scade il mio certificato SSL in JBoss?

Esegui keytool -list -v -keystore your_keystore.jks e leggi la riga Valid from per il tuo alias, oppure utilizza il comando OpenSSL sopra riportato per vedere le date riportate dal server in funzione. La durata dei certificati TLS pubblici si sta riducendo secondo le regole del CA/Browser Forum: a partire dal 15 marzo 2026 il massimo sarà di 200 giorni, scendendo a 100 giorni nel 2027 e a 47 giorni nel 2029. Tieni traccia delle date di rinnovo e rinnova prima della scadenza, oppure automatizza l’emissione dove la tua CA lo consente.

Risparmia il 10% sui certificati SSL ordinando oggi stesso da SSL Dragon!

Emissione rapida, crittografia avanzata, affidabilità del browser al 99,99%, assistenza dedicata e garanzia di rimborso entro 25 giorni. Codice coupon: SAVE10

Un'immagine dettagliata di un drago in volo
Scritto da

Scrittore di contenuti con esperienza, specializzato in certificati SSL. Trasforma intricati argomenti di cybersicurezza in contenuti chiari e coinvolgenti. Contribuisci a migliorare la sicurezza digitale attraverso narrazioni d'impatto.