Rinnovare un certificato TLS in Tomcat


La procedura per rinnovare il certificato SSL/TLS nel keystore di Tomcat dipende tipicamente dal tipo di certificato o meglio dall’ente certificatore.

Nelle ultime versioni di Tomcat l’uso del keystore, come abbiamo visto negli articoli precedenti, non è più necessario rendendo il rinnovo del certificato più semplice in quanto basta sostituire i file della chiave, della full-chain e riavviare Tomcat.

Tuttavia l’uso del keystore è ancora molto popolare quindi se vi ritrovate a dover rinnovare il certificato è probabile che dobbiate usare il keystore e lo strumento per la gestione: il keytool.

Nel caso di Letsencrypt i passaggi sono piuttosto semplici e automatizzabili: consistono nella cancellazione del certificato dal keystore e dall’importazione del nuovo, più riavvio di Tomcat.

Se invece il vostro certificato viene rilasciato da un rivenditore di certificati, la procedura solitamente prevede:

  • la creazione di un CSR (Certificate Signing Request) a partire dal certificato+chiave memorizzato nel keystore,
  • l’invio del CSR al rivenditore,
  • la verifica dell’identità del richiedente tramite DNS, mail o inserimento di una pagina web ad hoc,
  • la ricezione del certificato,
  • il caricamento del certificato nonchè del certificato root CA e dell’intermedio nel keystore
  • il riavvio di Tomcat.

Per verificare quali certificati sono presenti nel proprio keystore si può usare il comando (dove miokeystore.jks è il nome del proprio keystore):

keytool -list -keystore miokeystore.jks

Nella schermata precedente, ci sono 3 certificati: intermediate e root sono quelli della CA, mentre mydomain è il nostro certificato con chiave (PrivateKeyEntry) di Tomcat.

Facciamo una copia di backup del keystore

cp miokeystore.jks miokeystore.jks_backup

Per procedere alla generazione del CSR abbiamo bisogno della password del keystore e di sapere quale è l’alias che Tomcat usa per il certificato. Nel nostro caso è mydomain, quindi possiamo lanciare questo comando:

keytool -certreq -alias mydomain -file tomcat.csr -keystore miokeystore.jks

Verrà generato un file chiamato tomcat.csr partendo dal certificato con chiave contenuto nel keystore miokeystore.jks; il file tomcat.csr (non contiene la chiave) va passato al rivenditore di certificati.

A questo punto il rivenditore permette di scegliere un metodo di identificazione e autenticazione del proprietario del dominio. Scelto il metodo e verificato il proprietario, allora ci viene fornito il certificato del dominio in formato testuale.

Questo certificato spesso non è sufficiente da solo ma è necessario aggiungere nel keystore tutta la catena dei certificati, iniziando con il certificato della root CA, poi quello intermedio e poi il certificato del dominio.

Supponendo di dover sostituire il root CA e l’intermedio già presente nel keystore, bisogna eliminarli entrambi (solo se non ci sono altri certificati nel keystore che li usando, ovviamente).

I vecchi certificati intermediate e root possono essere eliminati:

keytool -delete -alias intermediate -keystore miokeystore.jks
keytool -delete -alias root -keystore miokeystore.jks

Non va cancellato il certificato con chiave mydomain.

I nuovi certificato root e intermediate che sono stati scaricati dal sito del rivenditore o della certification authority possono essere importati così:

keytool -import -trustcacerts -alias root -file DigiCert_Global_G2.pem -keystore miokeystore.jks

Dove DigiCert_Global_G2.pem è il certificato della Root CA.

keytool -import -trustcacerts -alias intermediate -file DigiCertGlobalCAG2.pem -keystore miokeystore.jks

Dove DigiCertGlobalCAG2.pem è il certificato della Intermediate CA.

Importiamo ora il certificato ricevuto dal rivenditore, supponiamo che il certificato sia contenuto nel file mydomain.txt

keytool -import -alias mydomain -file mydomain.txt -keystore miokeystore.jks

Così facendo il nuovo certificato verrà unito alla chiave già presente nel keystore.

Per far ripartire Tomcat su Debian o CentOS

systemctl restart tomcat9

Se l’importazione è stata effettuata in maniera corretta, il riavvio di Tomcat sarà completato con successo, altrimenti è possible che Tomcat non riesca a ripartire.

In tal caso, è possibile ripristinare il keystore originale (antecedente alle modifiche) e analizzare cosa è andato storto.

Una delle verifiche da fare è la corretta importazione del certificato con chiave. Infatti il certificato senza chiave non permette la partenza di Tomcat. Per verificare se c’è il certificato con chiave, basta cercare nell’output della lista se c’è PrivateKeyEntry.

