importare certificati GoDaddy in Tomcat

In questi giorni ho avuto modo di lavorare con i certificati rilasciati da GoDaddy. GoDaddy è un’azienda americana che oltre a offrire servizi di registrazione di dominii e hosting, agisce appunto da Certification Authority. In questo articolo vedremo come, a fronte della necessità di applicare un certificato emesso da un fonte attendibile alla nostra istanza Tomcat, effettueremo una richiesta CSR (Certificate Signing Request) e in seguito all’invio del certificato firmato da parte di GoDaddy, importeremo il certificato nel keystore dell’istanza Tomcat.

Come prima cosa è necessario creare, sulla macchina dove abbiamo installato il servlet Tomcat, un nuovo keystore:

keytool -genkey -alias tomcat -keyalg RSA -keysize 2048 -keystore tomcat.keystore

In questo momento il nostro keystore contiene solo una entry, quella relativa alla chiave private della nostra macchina:

$ keytool -list -keystore tomcat.keystore 
tomcat, Jun 17, 2014, KeyEntry, 
Certificate fingerprint (MD5): XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX

Ora possiamo creare la CSR:

keytool -certreq -v -alias tomcat -file myrequest.csr -keystore tomcat.keystore

Dopo aver inviato la CSR attraverso il portale di GoDaddy, è necessario attendere il caricamento dei certificati firmati da parte di GoDaddy stessa, che li metterà a disposizione in un file zip contenente i seguenti 3 file:

  • gd_bundle-g2-g1.crt – Go Daddy Certificate Bundles – G2 With Cross to G1, include il certificato Root
  • gdig2.crt – Go Daddy Secure Server Certificate (Intermediate Certificate) – G2
  • mydomain.crt – Il certificato del nostro dominio –> il nome di questo file potrebbe essere formato interamente da caratteri esadecimali, dipende dalla tipologia di certificato richiesto

Ora è necessario creare un nuovo file contenente sia il certificato root di GoDaddy che il certificato del nostro dominio:

cat mydomain.crt gd_bundle-g2-g1.crt > combinedcerts

Possiamo poi creare un file di chiave esportando prima la chiave privata contenuta nel keystore tomcat.keystore in un nuovo keystore di tipo PKCS12, quindi estraendo la chiave dal nuovo keystore:

keytool -importkeystore -srckeystore tomcat.keystore -destkeystore tomcatkey.p12 -deststoretype PKCS12

E’ importante che la password del nuovo keystore di tipo PKCS12 sia la stessa del keystore tomcat.keystore. L’esportazione della chiave, se eseguita in modo corretto, restituirà il seguente messaggio:

Entry for alias tomcat successfully imported.
Import command completed:  1 entries successfully imported, 0 entries failed or cancelled

E’ ora possibile estrarre la chiave dal nuovo keystore PKCS12:

openssl pkcs12 -in tomcatkey.p12 -out tomcatkey.pem -nodes

A questo punto ci verrà richiesto di digitare la password e se tutto va bene la nuova chiave dovrebbe venire esportata nel file tomcatkey.pem, dopo aver ricevuto il seguente messaggio come output del comando:

MAC verified OK

Possiamo infine creare il nostro keystore definitivo, importando il certificato root di GoDaddy, il certificato del nostro dominio (abbiamo già copiato entrambi nel file combinedcerts) e la chiave privata precedentemente estratta:

openssl pkcs12 -export -chain -CAfile gd_bundle-g2-g1.crt -in combinedcerts -inkey tomcatkey.pem -out new.tomcat.keystore -name tomcat -passout pass:yourpasswd

Possiamo infine configurare in Tomcat il SSL Connector, avendo cura di specificare che il keystore che andremo ad utilizzare è di tipo PKCS12:

<Connector
address="xxx.xxx.xxx.yyy" port="443" protocol="HTTP/1.1" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="/path/to/new.tomcat.keystore" keystorePass="xxxxxxxx" keystoreType="PKCS12"
clientAuth="false" sslProtocol="TLS"/>

Ora è sufficiente riavviare l’istanza Tomcat e godersi il lavoro finito!

Be Sociable, Share!

Potrebbero interessarti anche...

Una risposta

  1. DIEGO ha detto:

    guida perfetta, altrimenti con il supporto GoDaddy sarebbe stato impossibile venirne a capo
    veramente ottima giuda
    grazie 1000
    dv

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *