Come richiedere e installare un certificato SSL su Apache Karaf

Come Richiedere e Installare un Certificato SSL su Apache Karaf
Come Richiedere e Installare un Certificato SSL su Apache Karaf

Su questo blog, qualche giorno addietro, abbiamo affrontato la problematica su Come abilitare HTTPS su Apache Karaf Pax Web.  Prima di abilitare il protocollo HTTPS, se ben ricordate, ci siamo preoccupati di come poter generare un self-signed certificate (o auto-firmato) per il nostro server Apache Karaf utilizzando il tool keytool.

Ricordiamo che il nostro certificato SSL è di tipo server, ovvero, solo il server è autenticato: l’utente può verificare l’autenticità del server a cui ci si connette e l’identità dell’organizzazione che lo gestisce.

Riuscire a installare sul nostro server Apache Karaf (configurato come descritto in Come abilitare HTTPS su Apache Karaf Pax Web) un certificato ricevuto da una Certificate Authority o Certification Authority (CA) è l’obiettivo ultimo di questo articolo.

Il linea generale i passi necessari per ottenere un certificato SSL da una CA è molto semplice e consta di queste azioni:

  1. Creare un coppia di chiavi pubblica e privata (o keypair).

  2. Creare una richiesta per un certificato basato su chiave pubblica CSR (Certificate Signing Request). La richiesta del certificato contiene informazioni riguardo il server e la società che lo ospita.

  3. Inviare la richiesta, con una fotocopia di un documento di identità, a una CA. Non è possibile consigliare quale autorità di certificazione scegliere. La decisione potrebbe essere basata su esperienze passate, esperienze di amici o colleghi o per un fattore economico.Una volta scelta la CA, è necessario seguire le istruzioni fornite dalla CA per ottenere il certificato.

  4. Una volta che la CA ha verificato l’identità del richiedente, invierà il certificato digitale (nei più comuni formati, quali: PEM, DERPKCS#12) pronto per essere utilizzato da una o più applicazioni.

  5. Installare il certificato ricevuto sul proprio server e configurare le applicazioni appropriate affinché usino correttamente il certificato.

Il terzo e quarto punto possono variare sulla base della CA da voi scelta. Potrebbe per esempio cambiare il metodo d’identificazione del richiedente o il formato e modalità di ricezione del certificato richiesto.

La CA che ho deciso d’utilizzare per richiedere il certificato SSL si chiama Let’s Encrypt Authority X3. E’ una CA gratuita, con processi di gestione automatici e open che tra le altre cose supporta il protocollo (ancora in stato draft) Automatic Certificate Management Environment (ACME)Per avviare il processo di richiesta del certificato ho utilizzato in particolare ZeroSSL (fully in-browser process, inclusa la creazione del CSR).

Per affrontare la parte pratica dell’articolo, è necessario che sulle proprie macchine siano installati il keytool OpenSSL. Il primo tool fa parte della JDK, mentre il secondo tool può essere installato su qualunque sistema operativo della famiglia Microsoft, Apple e Nix*.

Preparare la richiesta del certificato

Così come previsto dal processo di richiesta del certificato SSL indicato in precedenza, procediamo con l’esecuzione del primo e secondo punto, così come mostrato a seguire.

Il primo comando crea la coppia di chiavi di tipo RSA con una lunghezza pari a 2048 bit che viene salvata all’interno del file api.dontesta.it.key.pem e il cui contenuto è mostrato subito sotto. La coppia di chiavi appena generata deve essere conservata in un luogo sicuro.

Il secondo comando crea invece la CSR partendo dalla coppia di chiavi e che contiene in forma codificata una raccolta d’informazioni, che poi, inviate alla CA, saranno utilizzate per generare il nostro certificato SSL. L’esecuzione di questo comando è interattivo, ovvero, saranno richieste le seguenti informazioni:

  1. Common Name: Il nome di dominio completo (FQDN) del server. Questo deve corrispondere esattamente con ciò che si digita nel browser web o si riceverà un errore di mancata corrispondenza del nome.
  2. Organization: Il nome legale della vostra organizzazione. Questo non deve essere abbreviato e dovrebbe includere suffissi, come Inc, Corp, o LLC, S.p.A, S.r.l, etc.
  3. Organizational Unit: La divisione che si occuperà della gestione del certificato all’interno della vostra organizzazione.
  4. City/Locality: La città dove l’organizzazione risiede.
  5. State/County/Region: Lo stato o regione dove l’organizzazione risiede. Dovrebbe essere indicata per esteso e non in forma abbreviata.
  6. Country: Il country code in formato ISO.
  7. Email address: Un indirizzo email valido per contattare la vostra organizzazione.

La CSR creata per quest’esempio contiene le queste informazioni: CN=api.dontesta.it, OU=R&D Labs, O=Antonio Musarra's Blog, C=IT, L=Rome, S=Italy. Il file api.dontesta.it.csr.pem che contiene il CSR è mostrato a seguire.

Una volta generato il CSR di richiesta non resta altro che inviarlo alla CA insieme ad altra eventuale documentazione e restare in attesa del certificato SSL firmato.

Preparare il JKS dal certificato ricevuto dalla CA

Supponiamo di aver ricevuto il nostro certificato in formato PEM x509 (o OpenSSL) dalla CA prescelta. Con il certificato ricevuto, cosa ci facciamo? Dobbiamo creare il keystore in formato JKS partendo dal certificato ricevuto dalla CA e dalla coppia di chiavi, quest’ultima creata nel primo passo del processo di richiesta illustrato precedentemente. Nel Listato 3 è mostrato il contenuto del certificato rilasciato dalla CA e codificato in base64.

Il formato PKCS#12 Definisce il formato del file usato per conservare la chiave privata e i certificati pubblici, proteggendoli con una parola chiave. (Questo file non può essere usato direttamente da Apache)

Per creare il JKS utilizzando il certificato pubblico (quello ricevuto dalla CA) e la chiave privata, i passi da seguire sono i seguenti:

  1. Creare un archivio crittografico in formato PKCS#12 utilizzando i comandi OpenSSL.
  2. Creare il keystore JKS dall’archivio PKCS#12 utilizzando il keytool.

La Console 2 mostra i comandi da eseguire per portare a termine le azioni indicate sopra.

Così facendo abbiamo ottenuto il keystore dontesta-karaf-server.jks pronto per essere installato sulla nostra istanza di Apache Karaf. Utilizzando il tool KeyStore Explorer è possibile in maniera più agevole creare il keystore partendo dal formato OpenSSL o PKCS#12 e altri formati supportati.

Installazione del keystore e test

Sulla nostra istanza di Apache Karaf (già configurata per il supporto SSL) installiamo il keystore dontesta-karaf-server.jks in ${karaf.etc}/keystore/. La configurazione per il supporto SSL che riporto a seguire rimane invariata.

Avviamo il nostro Apache Karaf e successivamente puntiamo il browser all’indirizzo https://api.dontesta.it:8443/system/console/bundles o se preferite utilizziamo cURL in questo modo: curl -v https://api.dontesta.it:8443/system/console.

In Figura 1 è mostrato il dettaglio del certificato che abbiamo appena installato su Apache Karaf, e subito a seguire l’output del comando curl. Dall’immagine è possibile notare due informazioni importanti, la catena di certificazione (o certificate chain) e il nome della CA che ha emesso il nostro certificato, oltre ad avere il “bollino verde”.

Dettaglio del certificato Server SSL visto dal browser

Figura 1 – Dettaglio del certificato Server SSL visto dal browser

Dall’output ricevuto dall’esecuzione del comando curl, ho evidenziato le righe che mostrano tutta la catena di certificazione (o certificate chain). Per coloro che sono più avvezzi all’utilizzo di cURL, ho evitato di specificare il parametro -k, utilizzato quando il server a cui vogliamo connetterci non dispone di un certificato SSL affidabile.

A questo punto possiamo affermare che l’installazione su Apache Karaf del nostro certificato SSL rilasciato da una CA riconosciuta è andata a buon fine.

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5,00 out of 5)
Loading...
0 Condivisioni

Antonio Musarra

I began my journey into the world of computing from an Olivetti M24 PC (http://it.wikipedia.org/wiki/Olivetti_M24) bought by my father for his work. Day after day, quickly taking control until … Now doing business consulting for projects in the enterprise application development using web-oriented technologies such as J2EE, Web Services, ESB, TIBCO, PHP.

Potrebbero interessarti anche...