keytool -list -keystore miokeystore.jks

Come attivare HTTPS su Tomcat

In questa guida vediamo come configurare il supporto HTTPS, tramite Transport Layer Security (TLS), su Tomcat.
Tomcat sfrutta le tecnologie Java sottostanti per fornire il supporto alle connessioni sicure e per questo motivo la configurazione di TLS su Tomcat non è così immediata come per il classico Apache HTTPD.

Questo articolo fa riferimento alla versione Tomcat 9, per dettagli sulla configurazione potete leggere questi due articoli: Installare Tomcat su Ubuntu 20.04 Focal Fossa e installare Tomcat su CentOS 8.

Nel resto dell’articolo supporremo che il nostro server Tomcat abbia come dominio tomcat.example.com, per cui nei successivi comandi dovrete sostituire tomcat.example.com con il nome del vostro dominio.

Abbiamo usato Letsencrypt per generare un certificato TLS gratuito da usare per il nostro Tomcat.
Per installare Letsencrypt su Ubuntu usare il comando:

sudo apt install letsencrypt

Per generare il certificato, dopo aver installato Letsencrypt:

certbot certonly --standalone -d tomcat.example.com

Attendiamo la fine del comando precedente e convertiamo il certificato e la chiave in un formato p12 utilizzabile per il java keytool. Il tipo di file p12 con certificato full chain e chiave, ci consente di fare un singolo inserimento del keystore. L’alternativa è quella di aggregare chiave e certificato del dominio in un file da aggiungere al keystore. Poi sia il certificato intermedio sia quello root vanno anche essi importati in 2 passaggi nel keystore; invece con il file p12, l’importazione è una sola.

Detto questo, aggreghiamo i vari componenti per creare un file p12:

openssl pkcs12 -export -out /tmp/tomcat.example.com_fullchain_and_key.p12 \
-in /etc/letsencrypt/live/tomcat.example.com/fullchain.pem \
-inkey /etc/letsencrypt/live/tomcat.example.com/privkey.pem \
-name tomcat

A questo punto ci viene chiesta una password, scegliamo per esempio 58dssqPo2Muw
La password ci servirà successivamente.
Ora lanciamo il seguente comando, avendo cura di sostituire 58dssqPo2Muw con la password da voi scelta e tomcat.example.com con il vostro dominio.

keytool -importkeystore \
-deststorepass 58dssqPo2Muw -destkeypass 58dssqPo2Muw \
-destkeystore /tmp/tomcat.example.com.jks \
-srckeystore /tmp/tomcat.example.com_fullchain_and_key.p12 \
-srcstoretype PKCS12 -srcstorepass 58dssqPo2Muw \
-alias tomcat

Copiamo il file /tmp/tomcat.example.com.jks in una nuova cartella chiamata tls che si troverà in /usr/local/tomcat9/

mkdir /usr/local/tomcat9/tls/
cp /tmp/tomcat.example.com.jks /usr/local/tomcat9/tls/

Aprite il file di configurazione di Tomcat che si chiama server.xml e si trova nella cartella conf dell’installazione di Tomcat. Se avete seguito i tutorial precedenti si dovrebbe trovare in /usr/local/tomcat9/conf/server.xml

nano /usr/local/tomcat9/conf/server.xml

Inserite il seguente testo avendo cura di sostituire la password e il dominio.

<Connector
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           port="8443" maxThreads="200"
           scheme="https" secure="true" SSLEnabled="true"
           keystoreFile="tls/tomcat.example.com.jks"
           keystorePass="58dssqPo2Muw"
           clientAuth="false" sslProtocol="TLS"/>

Ora riavviate Tomcat con il comando

systemctl restart tomcat9

Ora se andrete sull’indirizzo
https://tomcat.example.com:8443 dovrà compare la solita pagina di inizio di Tomcat.

Se avete problemi vi consiglio di consultare il file /usr/local/tomcat9/logs/catalina.out per capire quale è l’errore che ha impedito l’attivazione corretta di https su Tomcat.

Per maggiori dettagli, la guida di configurazione è indicata: http://tomcat.apache.org/tomcat-9.0-doc/ssl-howto.html

Installare Tomcat su Ubuntu 20.04 Focal Fossa

In un precendente tutorial abbiamo visto come installare Tomcat su CentOS 8, ora vediamo come installare il popolare application server su Ubuntu 20.04 Focal Fossa.

Dopo aver installato Ubuntu 20.04, versione server, è sufficiente installare il Java JDK versione 8 sul server.

