Come posso includere il mio certificato CA interno per convalidare gli scambi SSL in Chef?


15

Utilizziamo un'autorità di certificazione interna per creare certificati server nella mia azienda.

Dobbiamo anche occuparci di un proxy trasparente che esegue l'intercettazione SSL (MITM).

Riscontro regolarmente errori di convalida SSL a causa della mancata conoscenza da parte di Chef del certificato CA e talvolta degli strumenti (berkshelf, knife, persino lo stesso client chef quando si parla al server per la prima volta da quando lo chef 12 abilita SSL per impostazione predefinita).

La domanda è: come faccio a informare Chef del mio certificato CA per ottenere scambi SSL validi?

Risposte:


13

C'è un paio di modi per ottenere il risultato:

  1. Lo chef deve trusted_dirconsentire l'aggiunta del certificato all'elenco di fiducia. la documentazione contiene molti dettagli al riguardo. L'aggiunta del certificato CA a questa directory risolverebbe il problema. knifeha anche un percorso leggermente diverso secondo la propria documentazione

  2. Lo chef utilizza il proprio elenco di certificati CA in /opt/chef/embedded/ssl/certs/cacert.pem. È possibile aggiungere il certificato CA alla fine di questo elenco per considerarlo attendibile.

La seconda opzione ha il vantaggio di consentire l'esportazione della variabile di ambiente che SSL_CERT_FILEpunta a chef cacert.pemper consentire alla maggior parte degli strumenti che utilizzano la openssllibreria di conoscere il proprio certificato CA.

Nel caso di un certificato autofirmato sul server chef (o un altro server utilizzato come destinazione in una ricetta), knife ssl_fetchconsentirebbe a tutti i comandi di coltello di funzionare.

Per aggiungere il certificato del server a cacert.pem per il caso 2. precedente, è possibile utilizzare il comando seguente:

# For a self signed CA certiticate
openssl s_client -showcerts -connect <YOUR_CHEF_SERVER>:443 </dev/null 2>/dev/null|openssl x509 -outform PEM >> /opt/chefdk/embedded/ssl/certs/cacert.pem

# For an internal CA signed certificate:
openssl s_client -showcerts -verify 5 -connect <YOUR_CHEF_SERVER>:443 </dev/null 2>/dev/null | awk '/BEGIN/,/END/{if(/BEGIN/){a++}; certs[a]=(certs[a] "\n" $0)}; END {print certs[a]}' >> /opt/chefdk/embedded/ssl/certs/cacert.pem

export SSL_CERT_FILE=/opt/chefdk/embedded/ssl/certs/cacert.pem

Il comando openssl è incluso in chef-dk, quindi questo può essere fatto anche in Windows, la patch cambia in c:\opscode\invece di /opt/ed esportare l'uso della variabile d'ambiente set SSL_CERT_FILE=...(con /Pper aggiungerlo permanentemente al tuo ambiente)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.