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