sudo apt install openjdk-8-jdk

Create un utente chiamato tomcat9 e create una cartella per ospitare i file di Tomcat.

sudo useradd -r tomcat9
mkdir /usr/local/tomcat9

Poi scaricate da Internet l’ultima versione di Tomcat 9 per sistemi GNU/Linux, usando questo comando:

wget http://mirror.nohup.it/apache/tomcat/tomcat-9/v9.0.34/bin/apache-tomcat-9.0.34.tar.gz -O apache-tomcat-9.0.34.tar.gz

Qualora il comando vi restituisca un errore, recatevi alla pagina http://mirror.nohup.it/apache/tomcat/tomcat-9/v9.0.34/bin/ e selezionate una versione più recente es. nel caso di una futura 9.0.35 l’url può essere trasformato così: wget http://mirror.nohup.it/apache/tomcat/tomcat-9/v9.0.35/bin/apache-tomcat-9.0.35.tar.gz -O apache-tomcat-9.0.35.tar.gz

Scompattiamo l’archivio di Tomcat nella cartella predisposta prima.

tar zxvf apache-tomcat-9.0.*.tar.gz --strip-component=1 -C /usr/local/tomcat9

Facciamo sì che tutti i file di Tomcat nella cartella /usr/local/tomcat9 siano di proprietà dell’utente tomcat9

sudo chown -R tomcat9:tomcat9 /usr/local/tomcat9

Per poter avviare Tomcat in maniera automatica è opportuno creare uno script per systemd. Creiamo quindi un file di tipo service:

nano /etc/systemd/system/tomcat9.service

In questo file incolliamo il seguente testo:

[Unit]
 Description=Apache Tomcat Server
 After=syslog.target network.target

 [Service]
 Type=forking
 User=tomcat9
 Group=tomcat9

 Environment=CATALINA_PID=/usr/local/tomcat9/temp/tomcat.pid
 Environment=CATALINA_HOME=/usr/local/tomcat9
 Environment=CATALINA_BASE=/usr/local/tomcat9

 ExecStart=/usr/local/tomcat9/bin/catalina.sh start
 ExecStop=/usr/local/tomcat9/bin/catalina.sh stop

 RestartSec=10
 Restart=always

 [Install]
 WantedBy=multi-user.target

Salvato il file è necessario ricaricare la lista dei servizi gestiti da systemd, lo si può fare col comando:

sudo systemctl daemon-reload

Per abilitare l’avvio automatico di Tomcat alla partenza del sistema operativo lanciare questo comando:

sudo systemctl enable tomcat9.service

Per lanciare Tomcat usare invece quest’altro comando:

sudo systemctl start tomcat9.service

A questo punto è possibile collegarsi a Tomcat usando l’indirizzo http://localhost:8080 dal server locale.

Abilitare l’accesso a Tomcat dall’esterno

Di default, Tomcat non consente l’accesso da IP esterni al server di installazione. Questo per motivi di sicurezza.

Per consentire l’accesso dall’esterno, bisogna modificare il file /usr/local/tomcat9/conf/server.xml aggiungendo nella sezione Connector port=”8080″, la coppia opzione-valore address=”0.0.0.0″

A questo punto occorre ricaricare (o riavviare) Tomcat.

sudo systemctl reload tomcat9.service

Ora ci si può collegare dall’esterno, nell’esempio l’IP del server Ubuntu con Tomcat 9 è 192.168.217.7:

Tiscali Mobile Smart 4G

Aggiornato il 5 marzo (in fondo) – Dopo diverso tempo passato a riflettere sul dafarsi, ho deciso di “passare” la mia SIM telefonica secondaria da TIM a Tiscali Mobile.

Una scelta dettata dall’inquietante messaggio SMS che TIM mi ha inviato allerandomi che da fine febbraio mi avrebbero addebitato 1,99 euro al mese per beneficiare di miglioramenti del servizio. Ebbene la mia SIM TIM non ha nessun tipo di abbonamento o piano ricaricabile quindi passerei da pagare 0 euro al mese a quasi 2 per praticamente nulla, visto che non ho traffico dati e le chiamate così come gli SMS sono a pagamento/consumo.

Da tempo avevo pensato di attivare un piano dati leggero per leggere le mail e usare qualche app (es. ebay, amazon…) quando non è possibile sfruttare il wifi; questo è il secondo motivo per cui ho deciso di passare ad un altro operatore telefonico.
Volendo un piano leggero ossia poco costoso ma con un po’ di traffico, ho scelto la proposta Tiscali Mobile Smart 4G che dà al mese 60 minuti di chiamate, 10 SMS e 1 GB di traffico Internet 4G al prezzo di 2,99 euro al mese. Un prezzo molto contenuto.

