Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

361 views

Published on

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)

Published in: Technology
  • Be the first to comment

  • Be the first to like this

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

  1. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×