SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

MEKANIKA REKAYASA 3 (METODE DALIL 3 MOMEN DAN METODE CROSS)
MEKANIKA REKAYASA 3 (METODE DALIL 3 MOMEN DAN METODE CROSS)MEKANIKA REKAYASA 3 (METODE DALIL 3 MOMEN DAN METODE CROSS)
MEKANIKA REKAYASA 3 (METODE DALIL 3 MOMEN DAN METODE CROSS)Sumarno Feriyal
 
MODUL AJAR ADMINISTRASI INFRASTRUKTUR JARINGAN - SWITCHING & ROUTING (PPG TKI...
MODUL AJAR ADMINISTRASI INFRASTRUKTUR JARINGAN - SWITCHING & ROUTING (PPG TKI...MODUL AJAR ADMINISTRASI INFRASTRUKTUR JARINGAN - SWITCHING & ROUTING (PPG TKI...
MODUL AJAR ADMINISTRASI INFRASTRUKTUR JARINGAN - SWITCHING & ROUTING (PPG TKI...Walid Umar
 
Gaya horizontal pada tiang pancang
Gaya horizontal pada tiang pancangGaya horizontal pada tiang pancang
Gaya horizontal pada tiang pancangNurul Angreliany
 
PERENCANAAN GEOMETRIK JALAN (TUGAS S1 UNTAG SEMARANG)
PERENCANAAN GEOMETRIK JALAN (TUGAS S1 UNTAG SEMARANG)PERENCANAAN GEOMETRIK JALAN (TUGAS S1 UNTAG SEMARANG)
PERENCANAAN GEOMETRIK JALAN (TUGAS S1 UNTAG SEMARANG)afifsalim
 
POWERPOINT DASAR-DASAR REKAYASA TRANSPORTASI.pptx
POWERPOINT DASAR-DASAR REKAYASA TRANSPORTASI.pptxPOWERPOINT DASAR-DASAR REKAYASA TRANSPORTASI.pptx
POWERPOINT DASAR-DASAR REKAYASA TRANSPORTASI.pptxAdriansyahFathurRahm
 
Merubah Satuan Ukur Google Earth Menjadi Meter, Kilometer Dengan Perlihatkan ...
Merubah Satuan Ukur Google Earth Menjadi Meter, Kilometer Dengan Perlihatkan ...Merubah Satuan Ukur Google Earth Menjadi Meter, Kilometer Dengan Perlihatkan ...
Merubah Satuan Ukur Google Earth Menjadi Meter, Kilometer Dengan Perlihatkan ...Rusdianto
 
2007 11-pekerjaan bangunan pelengkap dan perlengkapan jalan
2007 11-pekerjaan bangunan pelengkap dan perlengkapan jalan2007 11-pekerjaan bangunan pelengkap dan perlengkapan jalan
2007 11-pekerjaan bangunan pelengkap dan perlengkapan jalanahmad fuadi
 
Shortcut Perintah Auto Cad
Shortcut Perintah Auto CadShortcut Perintah Auto Cad
Shortcut Perintah Auto CadYahya M Aji
 
87280501 perencanaan-sistem-drainase-130227011440-phpapp01
87280501 perencanaan-sistem-drainase-130227011440-phpapp0187280501 perencanaan-sistem-drainase-130227011440-phpapp01
87280501 perencanaan-sistem-drainase-130227011440-phpapp01Yosep Kristiawan
 
1. Kriteria Desain dan Spesifikasi Teknis Jembatan Gantung Pejalan Kaki Tipe ...
1. Kriteria Desain dan Spesifikasi Teknis Jembatan Gantung Pejalan Kaki Tipe ...1. Kriteria Desain dan Spesifikasi Teknis Jembatan Gantung Pejalan Kaki Tipe ...
1. Kriteria Desain dan Spesifikasi Teknis Jembatan Gantung Pejalan Kaki Tipe ...ssuser6a72f6
 
Spesifikasi teknis jembatan
Spesifikasi teknis jembatanSpesifikasi teknis jembatan
Spesifikasi teknis jembatanDwie Cahyono
 
perancangan geometrik jalan
perancangan geometrik jalanperancangan geometrik jalan
perancangan geometrik jalanDeri
 
Modul Perancangan Jalan 2021-2022.pdf
Modul Perancangan Jalan 2021-2022.pdfModul Perancangan Jalan 2021-2022.pdf
Modul Perancangan Jalan 2021-2022.pdfFajarRama5
 
penggunaan geosintetik untuk konstruksi jalan
penggunaan geosintetik untuk konstruksi jalanpenggunaan geosintetik untuk konstruksi jalan
penggunaan geosintetik untuk konstruksi jalanrobert tuba
 
Sewage treatment plant design calculation
Sewage treatment plant design calculationSewage treatment plant design calculation
Sewage treatment plant design calculationSharifah Ain
 
Soal uas mk perancangan geometrik jalan
Soal uas mk perancangan geometrik jalanSoal uas mk perancangan geometrik jalan
Soal uas mk perancangan geometrik jalanRizky Faisal
 
Desain Perkerasan Jalan | Program Studi D3 Teknik Sipil Transportasi UNS 2016
Desain Perkerasan Jalan | Program Studi D3 Teknik Sipil Transportasi UNS 2016Desain Perkerasan Jalan | Program Studi D3 Teknik Sipil Transportasi UNS 2016
Desain Perkerasan Jalan | Program Studi D3 Teknik Sipil Transportasi UNS 2016Bimo Radifan A
 
Standard Geometrik Jalan Tol
Standard Geometrik Jalan TolStandard Geometrik Jalan Tol
Standard Geometrik Jalan Tolfaisal_fafa
 
PPT TKP M1-KB4 PERAWATAN DAN PEMELIHARAAN
PPT TKP M1-KB4 PERAWATAN DAN PEMELIHARAANPPT TKP M1-KB4 PERAWATAN DAN PEMELIHARAAN
PPT TKP M1-KB4 PERAWATAN DAN PEMELIHARAANPPGHybrid1
 

Was ist angesagt? (20)

MEKANIKA REKAYASA 3 (METODE DALIL 3 MOMEN DAN METODE CROSS)
MEKANIKA REKAYASA 3 (METODE DALIL 3 MOMEN DAN METODE CROSS)MEKANIKA REKAYASA 3 (METODE DALIL 3 MOMEN DAN METODE CROSS)
MEKANIKA REKAYASA 3 (METODE DALIL 3 MOMEN DAN METODE CROSS)
 
MODUL AJAR ADMINISTRASI INFRASTRUKTUR JARINGAN - SWITCHING & ROUTING (PPG TKI...
MODUL AJAR ADMINISTRASI INFRASTRUKTUR JARINGAN - SWITCHING & ROUTING (PPG TKI...MODUL AJAR ADMINISTRASI INFRASTRUKTUR JARINGAN - SWITCHING & ROUTING (PPG TKI...
MODUL AJAR ADMINISTRASI INFRASTRUKTUR JARINGAN - SWITCHING & ROUTING (PPG TKI...
 
Gaya horizontal pada tiang pancang
Gaya horizontal pada tiang pancangGaya horizontal pada tiang pancang
Gaya horizontal pada tiang pancang
 
PERENCANAAN GEOMETRIK JALAN (TUGAS S1 UNTAG SEMARANG)
PERENCANAAN GEOMETRIK JALAN (TUGAS S1 UNTAG SEMARANG)PERENCANAAN GEOMETRIK JALAN (TUGAS S1 UNTAG SEMARANG)
PERENCANAAN GEOMETRIK JALAN (TUGAS S1 UNTAG SEMARANG)
 
POWERPOINT DASAR-DASAR REKAYASA TRANSPORTASI.pptx
POWERPOINT DASAR-DASAR REKAYASA TRANSPORTASI.pptxPOWERPOINT DASAR-DASAR REKAYASA TRANSPORTASI.pptx
POWERPOINT DASAR-DASAR REKAYASA TRANSPORTASI.pptx
 
Merubah Satuan Ukur Google Earth Menjadi Meter, Kilometer Dengan Perlihatkan ...
Merubah Satuan Ukur Google Earth Menjadi Meter, Kilometer Dengan Perlihatkan ...Merubah Satuan Ukur Google Earth Menjadi Meter, Kilometer Dengan Perlihatkan ...
Merubah Satuan Ukur Google Earth Menjadi Meter, Kilometer Dengan Perlihatkan ...
 
2007 11-pekerjaan bangunan pelengkap dan perlengkapan jalan
2007 11-pekerjaan bangunan pelengkap dan perlengkapan jalan2007 11-pekerjaan bangunan pelengkap dan perlengkapan jalan
2007 11-pekerjaan bangunan pelengkap dan perlengkapan jalan
 
Shortcut Perintah Auto Cad
Shortcut Perintah Auto CadShortcut Perintah Auto Cad
Shortcut Perintah Auto Cad
 
87280501 perencanaan-sistem-drainase-130227011440-phpapp01
87280501 perencanaan-sistem-drainase-130227011440-phpapp0187280501 perencanaan-sistem-drainase-130227011440-phpapp01
87280501 perencanaan-sistem-drainase-130227011440-phpapp01
 
Metode pelaksanaan-konstruksi-jembatan
Metode pelaksanaan-konstruksi-jembatanMetode pelaksanaan-konstruksi-jembatan
Metode pelaksanaan-konstruksi-jembatan
 
1. Kriteria Desain dan Spesifikasi Teknis Jembatan Gantung Pejalan Kaki Tipe ...
1. Kriteria Desain dan Spesifikasi Teknis Jembatan Gantung Pejalan Kaki Tipe ...1. Kriteria Desain dan Spesifikasi Teknis Jembatan Gantung Pejalan Kaki Tipe ...
1. Kriteria Desain dan Spesifikasi Teknis Jembatan Gantung Pejalan Kaki Tipe ...
 
Spesifikasi teknis jembatan
Spesifikasi teknis jembatanSpesifikasi teknis jembatan
Spesifikasi teknis jembatan
 
perancangan geometrik jalan
perancangan geometrik jalanperancangan geometrik jalan
perancangan geometrik jalan
 
Modul Perancangan Jalan 2021-2022.pdf
Modul Perancangan Jalan 2021-2022.pdfModul Perancangan Jalan 2021-2022.pdf
Modul Perancangan Jalan 2021-2022.pdf
 
penggunaan geosintetik untuk konstruksi jalan
penggunaan geosintetik untuk konstruksi jalanpenggunaan geosintetik untuk konstruksi jalan
penggunaan geosintetik untuk konstruksi jalan
 
Sewage treatment plant design calculation
Sewage treatment plant design calculationSewage treatment plant design calculation
Sewage treatment plant design calculation
 
Soal uas mk perancangan geometrik jalan
Soal uas mk perancangan geometrik jalanSoal uas mk perancangan geometrik jalan
Soal uas mk perancangan geometrik jalan
 
Desain Perkerasan Jalan | Program Studi D3 Teknik Sipil Transportasi UNS 2016
Desain Perkerasan Jalan | Program Studi D3 Teknik Sipil Transportasi UNS 2016Desain Perkerasan Jalan | Program Studi D3 Teknik Sipil Transportasi UNS 2016
Desain Perkerasan Jalan | Program Studi D3 Teknik Sipil Transportasi UNS 2016
 
Standard Geometrik Jalan Tol
Standard Geometrik Jalan TolStandard Geometrik Jalan Tol
Standard Geometrik Jalan Tol
 
PPT TKP M1-KB4 PERAWATAN DAN PEMELIHARAAN
PPT TKP M1-KB4 PERAWATAN DAN PEMELIHARAANPPT TKP M1-KB4 PERAWATAN DAN PEMELIHARAAN
PPT TKP M1-KB4 PERAWATAN DAN PEMELIHARAAN
 

Ähnlich wie 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
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ò
 
Liferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° EpisodioAntonio Musarra
 
Sicurezza e resilienza di Architetture a Containers
Sicurezza e resilienza di Architetture a ContainersSicurezza e resilienza di Architetture a Containers
Sicurezza e resilienza di Architetture a ContainersGianluca Magalotti
 
Vpn Virtual Private Network
Vpn Virtual Private NetworkVpn Virtual Private Network
Vpn Virtual Private Networkcarmine ricca
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
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 sourceMario Rossano
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open sourceMarco Ferrigno
 
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 ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...Par-Tec S.p.A.
 
Blockchain dove il free software incontra la finanza - novembre 2021
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 2021Alfredo Di Maria
 
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyIonela
 
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyIonela
 
Hacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open SourceHacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open SourceClaudio Cardinali
 
Personal Cloud
Personal CloudPersonal Cloud
Personal CloudNaLUG
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceNaLUG
 
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...
Realizzazione di un' interfaccia web per la gestione dei file di log generati...Marco Furlanetto
 
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...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...Codemotion
 
Catasto Rumore Struttura Informatica
Catasto Rumore Struttura InformaticaCatasto Rumore Struttura Informatica
Catasto Rumore Struttura Informaticaconfrontamutui
 
Progettazione e sviluppo di un software applicativo su un single board computer
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 computerAlessandro Mascherin
 
Aruba, Dell e Intel: una partnership d'eccezione
Aruba, Dell e Intel: una partnership d'eccezioneAruba, Dell e Intel: una partnership d'eccezione
Aruba, Dell e Intel: una partnership d'eccezioneAruba S.p.A.
 

Ähnlich wie 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
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
Liferay - Quick Start 1° EpisodioLiferay - Quick Start 1° Episodio
Liferay - Quick Start 1° Episodio
 
Sicurezza e resilienza di Architetture a Containers
Sicurezza e resilienza di Architetture a ContainersSicurezza e resilienza di Architetture a Containers
Sicurezza e resilienza di Architetture a Containers
 
Vpn Virtual Private Network
Vpn Virtual Private NetworkVpn Virtual Private Network
Vpn Virtual Private Network
 
JAX-WS e JAX-RS
JAX-WS e JAX-RSJAX-WS e JAX-RS
JAX-WS e JAX-RS
 
Linux Day 2014 - Napoli - Programma Il Futuro: una scelta open source
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
 
Programma il futuro: una scelta open source
Programma il futuro: una scelta open sourceProgramma il futuro: una scelta open source
Programma il futuro: una scelta open source
 
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 ...
Webinar 23 giugno 2022 - Advanced Cluster Security: come si mette davvero al ...
 
Blockchain dove il free software incontra la finanza - novembre 2021
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
 
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
 
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & KasperskyPiattaforma Accelerated Antivirus Da Freescale & Kaspersky
Piattaforma Accelerated Antivirus Da Freescale & Kaspersky
 
Hacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open SourceHacking Access Point con Firmware Open Source
Hacking Access Point con Firmware Open Source
 
Personal Cloud
Personal CloudPersonal Cloud
Personal Cloud
 
Programma il futuro : una scelta Open Source
Programma il futuro : una scelta Open SourceProgramma il futuro : una scelta Open Source
Programma il futuro : una scelta Open Source
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
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...
Realizzazione di un' interfaccia web per la gestione dei file di log generati...
 
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...
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
 
Catasto Rumore Struttura Informatica
Catasto Rumore Struttura InformaticaCatasto Rumore Struttura Informatica
Catasto Rumore Struttura Informatica
 
Progettazione e sviluppo di un software applicativo su un single board computer
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
Aruba, Dell e Intel: una partnership d'eccezioneAruba, Dell e Intel: una partnership d'eccezione
Aruba, Dell e Intel: una partnership d'eccezione
 

Mehr von Antonio Musarra

Liferay Portal CE 7.4: Come configurare Oracle Database 19c
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
 
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...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...Antonio Musarra
 
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
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
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.comAntonio Musarra
 
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
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
 
Corso introduttivo di Design Pattern in Java per Elis - 1
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
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
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
 
SugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceAntonio Musarra
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomAntonio 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.
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.Antonio Musarra
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
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 minutiAntonio Musarra
 
How to Build a Java client for SugarCRM
How to Build a Java client for SugarCRMHow to Build a Java client for SugarCRM
How to Build a Java client for SugarCRMAntonio Musarra
 
Liferay Web Services - Come importare utenti da un foglio Excel
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 ExcelAntonio Musarra
 
Introduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioIntroduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioAntonio Musarra
 
Introduzione a Liferay Message BUS
Introduzione a Liferay Message BUSIntroduzione a Liferay Message BUS
Introduzione a Liferay Message BUSAntonio Musarra
 
Un CRM dentro un CMS v1.0
Un CRM dentro un CMS v1.0Un CRM dentro un CMS v1.0
Un CRM dentro un CMS v1.0Antonio Musarra
 
Running Kettle Job by API v1.2
Running Kettle Job by API v1.2Running Kettle Job by API v1.2
Running Kettle Job by API v1.2Antonio Musarra
 
SugarCRM Web Services: Build a Apache CXF Client
SugarCRM Web Services: Build a Apache CXF ClientSugarCRM Web Services: Build a Apache CXF Client
SugarCRM Web Services: Build a Apache CXF ClientAntonio Musarra
 
Building a Client .NET for SugarCRM
Building a Client .NET for SugarCRMBuilding a Client .NET for SugarCRM
Building a Client .NET for SugarCRMAntonio Musarra
 

Mehr von Antonio Musarra (20)

Liferay Portal CE 7.4: Come configurare Oracle Database 19c
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
 
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...
Come installare TIBCO Jasper Reports Server 7.5 Community Edition su RedHat J...
 
Come installare Liferay 7.2 GA2 su WildFly 16 + Oracle Database 19c
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
 
Liferay & Salesforce.com
Liferay & Salesforce.comLiferay & Salesforce.com
Liferay & Salesforce.com
 
Come installare Liferay 7 su JBOSS EAP con il supporto​ Oracle Database
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
 
Corso introduttivo di Design Pattern in Java per Elis - 1
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
 
Liferay 7: Come realizzare un client SOAP con Apache CXF in OSGi Style
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 Style
 
OSGi e Liferay 7
OSGi e Liferay 7OSGi e Liferay 7
OSGi e Liferay 7
 
SugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual ApplianceSugarCRM Enterprise Development Virtual Appliance
SugarCRM Enterprise Development Virtual Appliance
 
Liferay: Esporre Web Services Custom
Liferay: Esporre Web Services CustomLiferay: Esporre Web Services Custom
Liferay: Esporre Web Services Custom
 
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.
SugarCRM: Come realizzare un Custom Scheduler. Un esempio completo.
 
SugarCRM REST API: Un’applicazione in appena dieci minuti
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
 
How to Build a Java client for SugarCRM
How to Build a Java client for SugarCRMHow to Build a Java client for SugarCRM
How to Build a Java client for SugarCRM
 
Liferay Web Services - Come importare utenti da un foglio Excel
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
 
Introduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo EpisodioIntroduzione agli Hooks – Primo Episodio
Introduzione agli Hooks – Primo Episodio
 
Introduzione a Liferay Message BUS
Introduzione a Liferay Message BUSIntroduzione a Liferay Message BUS
Introduzione a Liferay Message BUS
 
Un CRM dentro un CMS v1.0
Un CRM dentro un CMS v1.0Un CRM dentro un CMS v1.0
Un CRM dentro un CMS v1.0
 
Running Kettle Job by API v1.2
Running Kettle Job by API v1.2Running Kettle Job by API v1.2
Running Kettle Job by API v1.2
 
SugarCRM Web Services: Build a Apache CXF Client
SugarCRM Web Services: Build a Apache CXF ClientSugarCRM Web Services: Build a Apache CXF Client
SugarCRM Web Services: Build a Apache CXF Client
 
Building a Client .NET for SugarCRM
Building a Client .NET for SugarCRMBuilding a Client .NET for SugarCRM
Building a Client .NET for SugarCRM
 

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