Tiscali Mobile si appoggia alla rete di TIM, quindi la copertura è analoga a quella dell’operatore primario.

Con un sacco di scrupoli, ho provato a recarmi ad un centro servizi della mia città natìa per capire qualcosa di più di questa offerta: così ho scoperto che la metà dei negozi mobile Tiscali hanno o cambiato gestione o non lavorano più con Tiscali. Il personale dell’unico negozio trovato mi ha mostrato una schermata alla quale l’offerta, da me scelta Tiscali Smart 4G, non è possibile aderire visto che non è proposta. Allora decido di acquistarla online.

Non essendo già cliente Tiscali e avendo una SIM attiva, posso beneficiare del prezzo più basso.
Così ho aderito all’offerta Tiscali Smart 4G. Il prezzo totale è di 20 euro comprensivi di 10 euro per la SIM che può essere spedita a casa o in altro posto e 10 euro di ricarica iniziale obbligatoria.
Attendiamo ora la SIM a casa.

Aggiornamento del 5 marzo

Ordinata il 1 febbraio, finalmente il 27 febbraio è arrivata tramite posta tradizionale la busta contenente la SIM Tiscali. I pacchi dalla Cina ci mettono meno tempo ad arrivare…

L’attivazione della SIM ha impiegato 2 giorni lavorativi, così il 4 marzo finalmente posso adoperare la SIM Tiscali.

Migliorare il riconoscimento virus con ClamAV

ClamAV è l’antivirus open source più popolare. Sebbene per GNU/Linux sia efficace nel relevare malware se lo usiamo su sistemi Windows, è facile imbattersi in parecchi falsi positivi, anche alcuni file di sistema firmati Microsoft vengono rilevati come tali.

Rimuovere un file di sistema lecito, può portare a seri problemi, quindi per migliorare il rilevamento su più piattaforme si possono integrare le normali firme (signature) con quelle messe a disposizione gratuitamente da securiteinfo.com

Non solo Windows ne beneficierà ma e avete un mail server, queste signature possono migliorare la rilevazione di malware trasmesso via posta elettronica.

Integrare le signature con ClamAV oppure ClamWin è semplicissimo, basta andare sul sito https://www.securiteinfo.com/clients/customers/signup e registrarsi.

Una volta ricevuta la password d’accesso al sito, entrare nel pannello di controllo nel menù SETUP e copiare il testo.

Queste righe vanno incollate in fondo al file /etc/clamav/freshclam.conf.

Poi è sufficiente riavviare il deamon freshclam (e clamav se lo si desidera) con il comando:

systemctl restart clamav-freshclam.service
systemctl restart clamav-daemon.service

Se si utilizza la versione gratuita delle signature di securiteinfo.com si può sincronizzare le firme al massimo 24 volte al giorno da un solo indirizzo IP. Per questo motivo è importante assicurarsi che nel file della configurazione freshclam.conf non siano impostati più di 24 aggiornamenti quotidiani.

La riga che va ricercata nel file è Checks e tale riga deve avere un valore uguale o inferiore a 24:

# Check for new database 24 times a day
Checks 24

La versione a pagamento consente di avere, rispetto alla versione free, le firme dei malware per attachi 0-day, la possibilità di scaricare da diversi indirizzi IP e nessun limite circa la velocità massima di download delle firme. Soluzione ideale per chi vuole usare ClamAV a casa o tramite connessioni differenti per cui si ottene un indirizzo IP volatile, prezzo a partire da 29,99 Euro.

Installare Tomcat su CentOS 8

CentOS 8 è l’ultima versione di CentOS uscita appena qualche giorno fa. Vediamo in questo articolo come instalare Tomcat su CentOS 8.

Tomcat è il famoso application server per eseguire applicazioni, war, scritte in Java.

La prima cosa da fare, se non l’avete già fatto, è installare il java developer kit (o JDK) su CentOS. Si può optare per la versione openJDK oppure per la versione ufficiale di Oracle.

In questo tuttorial scegliamo la versione open. A sua volta possiamo scegliere fra openJDK 8 e l’ultima versione LTS openJDK 11. La scelta va fatta in base alle vostre esigenze e al vostro codice.

Continua a leggere

Guida su come guadagnare con Youtube

Youtube è il sito web che ospita il maggior numero di video caricati dagli utenti: uno dei siti con più visitatori a livello mondiale!
Non credo abbia bisogno di molte spiegazioni, fatevi un giro su www.youtube.com.

