Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

certificati let's encrypt in tomcat

79 views
Skip to first unread message

Piviul

unread,
Mar 22, 2021, 12:30:03 PM3/22/21
to
Ciao a tutti, non ci capisco un gran che con i certificati comunque mi
piacerebbe riuscire ad utilizzare un certificato let's encrypt in Tomcat9.

Ho installato certbot e generato il certificato con successo ed ora
nella directory generata da certbot ho:

1. La chiave privata (privkey.pem) da tenere molto segreta
2. Il certificato fullchain.pem che dicono essere il certificato usato
nella maggior parte dei server ma non sembra che Tomcat rientri in
questa maggioranza
3. un file chain.pem che non so cosa sia ma che loro dicono essere "used
for OCSP stapling in Nginx >=1.3.7"
4. poi il certificato cert.pem che anche questo non ho capito cosa sia
ma dicono che prima di usarlo bisogna studiare un po'...

Ho provato a seguire qualche guida, ad esempio questa[¹] ma non ci ho
cavato un ragno da un buco[²]. Vermanete ho provato anche questa [³] ma
on poco successo...

Qualcuno sarebbe così gentile da guidarmi alla configurazione di tomcat
con i certificati letsencrypt?

Grazie mille

Piviul

[¹]
https://medium.com/@raupach/how-to-install-lets-encrypt-with-tomcat-3db8a469e3d2

[²] Tomcat da l'errore "Error running socket processor:
java.lang.Exception: cannot create new ssl"

[³]
https://medium.com/@mashrur123/a-step-by-step-guide-to-securing-a-tomcat-server-with-letsencrypt-ssl-certificate-65cd26290b70

Piviul

unread,
Mar 23, 2021, 11:00:03 AM3/23/21
to
Il 23/03/21 08:47, Paolo Miotto ha scritto:
> il protocollo TLS  prevede la presentazione da parte del server di un
> certificato contenente:
>
> * il certificato del server firmato da una CA
>
> * la catena dei certificati delle CA che hanno firmato il certificato
> precedente, fino ad arrivare ad una Root CA, che può essere omessa.
>
>
> Questo per permettere ai client di verificare il certificato a partire
> da quello delle Root CA.
>
>
> Nelle vecchie (<2.4.8) il certificato del server e la catena delle CA
> dovevano risiedere su 2 file separati, che venivano poi assemblati dal
> server per essere presentati ai client, e così pure molti altri server
> con TLS.
>
> Dalla versione 2.4.8 in poi viene consigliato di usare un unico file
> contenente sia il certificato che la catena, così come verrebbe
> presentato al client.
>
> Ora non conosco Tomcat, ma presumo che ricada nel caso di un server
> TLS che richiede certificato e catena separati.

Grazie mille Paolo, ho ancora molta confusione; prima di capire cosa
vuole tomcat mi piacerebbe allora capire cosa mi restituisce
letsencrypt. Letsencrypt come dicevo genera 4 files: privkey.pem,
fullchain.pem, chain.pem e cert.pem. Accompagnati a questi 4 files c'è
il seguente README:

> This directory contains your keys and certificates.
>
> `privkey.pem`  : the private key for your certificate.
> `fullchain.pem`: the certificate file used in most server software.
> `chain.pem`    : used for OCSP stapling in Nginx >=1.3.7.
> `cert.pem`     : will break many server configurations, and should not
> be used
>                  without reading further documentation (see link below).
>
> WARNING: DO NOT MOVE OR RENAME THESE FILES!
>          Certbot expects these files to remain in this location in order
>          to function properly!
>
> We recommend not moving these files. For more information, see the Certbot
> User Guide at
> https://certbot.eff.org/docs/using.html#where-are-my-certificates.
Secondo te quindi fullchain.pem è un certificato che contiene anche la
catena dei certificati?

Inoltre ora tomcat sono riuscito a farlo funzionare con un certificato
autofirmato. Il certificato l'ho generato con un tool di tomcat che si
chiama keytool. Questo è il comando lanciato:

$ keytool -keysize 2048 -genkey -validity 1825 -keyalg RSA -alias tomcat
-keystore .keystore

Una volta lanciato quel comando mi chiede una password e una serie di
informazione che poi compaiono nel certificato stesso (tipo nome,
cognome, azienda provincai, stato...). Poi ho copiato il file .keystore
generato nella directory di tomcat e ho dovuto mettere i riferimenti del
file .keystore generato e la password utilizzata nel file server.xml di
tomcat:

> <?xml version="1.0" encoding="UTF-8"?>
> [...]
>     <!-- Define an SSL Coyote HTTP/1.1 Connector on port 8443 -->
>     <Connector
>            protocol="org.apache.coyote.http11.Http11NioProtocol"
>            port="8443" maxThreads="200"
>            scheme="https" secure="true" SSLEnabled="true"
>            keystoreFile="/etc/tomcat9/.keystore"
> keystorePass="password utilizzata nella generazione del certificato"
>            clientAuth="false" sslProtocol="TLS"/>

Secondo te quindi il file .keystore contiene certificato e catena?
Qual'è il senso, secondo te, che io e tomcat condividiamo una stessa
password affinché tomcat possa utilizzare il certificato? Per caso sai
indirizzarmi su come si possa, con keytool, trasformare il certificato
letsencrypt in un certificato valido per tomcat?

Grazie mille

Piviul

Piviul

unread,
Mar 26, 2021, 9:50:02 AM3/26/21
to
Il 24/03/21 08:28, Paolo Miotto ha scritto:
> [...]
> La soluzione più semplice è quella che ti hanno già suggerito, ovvero
> un reverse proxy con nginx o apache che faccia da frontend TLS.
>
> Alternativamente puoi vedere se le direttive citate in [1] possono
> essere utilizzate con symlink ai file di certbot, di certo non è
> pensabile di ricordarsi di copiare a mano i certificati ogni 90 giorni.

Grazie mille Paolo, ora è tutto più chiaro. In effetti tomcat può essere
configurato tranquillamente per accettare i 3 certificati (certificato,
key e chain) di letsencrypt ma c'è solo un problema: i certificati
generati hanno root come owner e sono accessibili, credo giustamente,
soltanto dall'utente root; quindi ad esempio se voglio che l'utente
tomcat possa utilizzarli li devo copiare in un'altra direcory e dargli i
permessi... ma a questo punto non conviene fare puntare tomcat nella dir
dove vengono salvati i certificati e aggiungere la lettura al gruppo tomcat?

Secondo voi non è la cosa più sensata?

Piviul

Piviul

unread,
Mar 29, 2021, 8:00:02 AM3/29/21
to
Il 29/03/21 08:21, Paolo Miotto ha scritto:
> Il 26/03/21 14:41, Piviul ha scritto:
>> ma a questo punto non conviene fare puntare tomcat nella dir dove
>> vengono salvati i certificati e aggiungere la lettura al gruppo tomcat?
>
> Se tomcat non riesce a leggere la chiave privata (gli altri files
> dovrebbero essere leggibili al mondo) secondo me la cosa migliore è
> proprio quella di usare i privilegi di gruppo per concedergli i
> permessi di lettura.

Alla fine ho deciso di fare uno script che ad ogni rinnovo copia i
certificati sotto tomcat e gli assegna tomcat come owner. Se a qualcuno
serve lo posto volentieri. Il motivo per cui ho scelto questa strada è
perché in ogni caso avrei dovuto modificare comunque i permessi ai
certificati rinnovati per aggiungere la lettura al gruppo... a quel punto...

Grazie mille Paolo, ho capito molto di più ora su come gestire i
certificati ora!

Piviul
0 new messages