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:
Secondo te quindi fullchain.pem è un certificato che contiene anche la catena dei certificati?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 usedwithout 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 CertbotUser Guide at https://certbot.eff.org/docs/using.html#where-are-my-certificates.
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