Ciao Ragazzi,
ritorno per fare alcune considerazioni sull’installazione di un certificato SSL e quindi l’abilitazione di HTTPS su JBoss.
Ormai diventato da qualche anno Wildfly è uno dei più diffusi application server insieme a Tomcat per quanto riguarda le applicazioni sviluppate in Java.
Oggi vediamo come configurare HTTPS.
La ricetta di oggi richiede:
- Certificato SSL
- Chiave privata usata per generare il CSR e quindi ottenere il Certificato
- Certificato della CA (Certification Authority) oppure CC (Chain Certificate)
- Una Password (che definiremo noi)
- JBoss Wildfly installato
Per farvi capire meglio la storia dei certificati (chi è più pratica può tranquillamente passare avanti)
Per prima cosa compattiamo tutti i certificati sopra indicati in un unico .pfx che conterrà tutte le informazioni riguardo il certificato, la ca e la chiave privata. Per fare questo servirà definire una password (perchè il pfx contiene tutte le info del certificato e nelle mani sbagliate potrebbe essere dannoso!)
Diamo quindi il comando da terminale:
openssl pkcs12 -export -out myapp.pfx -in mycert.crt -inkey myserverkey.key -certfile ca.crt
Spiegare il comando è abbastanza inutile perchè la sintassi parla da sola!
Ora che abbiamo il nostro myapp.pfx lo spostiamo nella cartella: (${WILDFLY_HOME}/standalone/configuration)
Modifichiamo adesso il file con config standalone.xml alla sezione ApplicationRealm (se non servono particolari configurazioni, altrimenti si può fare tranquillamente un Realm dedicato) come segue:
<security-realm name=”ApplicationRealm”>
<server-identities>
<ssl>
<keystore path=”myapp.pfx” relative-to=”jboss.server.config.dir” keystore-password=”<your-password>” />
</ssl>
</server-identities>
</security-realm>
La password del keystore in realtà non è altro che la password con cui abbiamo esportato il pfx.
Di base JBoss utilizza, come anche Tomcat, la porta 8443 per la parte SSL.
Se per caso vogliamo forzare l’utilizzo della porta 443 (HTTPS) possiamo o mettere davanti a JBoss un reverse proxy fatto ad esempio con Apache o Nginx che fanno il redirect del traffico sulla 443 verso la 8443 locale (Soluzione consigliata) oppure con delle regole IPTABLES (Soluzione di laboratorio):
sudo iptables -t nat -A PREROUTING -p tcp –dport 443 -j REDIRECT –to-ports 8443
sudo iptables -t nat -A OUTPUT -p tcp –dport 443 -o lo -j REDIRECT –to-port 8443
sudo service iptables save
Abbiamo finito!
Adesso possiamo riavviare JBoss e andare sulla porta https://mydomain:8443 oppure https://mydomain
Enjoy!