Miglioni di persone tutti i giorni vedono miglioni di video online creati non da una singola persona o organizzazione ma da utenti.
Prima Youtube era una società indipendente poi è stata comperata da Google.
Ad un certo punto Google ha deciso di adottare un modello di condivisione delle entrate permettendo ai creatori di contenuti di ricevere parte dei compensi ottenuti tramite la visualizzazione delle pubblicità nei video.


E’ possibile guadagnare con Youtube?

La risposta è sì, in ben 2 modi.
Il primo, mediante il Programma partner di YouTube (YPP) – le tanto famose pubblicità inserite nei video che permettono al creatore di monetizzare ossia guadagnare con Youtube.
Il secondo, tramite degli utenti che si abbonano mensilmente a Youtube Premium destinando una quota al nostro canale.

Come si fa effettivamente a far soldi su Youtube tramite le pubblicità?

Per poter aderire al programma partner di YouTube (YPP) è necessario registrarsi su Google, e aprire un canale Youtube.

Occorre, poi, avere un canale attivo su Youtube. Un canale è facile da creare basta avere un profilo Youtube.
Infine bisogna aderire allo YouTube Partner Program (YPP) e quindi di guadagnare.

Si può entrare nel programma per la monetizzazione soddisfando questi requisiti :

  • Abitare in uno stato in cui è attivo il programma YPP (in Italia, ok)
  • Avere un account AdSense da collegare a Youtube.
  • Il canale deve avere almeno 1000 iscritti (subscriber)
  • Il canale deve aver accumulato almeno 4000 ore di streaming negli ultimi 12 mesi.
  • Il canale e i contenuti devono sottostare alle regole del YouTube Partner Program (YouTube Partner Program policies), dei termini di servizio (YouTube Terms of Service), delle politiche contro lo spam (YouTube spam policies) e delle guidelinea della comunità (Community Guidelines).

Come potete capire i requisiti della soglia 4000 ore/1000 iscritti per accedere allo YouTube Partner Program sono abbastanza stringenti e quindi prima di aderire è necessario che il canale sia già sufficientemente frequentato.
Una volta raggiunte queste soglie si può presentare la domanda di adesione al programma YPP.

L’altro modo per guadagnare con Youtube direttamente è quello mediante YouTube Premium & support for creators.
YouTube Premium è un abbonamento mensile ai servizi di Youtube per il quale l’utente non vedrà più le pubblicità nei video.
YouTube Premium supports creators, invece, consente al proprietario di un canale di avere iscritti a pagamento i quali gli versano una quota mensile del loro abbonamento per una cifra che va da 0,99 euro fino ad un massimo di 49,99 euro. Questi soldi provengono dagli abbonamenti YouTube Premium.

Riferimenti: Programma partner di YouTube

Installare Zabbix 3.4 su Debian Stretch 9


In un precedente articolo, qualche anno fa, avevo raccolto i passaggi necessari per installare Zabbix 2.2 su Debian. Ora a distanza di un po’ di tempo vorrei esporre i passi per installare Zabbix 3.4 su Debian Stretch 9.
In questo caso Zabbix 3.4 è l’ultima versione disponibile destinata ad ambienti produttivi di Zabbix. Nel nostro tutorial andremo ad installare Zabbix 3.4 su un server Debian 9 (Stretch) in modo rapido e coinciso. Al termine del tutorial avremmo a dispozione un server Zabbix da utilizzare per monitorare la nostra infrastruttura o il nostro gruppo di server. Continua a leggere

Migliorare le prestazioni di PHP attivando la cache realpath


Uno dei problemi di performance che si possono riscontrare in PHP (in generale non solo per PHP 7) è il mancato uso della cache realpath quando si attiva open_basedir (e/o nelle versione più vecchie di PHP, safe_mode).
La realpath cache è una meccanismo che permette di memorizzare nella cache dei percorsi le posizioni di file/directory per ridurre al minimo la ricerca sul disco.

Continua a leggere

Installare PHP7 su Debian Jessie


La distribuzione Debian 8 (Jessie) è stata pubblicata ormai da più di un anno. Di default, questa distro mette a disposizione la versione 5.6 di PHP che per molte situazioni è adeguata; ma per chi vuole sfruttare i benefici delle ultime novità e, perché no, un aumento decisamente visibile delle prestazioni, è arrivato il momento di passare a PHP 7.

Nella seguente guida vederemo come installare PHP 7 su Debian Jessie senza dover rimuovere PHP 5, per cui vecchi script e siti non compatibili possono continuare a funzionare rendendo, magari, la migrazione da PHP 5.6 a PHP 7 più semplice.

Continua a leggere