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