Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il protocollo SSL/TLS

Antonio Musarra
Antonio MusarraSenior Software Architect at SMC Treviso S.r.l. - Editor & Author at Antonio Musarra's Blog

In questo eBook sarà affrontato un argomento legato alla sicurezza che riguarda il come rendere sicure le connessioni HTTP attraverso il protocollo SSL/TLS (da ora in avanti TLS). Questo aspetto di sicurezza non è strettamente legato a Liferay, infatti non esiste nessun riferimento sulla LDN, riguarda invece l’infrastruttura dove il portale Liferay è collocato. Il percorso che seguiremo nel corso di questo eBook per raggiungere il nostro obiettivo, sarà così organizzato: 1. Gestione dei certificati 2. Configurazione del protocollo TLS 3. Configurazione del portale Liferay (sia Apache Tomcat sia WildFly)

LIFERAY DEPLOYMENT GUIDE - I
LIFERAY SSL/TLS SECURITY
AUTORE
ANTONIO MUSARRA
PUBBLICATO DA
ANTONIO MUSARRA’S BLOG - WWW.DONTESTA.IT
Come configurare il bundle di Liferay per funzionare in
modalità sicura tramite il protocollo SSL/TLS
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Antonio Musarra, Liferay SSL/TLS Security, Come configurare il bundle Liferay per
funzionare in modalità sicura tramite il protocollo SSL/TLS.
Copertina e impaginazione di Antonio Musarra <antonio.musarra@gmail.com>
Prima edizione digitale Giugno 2019 (versione 1.0.0)
SERIE: Liferay Deployment Guide (#LFRDEPGUIDE)
PROMOSSO DA: Antonio Musarra’s Blog <https://www.dontesta.it>
NOTE SUL COPYRIGHT:
Tutti i diritti d’autore e connessi sulla presente opera appartengono all’autore Antonio
Musarra. Per volontà dell’autore quest’opera è rilasciata nei termini della licenza Creative
Commons Attribuzione – Non Commerciale – Condividi allo stesso modo 3.0 Italia (CC BY-NC-SA 3.0
IT) il cui testo integrale è disponibile alla pagina web https://goo.gl/jYtSzA
Tutti i marchi riportati appartengo ai legittimi proprietari; marchi di terzi, nomi di prodotti,
nomi commerciali, nomi corporativi e società citati possono essere marchi di proprietà dei
rispettivi titolari o marchi registrati d’altre società e sono stati utilizzati a puro scopo
esplicativo ed a beneficio del possessore, senza alcun fine di violazione dei diritti di
copyright vigenti.
© 2 019 A N T O N I O M U S A R R A ’ S B L O G
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
1. Introduzione 4...............................................................................................
2. I certificati digitali 7.......................................................................................
2.1 Certificate Keystore	 7.............................................................................................
2.2 Generare Il certificato self-signed	 8.........................................................................
2.3 Come creare un PKCS#12	 11..................................................................................
3. Configurazione TLS 16...................................................................................
3.1 Abilitazione TLS su Apache Tomcat	 16.....................................................................
3.2 Abilitazione TLS su Wildfly	 20................................................................................
Chi sono 22.......................................................................................................
© 2 019 A N T O N I O M U S A R R A ’ S B L O G
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
1 . I N T R O D U Z I O N E
L’aspetto sicurezza nell’ambito dello sviluppo portali ricopre un ruolo importante,
spesso sottovalutato e preso sottogamba. Liferay offre OOTB una serie di strumenti1
(framework di sicurezza) e segue le raccomandazioni OWASP al fine di rendere più sicuro2
il portale.
In seguito a queste raccomandazioni Liferay protegge il portale contro i più noti tipi
di attacco e vulnerabilità di sicurezza. Ad esempio, lo strato di persistenza di Liferay è
generato e manutenuto dal Service Builder Framework che impedisce attacchi di tipo SQL
Injection usando il framework Hibernate.
Per evitare il Cross Site Scripting (XSS) tutti i dati che l’utente invia passano
attraverso un processo di escape. È nativa la protezione contro gli attacchi CSRF (Cross-Site
Request Forgery), Local File Inclusion, Open Redirects, Uploading di file pericolosi, Content Sniffing,
Clickjacking, Path Traversal ed altri dei più comuni attacchi.
Fermo restando le linee guide standard seguite da Liferay, il framework di Liferay
offre anche gli strumenti necessari per combattere e prevenire le vulnerabilità. Un insieme
di API consentono di affrontare le più comuni vulnerabilità.
Maggiori approfondimenti riguardo gli aspetti legati alla sicurezza di Liferay sono
disponibili su LDN :3
- Securing Liferay Portal (http://bit.ly/2Gy4n38)
- Application Security (http://bit.ly/2V3JSP1)
- Service Security Layers (http://bit.ly/2SHnnCA)
Out of the box.1
L'Open Web Application Security Project (chiamato semplicemente OWASP), è un progetto open-source per la sicurezza2
delle applicazioni. L'OWASP offre anche linee guida con consigli sulla creazione di applicazioni Internet sicure, e
indicazioni per i test a cui andrebbero sottoposte.
Liferay Developer Network (https://dev.liferay.com) è il portale di riferimento per l’accesso alla documentazione,3
marketplace e community di Liferay.
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 4
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
In questo eBook sarà affrontato un argomento legato alla sicurezza che riguarda il
come rendere sicure le connessioni HTTP attraverso il protocollo SSL/TLS (da ora in avanti4
TLS). Questo aspetto di sicurezza non è strettamente legato a Liferay, infatti non esiste
nessun riferimento sulla LDN, riguarda invece l’infrastruttura dove il portale Liferay è
collocato.
Un ecosistema Liferay è in genere in linea con l'architettura di riferimento
rappresentata in figura 1, che appare complessa ma fornisce alti livelli di tolleranza agli
errori e flessibilità. Cerchiamo di focalizzare la nostra attenzione sui due livelli: Web e
Application.
Il livello Web e il livello Application sono in genere connessi attraverso il protocollo
(preferenziale) AJP o il protocollo HTTP. Ogni Web Server Apache che fa parte del livello5
Web funge da Software Load Balancer verso il livello Application.
I connettori più comunemente utilizzati dal Web Server Apache sono i moduli:
mod_jk (http://tomcat.apache.org/connectors-doc/), mod_proxy (https://httpd.apache.org/
docs/2.4/mod/mod_proxy.html) e mod_proxy_ajp (https://httpd.apache.org/docs/2.4/mod/
mod_proxy_ajp.html).
Figura 1 - Architettura di riferimento per un ecosistema Liferay
Transport Layer Security (TLS) e il suo predecessore Secure Sockets Layer (SSL) sono4
dei protocolli crittografici di presentazione (sesto livello del modello ISO/OSI per reti di calcolatori) usati nel campo
delle telecomunicazioni e dell'informatica che permettono una comunicazione sicura dalla sorgente al destinatario (end-to-
end) su reti TCP/IP fornendo autenticazione, integrità dei dati e confidenzialità operando al di sopra del livello di trasporto.
Apache JServ Protocol (AJP) è un protocollo binario che può inoltrare richieste in ingresso da un Web Server a un5
Application Server che si trova dietro il Web Server.
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 5
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Il livello Application può essere costituito da uno o più server Liferay. Liferay può
essere installato su alcuni dei più noti Application Server , nello specifico, vedremo come6
configurare i due più comuni bundle di Liferay con l’obiettivo di abilitare il protocollo
HTTPS. La distribuzione basata su Apache Tomcat e la distribuzione basata su JBoss7
WildFly ; entrambe le distribuzioni possono essere scaricate da Sourceforge.net.8
La versione Liferay di riferimento è la Community Edition 7.1 GA3. In generale i
contenuti di questo articolo sono validi anche per versioni precedenti (dalla 6.2 Community
Edition).
- Liferay CE Portal 7.1.2 GA3 Wildfly
- Liferay CE Portal 7.1.2 GA3 Tomcat
Il percorso che seguiremo nel corso di questo eBook per raggiungere il nostro
obiettivo, sarà così organizzato:
- Gestione dei certificati
- Configurazione del protocollo TLS
- Configurazione del portale Liferay


Fare riferimento a Liferay Digital Experience Platform 7.1 Compatibility Matrix https://web.liferay.com/documents/6
14/21598941/Liferay+DXP+7.1+Compatibility+Matrix/9f9c917a-c620-427b-865d-5c4b4a00be85
La versione di Apache Tomcat distribuita con Liferay 7.1 GA3 è la 9.0.107
La versione di Wildfly distribuita con Liferay 7.1. GA3 è la 11.0.08
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 6
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
2 . I C E R T I F I C A T I D I G I T A L I
Prima di procedere con l’operazione di configurazione e abilitazione del protocollo
TLS su Apache Tomcat o Wildfly, occorre ottenere un certificato TLS. I certificati TLS sono
file che includono una chiave di cifratura associata ai dettagli di una specifica autorità di
certificazione o Certification Authority (CA). Assumendo l’affidabilità della CA che rilascia il
certificato, possiamo essere sicuri del fatto che tale certificato garantisca la sicurezza
durante lo scambio dati in rete per mezzo di tale chiave.
Sono possibili diverse opzioni per ottenere un certificato TLS, sia gratuite sia a
pagamento. GoGetSSL e SSLS consentono di ottenere certificati (di tipo Domain Validation )9
a basso costo. Al contrario, Let’s Encrypt è un servizio che permette di ottenere certificati
TLS gratuiti.
In ambienti di sviluppo e collaudo è in genere possibile fare a meno di certificati
TLS rilasciati da CA riconosciute e generare in modo autonomo i cosiddetti self-signed
certificate .10
2 .1 C E R T I F I C A T E K E Y S T O R E
Il certificate keystore (o semplicemente keystore) è un database che contiene le chiavi
private e le relative catene di certificazione X.509 (o certificate chains) che autenticano le
corrispondenti chiavi pubbliche. Il keystore gestisce anche le entità fidate (o trusted entities).
Apache Tomcat, JBoss e Wildfly supportano due principali formati di keystore.
• JKS: Java Key Store è l’implementazione standard del keystore fornita da Sun
Microsystems basata su file, quest’ultimo è in un formato proprietario
denominato JKS. Per maggiori informazioni a riguardo consultare Tools for
Java Platform Security;
• PKCS#12: è un formato binario per la memorizzazione del certificato del
server, di eventuali certificati intermedi e della chiave privata in un singolo file
Si tratta di un certificato digitale X.509 tipicamente utilizzato per Transport Layer Security (TLS) in cui il nome di9
dominio del richiedente è stato convalidato provando un certo tipo di controllo su un dominio DNS
Si tratta di un certificato TLS auto firmato con la propria chiave privata10
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 7
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
crittografato. Questi file ha generalmente l’estensioni .pfx e .p12. Il PKCS#12 è
il formato di keystore consigliato.
Prima di poter configurare Apache Tomcat o Wildfly, il nostro obiettivo è quello di
ottenere e/o creare il keystore, preferibilmente in formato PKCS#12.
2 . 2 G E N E R A R E I L C E R T I F I C A T O S E L F - S I G N E D
Per ambienti di sviluppo o collaudo possiamo quindi generare un certificato di tipo
self-signed utilizzando il tool keytool incluso nella JRE e JDK . Supponendo di voler11 12 13
generare un certificato per l’FQDN cns.dontesta.it, basta eseguire il keytool come indicato a
seguire (Console 1).
Console 1 - Creazione del keystore in formato PKCS#12
Il comando mostrato in Console 1 crea il keystore liferay-portal.keystore in formato
PKCS#12 con le seguenti caratteristiche principali:
• Algoritmo della chiave RSA con dimensione di 4096 bit;
• Validità di 365 giorni;
• Distinguished Name (o DN) cn=cns.dontesta.it,o=Antonio Musarra's Blog,ou=IT
Labs,c=IT,l=Rome;
• SAN (Subject Alternative Name) per due nodi liferay con FQDN cns-lfr-
node-01.dontesta.it e cns-lfr-node-02.dontesta.it.
keytool -genkey -v -keyalg RSA -keystore liferay-portal.keystore.p12 
-storepass secret -keypass secret 
-storetype pkcs12 
-keysize 4096 
-validity 365 
-alias cns.dontesta.it 
-dname "cn=cns.dontesta.it,o=Antonio Musarra's Blog,ou=IT Labs,c=IT,l=Rome" 
-ext SAN=DNS:cns-lfr-node-01.dontesta.it,DNS:cns-lfr-node-02.dontesta.it
Il keytool è distribuito con la JRE e JDK. Viene utilizzato per creare nuove chiavi, importare certificati digitali, esportare11
chiavi esistenti e interagire con il sistema di gestione delle chiavi.
Java Runtime Environment12
Java Development Kit13
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 8
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Console 2 - Output esecuzione comando keytool
Utilizzando il tool KeyStore Explorer è possibile visualizzare attraverso una14
comoda GUI tutte le informazioni di dettaglio circa il contenuto del keystore appena creato
(vedi Console 1).
Figura 2 - Dettaglio certificato cns.dontesta.it
Generazione in corso di una coppia di chiavi RSA da 4.096 bit e di un certificato
autofirmato (SHA256withRSA) con una validità di 365 giorni
per: CN=cns.dontesta.it, O=Antonio Musarra's Blog, OU=IT Labs, C=IT, L=Rome
[Memorizzazione di liferay-portal.keystore] in corso
È un tool open source che offre tutte le funzionalità offerte dal keytool e dal jarsigner ma accessibili attraverso una14
comodissima GUI.
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 9
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Figura 3 - Visualizzazione dell’estensione del certificato
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 1 0
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
2 . 3 C O M E C R E A R E U N P K C S # 12
Nel caso in cui abbiate fatto la richiesta di un certificato TLS presso una delle
Certificate Authority riconosciute, dovreste ricevere almeno due file, uno contenente la chiave
privata (RSA Private Key) e uno contenente il certificato o la public key (chiave pubblica).
Solitamente il file della public key contiene anche il certificato della Certificate Authority che ha
rilasciato il certificato. In genere questi file sono in formato PEM - Privacy-Enhanced Mail
(raramente in formato DER).
Per l’esempio a seguire ho fatto la richiesta di un certificato TLS per il dominio
cns.dontesta.it utilizzando il servizio gratuito di ZeroSSL. Il certificato rilasciato ha una
validità di 90 giorni e firmato da Let's Encrypt. Personalmente utilizzo questo servizio
quando ho necessità di ottenere velocemente un certificato TLS a scopo di demo.
Con in mano la private key e la public key siamo nella condizione di poter generare il
certificato “completo” in formato PKCS#12 utilizzando il tool OpenSSL.
A seguire (vedi Source 1 e Source 2) è mostrato il contenuto delle due chiavi
(privata e pubblica) per cns.dontesta.it. Quella pubblica include anche il certificato della
Certificate Authority che ha rilasciato il certificato.
Prima di procedere con la creazione del keystore in formato PKCS#12, facciamo
una verifica delle due chiavi e utilizziamo OpenSSL.
Console 3 - Verifica della chiave pubblica e chiave privata
Il primo comando estrae le informazioni sulla chiave pubblica e sul certificato della
Certificate Authority. Il secondo comando verifica che la chiave privata sia valida, mentre gli
ultimi due comandi verificano che la coppia di chiavi siano corrispondenti, l’output di questi
due comandi devono corrispondere.
# Check Public Key
$ openssl x509 -text -noout -in cns-dontesta-it_crt.pem
# Check RSA Key
$ openssl rsa -in cns-dontesta-it_key.pem -check
# Check Modulus
$ openssl x509 -noout -modulus -in cns-dontesta-it_crt.pem | openssl md5
$ openssl rsa -noout -modulus -in cns-dontesta-it_key.pem | openssl md5
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 11
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Una volta che la verifica della coppia di chiavi sia andata a buon fine possiamo
continuare con la creazione del keystore in formato PKCS#12. L’esecuzione del comando
OpenSSL mostrato in Console 4 creerà il keystore sul file cns-dontesta-it.pfx.
Il comando chiederà anche l’immissione della password di export, che potremmo
lasciare in bianco, anche se per motivi di sicurezza è consigliato impostare una strong
password.
Console 4 - Creazione del keystore PKCS#12 via OpenSSL
Possiamo nuovamente utilizzare il tool KeyStore Explorer per verificare questa volta
il contenuto del keystore PKCS#12 (cns-dontesta-it.pfx) appena creato (vedi Figura 4).
Adesso che abbiamo ottenuto il keystore in formato PKCS#12 possiamo andare
avanti con la configurazione di Apache Tomcat e Wildfly al fine di abilitare il protocollo TLS.
In alcuni contesti di PKI interne, è solitamente possibile ricevere direttamente il
keystore in formato PKCS#12, in questo modo evitiamo di dover creare in modo autonomo
il keystore.
openssl pkcs12 -export -out cns-dontesta-it.pfx 
-inkey cns-dontesta-it_key.pem 
-in cns-dontesta-it_crt.pem 
-name cns.dontesta.it
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 12
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Figura 4 - Verifica del keystore PKCS#12 creato con OpenSSL
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 13
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Source 1 - Chiave pubblica del certificato per cns.dontesta.it + Certificate Authority
-----BEGIN CERTIFICATE-----
MIIGVjCCBT6gAwIBAgISBOyOFwrXbyQqxyrV8nZ4AbHAMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODEyMTMwOTIyMzlaFw0x
OTAzMTMwOTIyMzlaMBoxGDAWBgNVBAMTD2Nucy5kb250ZXN0YS5pdDCCAiIwDQYJ
KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJClnH1rY9faesJ5lcxqD3TaWNtUVPpr
OjbQm+5aF9cY1oId8OssFZ6R0wP6rUOOIAZUnAtoolCVnb7+Rku6ER6CV57xQRo3
fHY7UCybJhstgGAOjrLHjIAy5ZANLxrYSG0/hF6HDEiaCfHp5R3mXSPb2MKHTSrf
ZlEHlslGtg8PMUlBp1RJQg7+TIDHdI96Fhek/KvFqWzoMgmTABk/RLjir3bUgoCf
VSxaCpBOq9BJR+1g7dSZhw3zBE9579Nm5yiqKXSYuUWn3BU5kIcBiqxgNhHvd6h2
8eXCY/1GQYh+RMZMrEGxRSX29WboPZVh59vVa2TORXTmiYNHjF+U9qaE0ITAB3JE
DlQS0zL5+ys6UEl0dHH95jikbXYZnRcYcohhDtdIf3Fp0jqIOyrLo9JhKkLFs/td
e/5yLyRjgBYIJJHW43GJvBFDCBHdMBD7aH4em3vTbTvndW/a/R/rotOM35qX0LYv
oKdii/TtcC3gmnzIg4SUAa7ZEOSvHY5N+buLn/PtjX5fd/mkW7zLDWTYhHhMKOHG
gKhg+FpLT+/HV4cmHJxv/rGkoXiQuft4/089S3R9wS+rQ1OMy0d3XVPIgiG61c/7
6M2lRHwz4yW7uEHV1qzSaUbvZ9oPdhOTWxmDkl0q2ZyAsiXjk30HJIPSZ+TfPsMJ
wcfnyXu/WgUdAgMBAAGjggJkMIICYDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw
FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFL3f
gsdEPuNsBIxyFxdl8CD7PaWLMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/z
qOyhMG8GCCsGAQUFBwEBBGMwYTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50
LXgzLmxldHNlbmNyeXB0Lm9yZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50
LXgzLmxldHNlbmNyeXB0Lm9yZy8wGgYDVR0RBBMwEYIPY25zLmRvbnRlc3RhLml0
MEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUH
AgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIIBBAYKKwYBBAHWeQIEAgSB
9QSB8gDwAHYAdH7agzGtMxCRIZzOJU9CcMK//V5CIAjGNzV55hB7zFYAAAFnpxb2
yAAABAMARzBFAiEAjaU16HjNPp4wil+io9t8FMJ+6fB/np683jqZhy0K3P8CICJ1
lF65/BF8KALb8HLw3RXkPeiO6WrG5ueSXrdRRTuHAHYAY/Lbzeg7zCzPC3KEJ1dr
M6SNYXePvXWmOLHHaFRL2I0AAAFnpxb40gAABAMARzBFAiBjYIItroHInYyYvoDY
vidw66PudHEBZEMw6f88qvwrtwIhAJz+LjjBc4ZPuUYnAM9SucSQY9HGde3qv2C9
Y0EMzzN2MA0GCSqGSIb3DQEBCwUAA4IBAQB+pVSxmeAjMsJhG9V2w0m4JD55lEvG
KuKbVm8jauxp+ZTAUCSN5Xw58eNlvsE8HEUjf6J4lqXWSWWddoIId2FS3ZGi6x60
eY1Sy+XUG7Hk6W7fWu09cWZNu3GWd2GfVZQqTYCEeBIYG0xeDNARVmSTFxQlhu2p
ucIxjUOjbb/PhV/IUAhANr8oVlFN0DRY25wpqmsRcCgu9E6olBy50SSD0FvoVP1o
cirNGOwtPGzyMpS3lvRXTGhx8RghXJyE/itDcz1RaBuSRpsj5gbbZnh0I/m1Af9M
w5xFiKPXq/kl6x18i/LlZjsha8QePh59hWv4hKeTtvA8iu0a2Yd/8R1t
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
-----END CERTIFICATE-----
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 14
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Source 2 - Chiave privata per il certificato cns.dontesta.it
-----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY-----
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 15
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
3 . C O N F I G U R A Z I O N E T L S
Le operazioni di configurazione per aggiungere il supporto al protocollo TLS sono
leggermente differenti tra Apache Tomcat e Wildfly; nei prossimi capitoli vedremo quali
sono i file di configurazione da modificare (per Apache Tomcat e per Wildfly) affinché sia
possibile raggiungere il portale Liferay in HTTPS accedendo direttamente agli Application
Server.
3 .1 A B I L I T A Z I O N E T L S S U A P A C H E T O M C A T
Fare in modo che Apache Tomcat risponda in HTTPS è davvero semplice. Occorre
apportare le modifiche a due file di configurazione. La versione di riferimento di Liferay è la
7.1 GA3 che “monta” Apache Tomcat versione 9.0.10 e il documento SSL/TLS Configuration
How-To spiega nel dettaglio come configurare in modo corretto il supporto per SSL/TLS.
I file che richiedono una modifica per aggiungere il supporto al protocollo TLS sono
quelli a seguire, inoltre, dobbiamo copiare il keystore in una locazione del file system a
nostro piacimento che sarà poi referenziata all’interno della configurazione (file server.xml).
• $LIFERAY_HOME/tomcat-9.0.10/conf/server.xml
• $LIFERAY_HOME/tomcat-9.0.10/webapps/ROOT/WEB-INF/web.xml
All’interno della directory $LIFERAY_HOME/tomcat-9.0.10/conf/security
possiamo copiare il keystore in formato PKCS#12. La directory security non esiste e occorre
per cui provvedere alla creazione.
Nel mio caso la variabile d’ambiente $LIFERAY_HOME corrisponde alla directory
$HOME/dev/liferay/liferay-ce-portal-7.1.2-ga3 e il keystore in formato PKCS#12
utilizzato è quello creato al capitolo 2.2 Generare un certificato self-signed contenente un
certificato di tipo self-signed.
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 16
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
È ovviamente possibile utilizzare anche il keystore che abbiamo creato al capitolo
2.3 Come creare un PKCS#12 che conterrà però il certificato TLS rilasciato da una Certificate
Authority riconosciuta.
Console 5 - Creazione della directory che ospiterà il keystore PKCS#12
La configurazione mostrata al Source 3 deve essere aggiunta all’interno del file
server.xml, questa fa in modo che Apache Tomcat “tiri su” il connettore HTTPS/TLS in
ascolto (o in listen) sulla porta 8443.
Source 3 - Abilitazione SSL/TLS sul file server.xml
Il keystore in formato PKCS#12 è specificato dalla chiave di configurazione
keystoreFile, il cui valore è il path relativo del file p12.
Per fare in modo che sia sempre garantita una connessione sicura anche quando
viene inizialmente instaurata una connessione sul connettore HTTP, occorre aggiungere sul
file web.xml la sezione security-constraint (mostrata al Source 4) dove essenzialmente è
specificato che deve essere garantito l’accesso sicuro (CONFIDENTIAL) a tutte le risorse del
portale Liferay.
mkdir $LIFERAY_HOME/tomcat-9.0.10/conf/security
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true"
scheme="https" secure="true"
keystoreFile="conf/security/liferay-portal.keystore.p12" keystorePass="secret"
clientAuth="false" sslProtocol="TLS">
</Connector>
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 17
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Source 4 - Modifica del file web.xml per aggiungere le security constraint
Terminata la configurazione e avviata l’istanza Liferay, il portale sarà raggiungibile
attraverso le seguenti URL:
• http://localhost:8080
• https://localhost:8443
Grazie alla modifica apportata al web.xml, l’invocazione della prima URL indicata in
precedenza provocherà il redirect verso la URL in HTTPS (vedi Figura 5). Tutte le successive
chiamate al portale Liferay saranno instaurate utilizzando il protocollo HTTPS.
Figura 5 - Accesso via HTTP e redirect in HTTPS
<security-constraint>
<web-resource-collection>
<web-resource-name>SecuredLiferay</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
!
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 18
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Dato che abbiamo utilizzato un certificato di tipo self-signed il browser mostrerà il
classico avviso che il certificato presentato dal server non è valido (vedi Figura 6).
Figura 6 - Avviso che il certificato è di tipo self-signed
In ambiente di sviluppo e/o collaudo potremmo pensare di aggiungere sul file di
host le entry per gli FQDN per i quali il certificato è valido, che in questo specifico caso
sono: cns.dontesta.it, cns-lfr-node-01.dontesta.it e cns.lfr-node-02.dontesta.it.
Da questo momento in poi la connessione verso il nostro portale Liferay è protetta
grazie all’attivazione del protocollo HTTPS/TLS, sia l’utente finale sia un eventuale reverse
proxy (vedi Figura 1 - Architettura di riferimento per un ecosistema Liferay) potrà contare su
di una connessione protetta.
!
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 19
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
3 . 2 A B I L I T A Z I O N E T L S S U W I L D F LY
Fare in modo che Wildfly risponda in HTTPS è davvero semplice. Occorre apportare
le modifiche a due file di configurazione. La versione di riferimento di Liferay è la 7.1 GA3
che “monta” Wildfly versione 11.0.0 (WildFly Core 3.0.8.Final) e il documento Enable SSL
spiega nel dettaglio come configurare in modo corretto il supporto per SSL/TLS.
I file che richiedono una modifica per aggiungere il supporto al protocollo TLS sono
quelli a seguire, inoltre, dobbiamo copiare il keystore in una locazione del file system a
nostro piacimento che sarà poi referenziata all’interno della configurazione (file
standalone.xml).
• $LIFERAY_HOME/wildfly-11.0.0/standalone/configuration/standalone.xml
• $LIFERAY_HOME/wildfly-11.0.0/standalone/deployments/ROOT.war/WEB-
INF/web.xml
All’interno della directory $LIFERAY_HOME/wildfly-11.0.0/standalone/
configuration possiamo copiare il keystore in formato PKCS#12.
Nel mio caso la variabile d’ambiente $LIFERAY_HOME corrisponde alla directory
$HOME/dev/liferay/liferay-portal-7.1.2-ga3 e il keystore in formato PKCS#12 utilizzato
è quello creato al capitolo 2.2 Generare un certificato self-signed contenente un certificato di tipo
self-signed.
È ovviamente possibile utilizzare anche il keystore che abbiamo creato al capitolo
2.3 Come creare un PKCS#12 che conterrà però il certificato TLS rilasciato da una Certificate
Authority riconosciuta.
La versione Wildfly distribuita con Liferay ha già abilitato il protocollo HTTPS,
occorre solo revisionare la configurazione del keystore (sul file standalone.xml), così come
fatto anche per Apache Tomcat.
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 2 0
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
Source 5 - Modifica del file standalone.xml per review keystore
Il keystore in formato PKCS#12 è specificato dalla chiave di configurazione path, il
cui valore è il nome del file p12 contenuto all’interno del folder specificato dalla chiave di
configurazione relative-to il cui valore di default corrisponde alla directory
$LIFERAY_HOME/wildfly-11.0.0/standalone/configuration.
Per fare in modo che sia sempre garantita una connessione sicura anche quando
viene inizialmente instaurata una connessione sul connettore HTTP, occorre aggiungere sul
file web.xml la sezione security-constraint (mostrata al Source 6) dove essenzialmente è
specificato che deve essere garantito l’accesso sicuro (CONFIDENTIAL) a tutte le risorse del
portale Liferay.
Source 6 - Modifica del file web.xml per aggiungere le security constraint
Terminata la configurazione e avviata l’istanza Liferay, il portale sarà raggiungibile in
HTTPS.
<security-realm name="ApplicationRealm">
<server-identities>
<ssl>
<keystore path="liferay-portal.keystore.p12"
relative-to="jboss.server.config.dir"
keystore-password="secret"
alias="cns.dontesta.it"
key-password="secret"/>
</ssl>
</server-identities>
...
</security-realm>
<security-constraint>
<web-resource-collection>
<web-resource-name>SecuredLiferay</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 21
W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I
C H I S O N O
Credo nella condivisione della conoscenza come
mezzo per la crescita personale e per questo motivo,
circa dieci anni fa, ho creato il mio blog personale
Antonio Musarra's Blog - https://www.dontesta.it.
Con la voglia ancora di condividere, ho realizzato il
primo progetto editoriale, pubblicando su Amazon
nel 2015 il mio primo eBook, Sviluppo Liferay con
Maven, arrivando all’ultima pubblicazione del 2018
con l'eBook Liferay Portal Security Audit.
Da Luglio 2018 sono entrato a far parte della famiglia di SMC Treviso (https://www.smc.it)
dove ricopro il ruolo di Senior Software Architect e mi occupo in genere di consulenze
specialistiche su progetti che riguardano la piattaforma Liferay, curando in particolare gli
aspetti d'integrazione con altri sistemi. 
Esistono tanti modi per contattarmi, tramite i miei canali social o se
preferite, via email all’indirizzo antonio.musarra@gmail.com o utilizzando
il modulo di contatto sul mio blog.
Canali social
https://twitter.com/antonio_musarra
https://www.linkedin.com/in/amusarra/
https://www.facebook.com/antoniomusarrablog/
https://www.slideshare.net/amusarra
© 2 019 A N T O N I O M U S A R R A ’ S B L O G 2 2

Recommended

Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style by
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleLiferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi StyleAntonio Musarra
1.9K views12 slides
Amazon Lex Chatbot Tutorial | Amazon Lex Chatbot Demo | AWS Certification Tra... by
Amazon Lex Chatbot Tutorial | Amazon Lex Chatbot Demo | AWS Certification Tra...Amazon Lex Chatbot Tutorial | Amazon Lex Chatbot Demo | AWS Certification Tra...
Amazon Lex Chatbot Tutorial | Amazon Lex Chatbot Demo | AWS Certification Tra...Edureka!
706 views17 slides
Vision Pro and visionOS.pptx with GIPHY by
Vision Pro and visionOS.pptx with GIPHYVision Pro and visionOS.pptx with GIPHY
Vision Pro and visionOS.pptx with GIPHYRohanDalmotra
329 views22 slides
Tom Nodine - How AI Helps Us Live Longer.pdf by
Tom Nodine - How AI Helps Us Live Longer.pdfTom Nodine - How AI Helps Us Live Longer.pdf
Tom Nodine - How AI Helps Us Live Longer.pdfSOLTUIONSpeople, THINKubators, THINKathons
285 views20 slides
DevDive_UnleashthFullPotentialofAutomationwithGenAI.pptx by
DevDive_UnleashthFullPotentialofAutomationwithGenAI.pptxDevDive_UnleashthFullPotentialofAutomationwithGenAI.pptx
DevDive_UnleashthFullPotentialofAutomationwithGenAI.pptxRohit Radhakrishnan
1K views26 slides
How a chat bot using dialog flow works by
How a chat bot using dialog flow worksHow a chat bot using dialog flow works
How a chat bot using dialog flow worksCountants
572 views18 slides

More Related Content

What's hot

Bryan Mattimore - AI Ideation and TIE.pdf by
Bryan Mattimore - AI Ideation and TIE.pdfBryan Mattimore - AI Ideation and TIE.pdf
Bryan Mattimore - AI Ideation and TIE.pdfSOLTUIONSpeople, THINKubators, THINKathons
361 views20 slides
UX STRAT Online 2021 Presentation by Sudha Jamthe by
UX STRAT Online 2021 Presentation by Sudha JamtheUX STRAT Online 2021 Presentation by Sudha Jamthe
UX STRAT Online 2021 Presentation by Sudha JamtheUX STRAT
967 views37 slides
OpenAccessGPT by
OpenAccessGPTOpenAccessGPT
OpenAccessGPTFilippo Zanella
41 views39 slides
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap... by
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Applitools
1.7K views114 slides
Jim Lecinski - Capturing the Power of AI in Marketing.pdf by
Jim Lecinski - Capturing the Power of AI in Marketing.pdfJim Lecinski - Capturing the Power of AI in Marketing.pdf
Jim Lecinski - Capturing the Power of AI in Marketing.pdfSOLTUIONSpeople, THINKubators, THINKathons
575 views23 slides
Conversational AI and Chatbot Integrations by
Conversational AI and Chatbot IntegrationsConversational AI and Chatbot Integrations
Conversational AI and Chatbot IntegrationsCristina Vidu
438 views24 slides

What's hot(20)

UX STRAT Online 2021 Presentation by Sudha Jamthe by UX STRAT
UX STRAT Online 2021 Presentation by Sudha JamtheUX STRAT Online 2021 Presentation by Sudha Jamthe
UX STRAT Online 2021 Presentation by Sudha Jamthe
UX STRAT967 views
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap... by Applitools
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Unlocking the Power of ChatGPT and AI in Testing - NextSteps, presented by Ap...
Applitools1.7K views
Conversational AI and Chatbot Integrations by Cristina Vidu
Conversational AI and Chatbot IntegrationsConversational AI and Chatbot Integrations
Conversational AI and Chatbot Integrations
Cristina Vidu438 views
Monitoring Java Applications with Prometheus and Grafana by Justin Reock
Monitoring Java Applications with Prometheus and GrafanaMonitoring Java Applications with Prometheus and Grafana
Monitoring Java Applications with Prometheus and Grafana
Justin Reock665 views
The Ultimate Guide to Implementing Conversational AI by Celine Rayner
The Ultimate Guide to Implementing Conversational AIThe Ultimate Guide to Implementing Conversational AI
The Ultimate Guide to Implementing Conversational AI
Celine Rayner240 views
User Experience Audit by Gridle by Clientjoy.io
User Experience Audit by GridleUser Experience Audit by Gridle
User Experience Audit by Gridle
Clientjoy.io698 views
Session on API auto scaling, monitoring and Log management by pqrs1234
Session on API auto scaling, monitoring and Log managementSession on API auto scaling, monitoring and Log management
Session on API auto scaling, monitoring and Log management
pqrs1234688 views
Laboratorio GXserver by GeneXus
Laboratorio GXserverLaboratorio GXserver
Laboratorio GXserver
GeneXus1.2K views
ChatGPT and the Future of Work - Clark Boyd by Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd27.1K views
Introduction-to-Unity.ppt by Gravityboi
Introduction-to-Unity.pptIntroduction-to-Unity.ppt
Introduction-to-Unity.ppt
Gravityboi157 views
Ai chatbot ppt.pptx by aashnareddy1
Ai chatbot ppt.pptxAi chatbot ppt.pptx
Ai chatbot ppt.pptx
aashnareddy14.9K views
Basics of Generative AI: Models, Tokenization, Embeddings, Text Similarity, V... by Robert McDermott
Basics of Generative AI: Models, Tokenization, Embeddings, Text Similarity, V...Basics of Generative AI: Models, Tokenization, Embeddings, Text Similarity, V...
Basics of Generative AI: Models, Tokenization, Embeddings, Text Similarity, V...
Robert McDermott76 views
UserZoom Education Series - Tips & Tricks: Task Validation by UserZoom
UserZoom Education Series - Tips & Tricks: Task ValidationUserZoom Education Series - Tips & Tricks: Task Validation
UserZoom Education Series - Tips & Tricks: Task Validation
UserZoom548 views
𝐆𝐞𝐧𝐞𝐫𝐚𝐭𝐢𝐯𝐞 𝐀𝐈: 𝐂𝐡𝐚𝐧𝐠𝐢𝐧𝐠 𝐇𝐨𝐰 𝐁𝐮𝐬𝐢𝐧𝐞𝐬𝐬 𝐈𝐧𝐧𝐨𝐯𝐚𝐭𝐞𝐬 𝐚𝐧𝐝 𝐎𝐩𝐞𝐫𝐚𝐭𝐞𝐬 by VINCI Digital - Industrial IoT (IIoT) Strategic Advisory
𝐆𝐞𝐧𝐞𝐫𝐚𝐭𝐢𝐯𝐞 𝐀𝐈: 𝐂𝐡𝐚𝐧𝐠𝐢𝐧𝐠 𝐇𝐨𝐰 𝐁𝐮𝐬𝐢𝐧𝐞𝐬𝐬 𝐈𝐧𝐧𝐨𝐯𝐚𝐭𝐞𝐬 𝐚𝐧𝐝 𝐎𝐩𝐞𝐫𝐚𝐭𝐞𝐬𝐆𝐞𝐧𝐞𝐫𝐚𝐭𝐢𝐯𝐞 𝐀𝐈: 𝐂𝐡𝐚𝐧𝐠𝐢𝐧𝐠 𝐇𝐨𝐰 𝐁𝐮𝐬𝐢𝐧𝐞𝐬𝐬 𝐈𝐧𝐧𝐨𝐯𝐚𝐭𝐞𝐬 𝐚𝐧𝐝 𝐎𝐩𝐞𝐫𝐚𝐭𝐞𝐬
𝐆𝐞𝐧𝐞𝐫𝐚𝐭𝐢𝐯𝐞 𝐀𝐈: 𝐂𝐡𝐚𝐧𝐠𝐢𝐧𝐠 𝐇𝐨𝐰 𝐁𝐮𝐬𝐢𝐧𝐞𝐬𝐬 𝐈𝐧𝐧𝐨𝐯𝐚𝐭𝐞𝐬 𝐚𝐧𝐝 𝐎𝐩𝐞𝐫𝐚𝐭𝐞𝐬

Similar to Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il protocollo SSL/TLS

OpenID Connect 1.0: verifica formale del protocollo in HLPSL by
OpenID Connect 1.0: verifica formale del protocollo in HLPSLOpenID Connect 1.0: verifica formale del protocollo in HLPSL
OpenID Connect 1.0: verifica formale del protocollo in HLPSLVincenzo Calabrò
10 views79 slides
Liferay - Quick Start 1° Episodio by
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioAntonio Musarra
4.5K views15 slides
Sicurezza e resilienza di Architetture a Containers by
Sicurezza e resilienza di Architetture a ContainersSicurezza e resilienza di Architetture a Containers
Sicurezza e resilienza di Architetture a ContainersGianluca Magalotti
58 views34 slides
Vpn Virtual Private Network by
Vpn Virtual Private NetworkVpn Virtual Private Network
Vpn Virtual Private Networkcarmine ricca
1.5K views104 slides
JAX-WS e JAX-RS by
JAX-WS e JAX-RSJAX-WS e JAX-RS
JAX-WS e JAX-RSAntonio Musarra
4.3K views17 slides
Programma il futuro: una scelta open source by
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open sourceMarco Ferrigno
901 views23 slides

Similar to Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il protocollo SSL/TLS(20)

OpenID Connect 1.0: verifica formale del protocollo in HLPSL by Vincenzo Calabrò
OpenID Connect 1.0: verifica formale del protocollo in HLPSLOpenID Connect 1.0: verifica formale del protocollo in HLPSL
OpenID Connect 1.0: verifica formale del protocollo in HLPSL
Liferay - Quick Start 1° Episodio by Antonio Musarra
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
Antonio Musarra4.5K views
Sicurezza e resilienza di Architetture a Containers by Gianluca Magalotti
Sicurezza e resilienza di Architetture a ContainersSicurezza e resilienza di Architetture a Containers
Sicurezza e resilienza di Architetture a Containers
Vpn Virtual Private Network by carmine ricca
Vpn Virtual Private NetworkVpn Virtual Private Network
Vpn Virtual Private Network
carmine ricca1.5K views
Programma il futuro: una scelta open source by Marco Ferrigno
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open source
Marco Ferrigno901 views
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source by Mario Rossano
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open sourceLinux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
Mario Rossano1.1K views
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ... by Par-Tec S.p.A.
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
Par-Tec S.p.A.15 views
Blockchain dove il free software incontra la finanza - novembre 2021 by Alfredo Di Maria
Blockchain   dove il free software incontra la finanza - novembre 2021Blockchain   dove il free software incontra la finanza - novembre 2021
Blockchain dove il free software incontra la finanza - novembre 2021
Alfredo Di Maria92 views
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky by Ionela
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Ionela 185 views
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky by Ionela
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Ionela 98 views
Hacking Access Point con Firmware Open Source by Claudio Cardinali
Hacking Access Point con Firmware Open SourceHacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open Source
Claudio Cardinali951 views
Personal Cloud by NaLUG
Personal CloudPersonal Cloud
Personal Cloud
NaLUG26 views
Programma il futuro : una scelta Open Source by NaLUG
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open Source
NaLUG18 views
Realizzazione di un' interfaccia web per la gestione dei file di log generati... by Marco Furlanetto
Realizzazione di un' interfaccia web per la gestione dei file di log generati...Realizzazione di un' interfaccia web per la gestione dei file di log generati...
Realizzazione di un' interfaccia web per la gestione dei file di log generati...
Marco Furlanetto1.3K views
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo... by Codemotion
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Codemotion392 views
Catasto Rumore Struttura Informatica by confrontamutui
Catasto Rumore Struttura InformaticaCatasto Rumore Struttura Informatica
Catasto Rumore Struttura Informatica
confrontamutui297 views
Progettazione e sviluppo di un software applicativo su un single board computer by Alessandro Mascherin
Progettazione e sviluppo di un software applicativo su un single board computerProgettazione e sviluppo di un software applicativo su un single board computer
Progettazione e sviluppo di un software applicativo su un single board computer
Aruba, Dell e Intel: una partnership d'eccezione by Aruba S.p.A.
Aruba, Dell e Intel: una partnership d'eccezioneAruba, Dell e Intel: una partnership d'eccezione
Aruba, Dell e Intel: una partnership d'eccezione
Aruba S.p.A.717 views

More from Antonio Musarra

Liferay Portal CE 7.4: Come configurare Oracle Database 19c by
Liferay Portal CE 7.4: Come configurare Oracle Database 19cLiferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19cAntonio Musarra
322 views15 slides
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J... by
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Antonio Musarra
590 views61 slides
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c by
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cCome installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cAntonio Musarra
633 views58 slides
Liferay & Salesforce.com by
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.comAntonio Musarra
1.3K views31 slides
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database by
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle DatabaseCome installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle DatabaseAntonio Musarra
2.8K views34 slides
Corso introduttivo di Design Pattern in Java per Elis - 1 by
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1Antonio Musarra
1K views29 slides

More from Antonio Musarra(20)

Liferay Portal CE 7.4: Come configurare Oracle Database 19c by Antonio Musarra
Liferay Portal CE 7.4: Come configurare Oracle Database 19cLiferay Portal CE 7.4: Come configurare Oracle Database 19c
Liferay Portal CE 7.4: Come configurare Oracle Database 19c
Antonio Musarra322 views
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J... by Antonio Musarra
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
Antonio Musarra590 views
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c by Antonio Musarra
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19cCome installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
Antonio Musarra633 views
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database by Antonio Musarra
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle DatabaseCome installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
Antonio Musarra2.8K views
Corso introduttivo di Design Pattern in Java per Elis - 1 by Antonio Musarra
Corso introduttivo di Design Pattern in Java per Elis - 1Corso introduttivo di Design Pattern in Java per Elis - 1
Corso introduttivo di Design Pattern in Java per Elis - 1
Antonio Musarra1K views
SugarCRM Enterprise Development Virtual Appliance by Antonio Musarra
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual Appliance
Antonio Musarra1.2K views
Liferay: Esporre Web Services Custom by Antonio Musarra
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services Custom
Antonio Musarra2.9K views
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo. by Antonio Musarra
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.
Antonio Musarra2.2K views
SugarCRM REST API: Un’applicazione in appena dieci minuti by Antonio Musarra
SugarCRM REST API: Un’applicazione in appena dieci minutiSugarCRM REST API: Un’applicazione in appena dieci minuti
SugarCRM REST API: Un’applicazione in appena dieci minuti
Antonio Musarra1.4K views
How to Build a Java client for SugarCRM by Antonio Musarra
How to Build a Java client for SugarCRMHow to Build a Java client for SugarCRM
How to Build a Java client for SugarCRM
Antonio Musarra4.3K views
Liferay Web Services - Come importare utenti da un foglio Excel by Antonio Musarra
Liferay Web Services - Come importare utenti da un foglio ExcelLiferay Web Services - Come importare utenti da un foglio Excel
Liferay Web Services - Come importare utenti da un foglio Excel
Antonio Musarra2.3K views
Introduzione agli Hooks – Primo Episodio by Antonio Musarra
Introduzione agli Hooks – Primo EpisodioIntroduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo Episodio
Antonio Musarra1.8K views
Introduzione a Liferay Message BUS by Antonio Musarra
Introduzione a Liferay Message BUSIntroduzione a Liferay Message BUS
Introduzione a Liferay Message BUS
Antonio Musarra3.5K views
SugarCRM Web Services: Build a Apache CXF Client by Antonio Musarra
SugarCRM Web Services: Build a Apache CXF ClientSugarCRM Web Services: Build a Apache CXF Client
SugarCRM Web Services: Build a Apache CXF Client
Antonio Musarra1.3K views
Building a Client .NET for SugarCRM by Antonio Musarra
Building a Client .NET for SugarCRMBuilding a Client .NET for SugarCRM
Building a Client .NET for SugarCRM
Antonio Musarra3.8K views
Costruire un client .NET per SugarCRM by Antonio Musarra
Costruire un client .NET per SugarCRMCostruire un client .NET per SugarCRM
Costruire un client .NET per SugarCRM
Antonio Musarra1.5K views

Liferay SSL/TLS Security. Come configurare il bundle Liferay per abilitare il protocollo SSL/TLS

  • 1. LIFERAY DEPLOYMENT GUIDE - I LIFERAY SSL/TLS SECURITY AUTORE ANTONIO MUSARRA PUBBLICATO DA ANTONIO MUSARRA’S BLOG - WWW.DONTESTA.IT Come configurare il bundle di Liferay per funzionare in modalità sicura tramite il protocollo SSL/TLS
  • 2. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Antonio Musarra, Liferay SSL/TLS Security, Come configurare il bundle Liferay per funzionare in modalità sicura tramite il protocollo SSL/TLS. Copertina e impaginazione di Antonio Musarra <antonio.musarra@gmail.com> Prima edizione digitale Giugno 2019 (versione 1.0.0) SERIE: Liferay Deployment Guide (#LFRDEPGUIDE) PROMOSSO DA: Antonio Musarra’s Blog <https://www.dontesta.it> NOTE SUL COPYRIGHT: Tutti i diritti d’autore e connessi sulla presente opera appartengono all’autore Antonio Musarra. Per volontà dell’autore quest’opera è rilasciata nei termini della licenza Creative Commons Attribuzione – Non Commerciale – Condividi allo stesso modo 3.0 Italia (CC BY-NC-SA 3.0 IT) il cui testo integrale è disponibile alla pagina web https://goo.gl/jYtSzA Tutti i marchi riportati appartengo ai legittimi proprietari; marchi di terzi, nomi di prodotti, nomi commerciali, nomi corporativi e società citati possono essere marchi di proprietà dei rispettivi titolari o marchi registrati d’altre società e sono stati utilizzati a puro scopo esplicativo ed a beneficio del possessore, senza alcun fine di violazione dei diritti di copyright vigenti. © 2 019 A N T O N I O M U S A R R A ’ S B L O G
  • 3. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I 1. Introduzione 4............................................................................................... 2. I certificati digitali 7....................................................................................... 2.1 Certificate Keystore 7............................................................................................. 2.2 Generare Il certificato self-signed 8......................................................................... 2.3 Come creare un PKCS#12 11.................................................................................. 3. Configurazione TLS 16................................................................................... 3.1 Abilitazione TLS su Apache Tomcat 16..................................................................... 3.2 Abilitazione TLS su Wildfly 20................................................................................ Chi sono 22....................................................................................................... © 2 019 A N T O N I O M U S A R R A ’ S B L O G
  • 4. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I 1 . I N T R O D U Z I O N E L’aspetto sicurezza nell’ambito dello sviluppo portali ricopre un ruolo importante, spesso sottovalutato e preso sottogamba. Liferay offre OOTB una serie di strumenti1 (framework di sicurezza) e segue le raccomandazioni OWASP al fine di rendere più sicuro2 il portale. In seguito a queste raccomandazioni Liferay protegge il portale contro i più noti tipi di attacco e vulnerabilità di sicurezza. Ad esempio, lo strato di persistenza di Liferay è generato e manutenuto dal Service Builder Framework che impedisce attacchi di tipo SQL Injection usando il framework Hibernate. Per evitare il Cross Site Scripting (XSS) tutti i dati che l’utente invia passano attraverso un processo di escape. È nativa la protezione contro gli attacchi CSRF (Cross-Site Request Forgery), Local File Inclusion, Open Redirects, Uploading di file pericolosi, Content Sniffing, Clickjacking, Path Traversal ed altri dei più comuni attacchi. Fermo restando le linee guide standard seguite da Liferay, il framework di Liferay offre anche gli strumenti necessari per combattere e prevenire le vulnerabilità. Un insieme di API consentono di affrontare le più comuni vulnerabilità. Maggiori approfondimenti riguardo gli aspetti legati alla sicurezza di Liferay sono disponibili su LDN :3 - Securing Liferay Portal (http://bit.ly/2Gy4n38) - Application Security (http://bit.ly/2V3JSP1) - Service Security Layers (http://bit.ly/2SHnnCA) Out of the box.1 L'Open Web Application Security Project (chiamato semplicemente OWASP), è un progetto open-source per la sicurezza2 delle applicazioni. L'OWASP offre anche linee guida con consigli sulla creazione di applicazioni Internet sicure, e indicazioni per i test a cui andrebbero sottoposte. Liferay Developer Network (https://dev.liferay.com) è il portale di riferimento per l’accesso alla documentazione,3 marketplace e community di Liferay. © 2 019 A N T O N I O M U S A R R A ’ S B L O G 4
  • 5. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I In questo eBook sarà affrontato un argomento legato alla sicurezza che riguarda il come rendere sicure le connessioni HTTP attraverso il protocollo SSL/TLS (da ora in avanti4 TLS). Questo aspetto di sicurezza non è strettamente legato a Liferay, infatti non esiste nessun riferimento sulla LDN, riguarda invece l’infrastruttura dove il portale Liferay è collocato. Un ecosistema Liferay è in genere in linea con l'architettura di riferimento rappresentata in figura 1, che appare complessa ma fornisce alti livelli di tolleranza agli errori e flessibilità. Cerchiamo di focalizzare la nostra attenzione sui due livelli: Web e Application. Il livello Web e il livello Application sono in genere connessi attraverso il protocollo (preferenziale) AJP o il protocollo HTTP. Ogni Web Server Apache che fa parte del livello5 Web funge da Software Load Balancer verso il livello Application. I connettori più comunemente utilizzati dal Web Server Apache sono i moduli: mod_jk (http://tomcat.apache.org/connectors-doc/), mod_proxy (https://httpd.apache.org/ docs/2.4/mod/mod_proxy.html) e mod_proxy_ajp (https://httpd.apache.org/docs/2.4/mod/ mod_proxy_ajp.html). Figura 1 - Architettura di riferimento per un ecosistema Liferay Transport Layer Security (TLS) e il suo predecessore Secure Sockets Layer (SSL) sono4 dei protocolli crittografici di presentazione (sesto livello del modello ISO/OSI per reti di calcolatori) usati nel campo delle telecomunicazioni e dell'informatica che permettono una comunicazione sicura dalla sorgente al destinatario (end-to- end) su reti TCP/IP fornendo autenticazione, integrità dei dati e confidenzialità operando al di sopra del livello di trasporto. Apache JServ Protocol (AJP) è un protocollo binario che può inoltrare richieste in ingresso da un Web Server a un5 Application Server che si trova dietro il Web Server. © 2 019 A N T O N I O M U S A R R A ’ S B L O G 5
  • 6. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Il livello Application può essere costituito da uno o più server Liferay. Liferay può essere installato su alcuni dei più noti Application Server , nello specifico, vedremo come6 configurare i due più comuni bundle di Liferay con l’obiettivo di abilitare il protocollo HTTPS. La distribuzione basata su Apache Tomcat e la distribuzione basata su JBoss7 WildFly ; entrambe le distribuzioni possono essere scaricate da Sourceforge.net.8 La versione Liferay di riferimento è la Community Edition 7.1 GA3. In generale i contenuti di questo articolo sono validi anche per versioni precedenti (dalla 6.2 Community Edition). - Liferay CE Portal 7.1.2 GA3 Wildfly - Liferay CE Portal 7.1.2 GA3 Tomcat Il percorso che seguiremo nel corso di questo eBook per raggiungere il nostro obiettivo, sarà così organizzato: - Gestione dei certificati - Configurazione del protocollo TLS - Configurazione del portale Liferay 
 Fare riferimento a Liferay Digital Experience Platform 7.1 Compatibility Matrix https://web.liferay.com/documents/6 14/21598941/Liferay+DXP+7.1+Compatibility+Matrix/9f9c917a-c620-427b-865d-5c4b4a00be85 La versione di Apache Tomcat distribuita con Liferay 7.1 GA3 è la 9.0.107 La versione di Wildfly distribuita con Liferay 7.1. GA3 è la 11.0.08 © 2 019 A N T O N I O M U S A R R A ’ S B L O G 6
  • 7. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I 2 . I C E R T I F I C A T I D I G I T A L I Prima di procedere con l’operazione di configurazione e abilitazione del protocollo TLS su Apache Tomcat o Wildfly, occorre ottenere un certificato TLS. I certificati TLS sono file che includono una chiave di cifratura associata ai dettagli di una specifica autorità di certificazione o Certification Authority (CA). Assumendo l’affidabilità della CA che rilascia il certificato, possiamo essere sicuri del fatto che tale certificato garantisca la sicurezza durante lo scambio dati in rete per mezzo di tale chiave. Sono possibili diverse opzioni per ottenere un certificato TLS, sia gratuite sia a pagamento. GoGetSSL e SSLS consentono di ottenere certificati (di tipo Domain Validation )9 a basso costo. Al contrario, Let’s Encrypt è un servizio che permette di ottenere certificati TLS gratuiti. In ambienti di sviluppo e collaudo è in genere possibile fare a meno di certificati TLS rilasciati da CA riconosciute e generare in modo autonomo i cosiddetti self-signed certificate .10 2 .1 C E R T I F I C A T E K E Y S T O R E Il certificate keystore (o semplicemente keystore) è un database che contiene le chiavi private e le relative catene di certificazione X.509 (o certificate chains) che autenticano le corrispondenti chiavi pubbliche. Il keystore gestisce anche le entità fidate (o trusted entities). Apache Tomcat, JBoss e Wildfly supportano due principali formati di keystore. • JKS: Java Key Store è l’implementazione standard del keystore fornita da Sun Microsystems basata su file, quest’ultimo è in un formato proprietario denominato JKS. Per maggiori informazioni a riguardo consultare Tools for Java Platform Security; • PKCS#12: è un formato binario per la memorizzazione del certificato del server, di eventuali certificati intermedi e della chiave privata in un singolo file Si tratta di un certificato digitale X.509 tipicamente utilizzato per Transport Layer Security (TLS) in cui il nome di9 dominio del richiedente è stato convalidato provando un certo tipo di controllo su un dominio DNS Si tratta di un certificato TLS auto firmato con la propria chiave privata10 © 2 019 A N T O N I O M U S A R R A ’ S B L O G 7
  • 8. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I crittografato. Questi file ha generalmente l’estensioni .pfx e .p12. Il PKCS#12 è il formato di keystore consigliato. Prima di poter configurare Apache Tomcat o Wildfly, il nostro obiettivo è quello di ottenere e/o creare il keystore, preferibilmente in formato PKCS#12. 2 . 2 G E N E R A R E I L C E R T I F I C A T O S E L F - S I G N E D Per ambienti di sviluppo o collaudo possiamo quindi generare un certificato di tipo self-signed utilizzando il tool keytool incluso nella JRE e JDK . Supponendo di voler11 12 13 generare un certificato per l’FQDN cns.dontesta.it, basta eseguire il keytool come indicato a seguire (Console 1). Console 1 - Creazione del keystore in formato PKCS#12 Il comando mostrato in Console 1 crea il keystore liferay-portal.keystore in formato PKCS#12 con le seguenti caratteristiche principali: • Algoritmo della chiave RSA con dimensione di 4096 bit; • Validità di 365 giorni; • Distinguished Name (o DN) cn=cns.dontesta.it,o=Antonio Musarra's Blog,ou=IT Labs,c=IT,l=Rome; • SAN (Subject Alternative Name) per due nodi liferay con FQDN cns-lfr- node-01.dontesta.it e cns-lfr-node-02.dontesta.it. keytool -genkey -v -keyalg RSA -keystore liferay-portal.keystore.p12 -storepass secret -keypass secret -storetype pkcs12 -keysize 4096 -validity 365 -alias cns.dontesta.it -dname "cn=cns.dontesta.it,o=Antonio Musarra's Blog,ou=IT Labs,c=IT,l=Rome" -ext SAN=DNS:cns-lfr-node-01.dontesta.it,DNS:cns-lfr-node-02.dontesta.it Il keytool è distribuito con la JRE e JDK. Viene utilizzato per creare nuove chiavi, importare certificati digitali, esportare11 chiavi esistenti e interagire con il sistema di gestione delle chiavi. Java Runtime Environment12 Java Development Kit13 © 2 019 A N T O N I O M U S A R R A ’ S B L O G 8
  • 9. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Console 2 - Output esecuzione comando keytool Utilizzando il tool KeyStore Explorer è possibile visualizzare attraverso una14 comoda GUI tutte le informazioni di dettaglio circa il contenuto del keystore appena creato (vedi Console 1). Figura 2 - Dettaglio certificato cns.dontesta.it Generazione in corso di una coppia di chiavi RSA da 4.096 bit e di un certificato autofirmato (SHA256withRSA) con una validità di 365 giorni per: CN=cns.dontesta.it, O=Antonio Musarra's Blog, OU=IT Labs, C=IT, L=Rome [Memorizzazione di liferay-portal.keystore] in corso È un tool open source che offre tutte le funzionalità offerte dal keytool e dal jarsigner ma accessibili attraverso una14 comodissima GUI. © 2 019 A N T O N I O M U S A R R A ’ S B L O G 9
  • 10. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Figura 3 - Visualizzazione dell’estensione del certificato © 2 019 A N T O N I O M U S A R R A ’ S B L O G 1 0
  • 11. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I 2 . 3 C O M E C R E A R E U N P K C S # 12 Nel caso in cui abbiate fatto la richiesta di un certificato TLS presso una delle Certificate Authority riconosciute, dovreste ricevere almeno due file, uno contenente la chiave privata (RSA Private Key) e uno contenente il certificato o la public key (chiave pubblica). Solitamente il file della public key contiene anche il certificato della Certificate Authority che ha rilasciato il certificato. In genere questi file sono in formato PEM - Privacy-Enhanced Mail (raramente in formato DER). Per l’esempio a seguire ho fatto la richiesta di un certificato TLS per il dominio cns.dontesta.it utilizzando il servizio gratuito di ZeroSSL. Il certificato rilasciato ha una validità di 90 giorni e firmato da Let's Encrypt. Personalmente utilizzo questo servizio quando ho necessità di ottenere velocemente un certificato TLS a scopo di demo. Con in mano la private key e la public key siamo nella condizione di poter generare il certificato “completo” in formato PKCS#12 utilizzando il tool OpenSSL. A seguire (vedi Source 1 e Source 2) è mostrato il contenuto delle due chiavi (privata e pubblica) per cns.dontesta.it. Quella pubblica include anche il certificato della Certificate Authority che ha rilasciato il certificato. Prima di procedere con la creazione del keystore in formato PKCS#12, facciamo una verifica delle due chiavi e utilizziamo OpenSSL. Console 3 - Verifica della chiave pubblica e chiave privata Il primo comando estrae le informazioni sulla chiave pubblica e sul certificato della Certificate Authority. Il secondo comando verifica che la chiave privata sia valida, mentre gli ultimi due comandi verificano che la coppia di chiavi siano corrispondenti, l’output di questi due comandi devono corrispondere. # Check Public Key $ openssl x509 -text -noout -in cns-dontesta-it_crt.pem # Check RSA Key $ openssl rsa -in cns-dontesta-it_key.pem -check # Check Modulus $ openssl x509 -noout -modulus -in cns-dontesta-it_crt.pem | openssl md5 $ openssl rsa -noout -modulus -in cns-dontesta-it_key.pem | openssl md5 © 2 019 A N T O N I O M U S A R R A ’ S B L O G 11
  • 12. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Una volta che la verifica della coppia di chiavi sia andata a buon fine possiamo continuare con la creazione del keystore in formato PKCS#12. L’esecuzione del comando OpenSSL mostrato in Console 4 creerà il keystore sul file cns-dontesta-it.pfx. Il comando chiederà anche l’immissione della password di export, che potremmo lasciare in bianco, anche se per motivi di sicurezza è consigliato impostare una strong password. Console 4 - Creazione del keystore PKCS#12 via OpenSSL Possiamo nuovamente utilizzare il tool KeyStore Explorer per verificare questa volta il contenuto del keystore PKCS#12 (cns-dontesta-it.pfx) appena creato (vedi Figura 4). Adesso che abbiamo ottenuto il keystore in formato PKCS#12 possiamo andare avanti con la configurazione di Apache Tomcat e Wildfly al fine di abilitare il protocollo TLS. In alcuni contesti di PKI interne, è solitamente possibile ricevere direttamente il keystore in formato PKCS#12, in questo modo evitiamo di dover creare in modo autonomo il keystore. openssl pkcs12 -export -out cns-dontesta-it.pfx -inkey cns-dontesta-it_key.pem -in cns-dontesta-it_crt.pem -name cns.dontesta.it © 2 019 A N T O N I O M U S A R R A ’ S B L O G 12
  • 13. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Figura 4 - Verifica del keystore PKCS#12 creato con OpenSSL © 2 019 A N T O N I O M U S A R R A ’ S B L O G 13
  • 14. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Source 1 - Chiave pubblica del certificato per cns.dontesta.it + Certificate Authority -----BEGIN CERTIFICATE----- MIIGVjCCBT6gAwIBAgISBOyOFwrXbyQqxyrV8nZ4AbHAMA0GCSqGSIb3DQEBCwUA MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xODEyMTMwOTIyMzlaFw0x OTAzMTMwOTIyMzlaMBoxGDAWBgNVBAMTD2Nucy5kb250ZXN0YS5pdDCCAiIwDQYJ KoZIhvcNAQEBBQADggIPADCCAgoCggIBAJClnH1rY9faesJ5lcxqD3TaWNtUVPpr OjbQm+5aF9cY1oId8OssFZ6R0wP6rUOOIAZUnAtoolCVnb7+Rku6ER6CV57xQRo3 fHY7UCybJhstgGAOjrLHjIAy5ZANLxrYSG0/hF6HDEiaCfHp5R3mXSPb2MKHTSrf ZlEHlslGtg8PMUlBp1RJQg7+TIDHdI96Fhek/KvFqWzoMgmTABk/RLjir3bUgoCf VSxaCpBOq9BJR+1g7dSZhw3zBE9579Nm5yiqKXSYuUWn3BU5kIcBiqxgNhHvd6h2 8eXCY/1GQYh+RMZMrEGxRSX29WboPZVh59vVa2TORXTmiYNHjF+U9qaE0ITAB3JE DlQS0zL5+ys6UEl0dHH95jikbXYZnRcYcohhDtdIf3Fp0jqIOyrLo9JhKkLFs/td e/5yLyRjgBYIJJHW43GJvBFDCBHdMBD7aH4em3vTbTvndW/a/R/rotOM35qX0LYv oKdii/TtcC3gmnzIg4SUAa7ZEOSvHY5N+buLn/PtjX5fd/mkW7zLDWTYhHhMKOHG gKhg+FpLT+/HV4cmHJxv/rGkoXiQuft4/089S3R9wS+rQ1OMy0d3XVPIgiG61c/7 6M2lRHwz4yW7uEHV1qzSaUbvZ9oPdhOTWxmDkl0q2ZyAsiXjk30HJIPSZ+TfPsMJ wcfnyXu/WgUdAgMBAAGjggJkMIICYDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYw FAYIKwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFL3f gsdEPuNsBIxyFxdl8CD7PaWLMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/z qOyhMG8GCCsGAQUFBwEBBGMwYTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50 LXgzLmxldHNlbmNyeXB0Lm9yZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50 LXgzLmxldHNlbmNyeXB0Lm9yZy8wGgYDVR0RBBMwEYIPY25zLmRvbnRlc3RhLml0 MEwGA1UdIARFMEMwCAYGZ4EMAQIBMDcGCysGAQQBgt8TAQEBMCgwJgYIKwYBBQUH AgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIIBBAYKKwYBBAHWeQIEAgSB 9QSB8gDwAHYAdH7agzGtMxCRIZzOJU9CcMK//V5CIAjGNzV55hB7zFYAAAFnpxb2 yAAABAMARzBFAiEAjaU16HjNPp4wil+io9t8FMJ+6fB/np683jqZhy0K3P8CICJ1 lF65/BF8KALb8HLw3RXkPeiO6WrG5ueSXrdRRTuHAHYAY/Lbzeg7zCzPC3KEJ1dr M6SNYXePvXWmOLHHaFRL2I0AAAFnpxb40gAABAMARzBFAiBjYIItroHInYyYvoDY vidw66PudHEBZEMw6f88qvwrtwIhAJz+LjjBc4ZPuUYnAM9SucSQY9HGde3qv2C9 Y0EMzzN2MA0GCSqGSIb3DQEBCwUAA4IBAQB+pVSxmeAjMsJhG9V2w0m4JD55lEvG KuKbVm8jauxp+ZTAUCSN5Xw58eNlvsE8HEUjf6J4lqXWSWWddoIId2FS3ZGi6x60 eY1Sy+XUG7Hk6W7fWu09cWZNu3GWd2GfVZQqTYCEeBIYG0xeDNARVmSTFxQlhu2p ucIxjUOjbb/PhV/IUAhANr8oVlFN0DRY25wpqmsRcCgu9E6olBy50SSD0FvoVP1o cirNGOwtPGzyMpS3lvRXTGhx8RghXJyE/itDcz1RaBuSRpsj5gbbZnh0I/m1Af9M w5xFiKPXq/kl6x18i/LlZjsha8QePh59hWv4hKeTtvA8iu0a2Yd/8R1t -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/ MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8 SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0 Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj /PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/ wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6 KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg== -----END CERTIFICATE----- © 2 019 A N T O N I O M U S A R R A ’ S B L O G 14
  • 15. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Source 2 - Chiave privata per il certificato cns.dontesta.it -----BEGIN RSA PRIVATE KEY----- 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 -----END RSA PRIVATE KEY----- © 2 019 A N T O N I O M U S A R R A ’ S B L O G 15
  • 16. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I 3 . C O N F I G U R A Z I O N E T L S Le operazioni di configurazione per aggiungere il supporto al protocollo TLS sono leggermente differenti tra Apache Tomcat e Wildfly; nei prossimi capitoli vedremo quali sono i file di configurazione da modificare (per Apache Tomcat e per Wildfly) affinché sia possibile raggiungere il portale Liferay in HTTPS accedendo direttamente agli Application Server. 3 .1 A B I L I T A Z I O N E T L S S U A P A C H E T O M C A T Fare in modo che Apache Tomcat risponda in HTTPS è davvero semplice. Occorre apportare le modifiche a due file di configurazione. La versione di riferimento di Liferay è la 7.1 GA3 che “monta” Apache Tomcat versione 9.0.10 e il documento SSL/TLS Configuration How-To spiega nel dettaglio come configurare in modo corretto il supporto per SSL/TLS. I file che richiedono una modifica per aggiungere il supporto al protocollo TLS sono quelli a seguire, inoltre, dobbiamo copiare il keystore in una locazione del file system a nostro piacimento che sarà poi referenziata all’interno della configurazione (file server.xml). • $LIFERAY_HOME/tomcat-9.0.10/conf/server.xml • $LIFERAY_HOME/tomcat-9.0.10/webapps/ROOT/WEB-INF/web.xml All’interno della directory $LIFERAY_HOME/tomcat-9.0.10/conf/security possiamo copiare il keystore in formato PKCS#12. La directory security non esiste e occorre per cui provvedere alla creazione. Nel mio caso la variabile d’ambiente $LIFERAY_HOME corrisponde alla directory $HOME/dev/liferay/liferay-ce-portal-7.1.2-ga3 e il keystore in formato PKCS#12 utilizzato è quello creato al capitolo 2.2 Generare un certificato self-signed contenente un certificato di tipo self-signed. © 2 019 A N T O N I O M U S A R R A ’ S B L O G 16
  • 17. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I È ovviamente possibile utilizzare anche il keystore che abbiamo creato al capitolo 2.3 Come creare un PKCS#12 che conterrà però il certificato TLS rilasciato da una Certificate Authority riconosciuta. Console 5 - Creazione della directory che ospiterà il keystore PKCS#12 La configurazione mostrata al Source 3 deve essere aggiunta all’interno del file server.xml, questa fa in modo che Apache Tomcat “tiri su” il connettore HTTPS/TLS in ascolto (o in listen) sulla porta 8443. Source 3 - Abilitazione SSL/TLS sul file server.xml Il keystore in formato PKCS#12 è specificato dalla chiave di configurazione keystoreFile, il cui valore è il path relativo del file p12. Per fare in modo che sia sempre garantita una connessione sicura anche quando viene inizialmente instaurata una connessione sul connettore HTTP, occorre aggiungere sul file web.xml la sezione security-constraint (mostrata al Source 4) dove essenzialmente è specificato che deve essere garantito l’accesso sicuro (CONFIDENTIAL) a tutte le risorse del portale Liferay. mkdir $LIFERAY_HOME/tomcat-9.0.10/conf/security <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" keystoreFile="conf/security/liferay-portal.keystore.p12" keystorePass="secret" clientAuth="false" sslProtocol="TLS"> </Connector> © 2 019 A N T O N I O M U S A R R A ’ S B L O G 17
  • 18. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Source 4 - Modifica del file web.xml per aggiungere le security constraint Terminata la configurazione e avviata l’istanza Liferay, il portale sarà raggiungibile attraverso le seguenti URL: • http://localhost:8080 • https://localhost:8443 Grazie alla modifica apportata al web.xml, l’invocazione della prima URL indicata in precedenza provocherà il redirect verso la URL in HTTPS (vedi Figura 5). Tutte le successive chiamate al portale Liferay saranno instaurate utilizzando il protocollo HTTPS. Figura 5 - Accesso via HTTP e redirect in HTTPS <security-constraint> <web-resource-collection> <web-resource-name>SecuredLiferay</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> ! © 2 019 A N T O N I O M U S A R R A ’ S B L O G 18
  • 19. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Dato che abbiamo utilizzato un certificato di tipo self-signed il browser mostrerà il classico avviso che il certificato presentato dal server non è valido (vedi Figura 6). Figura 6 - Avviso che il certificato è di tipo self-signed In ambiente di sviluppo e/o collaudo potremmo pensare di aggiungere sul file di host le entry per gli FQDN per i quali il certificato è valido, che in questo specifico caso sono: cns.dontesta.it, cns-lfr-node-01.dontesta.it e cns.lfr-node-02.dontesta.it. Da questo momento in poi la connessione verso il nostro portale Liferay è protetta grazie all’attivazione del protocollo HTTPS/TLS, sia l’utente finale sia un eventuale reverse proxy (vedi Figura 1 - Architettura di riferimento per un ecosistema Liferay) potrà contare su di una connessione protetta. ! © 2 019 A N T O N I O M U S A R R A ’ S B L O G 19
  • 20. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I 3 . 2 A B I L I T A Z I O N E T L S S U W I L D F LY Fare in modo che Wildfly risponda in HTTPS è davvero semplice. Occorre apportare le modifiche a due file di configurazione. La versione di riferimento di Liferay è la 7.1 GA3 che “monta” Wildfly versione 11.0.0 (WildFly Core 3.0.8.Final) e il documento Enable SSL spiega nel dettaglio come configurare in modo corretto il supporto per SSL/TLS. I file che richiedono una modifica per aggiungere il supporto al protocollo TLS sono quelli a seguire, inoltre, dobbiamo copiare il keystore in una locazione del file system a nostro piacimento che sarà poi referenziata all’interno della configurazione (file standalone.xml). • $LIFERAY_HOME/wildfly-11.0.0/standalone/configuration/standalone.xml • $LIFERAY_HOME/wildfly-11.0.0/standalone/deployments/ROOT.war/WEB- INF/web.xml All’interno della directory $LIFERAY_HOME/wildfly-11.0.0/standalone/ configuration possiamo copiare il keystore in formato PKCS#12. Nel mio caso la variabile d’ambiente $LIFERAY_HOME corrisponde alla directory $HOME/dev/liferay/liferay-portal-7.1.2-ga3 e il keystore in formato PKCS#12 utilizzato è quello creato al capitolo 2.2 Generare un certificato self-signed contenente un certificato di tipo self-signed. È ovviamente possibile utilizzare anche il keystore che abbiamo creato al capitolo 2.3 Come creare un PKCS#12 che conterrà però il certificato TLS rilasciato da una Certificate Authority riconosciuta. La versione Wildfly distribuita con Liferay ha già abilitato il protocollo HTTPS, occorre solo revisionare la configurazione del keystore (sul file standalone.xml), così come fatto anche per Apache Tomcat. © 2 019 A N T O N I O M U S A R R A ’ S B L O G 2 0
  • 21. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I Source 5 - Modifica del file standalone.xml per review keystore Il keystore in formato PKCS#12 è specificato dalla chiave di configurazione path, il cui valore è il nome del file p12 contenuto all’interno del folder specificato dalla chiave di configurazione relative-to il cui valore di default corrisponde alla directory $LIFERAY_HOME/wildfly-11.0.0/standalone/configuration. Per fare in modo che sia sempre garantita una connessione sicura anche quando viene inizialmente instaurata una connessione sul connettore HTTP, occorre aggiungere sul file web.xml la sezione security-constraint (mostrata al Source 6) dove essenzialmente è specificato che deve essere garantito l’accesso sicuro (CONFIDENTIAL) a tutte le risorse del portale Liferay. Source 6 - Modifica del file web.xml per aggiungere le security constraint Terminata la configurazione e avviata l’istanza Liferay, il portale sarà raggiungibile in HTTPS. <security-realm name="ApplicationRealm"> <server-identities> <ssl> <keystore path="liferay-portal.keystore.p12" relative-to="jboss.server.config.dir" keystore-password="secret" alias="cns.dontesta.it" key-password="secret"/> </ssl> </server-identities> ... </security-realm> <security-constraint> <web-resource-collection> <web-resource-name>SecuredLiferay</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint> © 2 019 A N T O N I O M U S A R R A ’ S B L O G 21
  • 22. W W W . D O N T E S T A . I T L I F E R AY D E P L OY M E N T G U I D E - I C H I S O N O Credo nella condivisione della conoscenza come mezzo per la crescita personale e per questo motivo, circa dieci anni fa, ho creato il mio blog personale Antonio Musarra's Blog - https://www.dontesta.it. Con la voglia ancora di condividere, ho realizzato il primo progetto editoriale, pubblicando su Amazon nel 2015 il mio primo eBook, Sviluppo Liferay con Maven, arrivando all’ultima pubblicazione del 2018 con l'eBook Liferay Portal Security Audit. Da Luglio 2018 sono entrato a far parte della famiglia di SMC Treviso (https://www.smc.it) dove ricopro il ruolo di Senior Software Architect e mi occupo in genere di consulenze specialistiche su progetti che riguardano la piattaforma Liferay, curando in particolare gli aspetti d'integrazione con altri sistemi.  Esistono tanti modi per contattarmi, tramite i miei canali social o se preferite, via email all’indirizzo antonio.musarra@gmail.com o utilizzando il modulo di contatto sul mio blog. Canali social https://twitter.com/antonio_musarra https://www.linkedin.com/in/amusarra/ https://www.facebook.com/antoniomusarrablog/ https://www.slideshare.net/amusarra © 2 019 A N T O N I O M U S A R R A ’ S B L O G 2 2