Il y a deux façons d'atteindre le résultat:
Le chef doit trusted_dir
autoriser l'ajout de certificats à la liste de confiance. la documentation contient beaucoup de détails à ce sujet. L'ajout de votre certificat CA à ce répertoire résoudrait le problème. knife
a également dans un chemin légèrement différent selon sa propre documentation
Chef utilise sa propre liste de certificats CA dans /opt/chef/embedded/ssl/certs/cacert.pem
. Vous pouvez ajouter votre certificat CA à la fin de cette liste pour lui faire confiance.
La deuxième option a l'avantage de vous permettre d'exporter la variable d'environnement SSL_CERT_FILE
pointant vers chef cacert.pem
pour permettre à la plupart des outils utilisant la openssl
bibliothèque de connaître votre certificat CA.
Dans le cas d'un certificat auto-signé sur le serveur chef (ou un autre serveur utilisé comme cible dans une recette), knife ssl_fetch
permettrait à toutes les commandes de couteau de fonctionner.
Pour ajouter le certificat de serveur au cacert.pem pour le cas 2. ci-dessus, vous pouvez utiliser la commande suivante:
# 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
La commande openssl est incluse dans chef-dk, donc cela peut aussi être fait sous windows. Modifiez le chemin d'accès au c:\opscode\
lieu de /opt/
. Pour exporter la variable d'environnement, utilisez set SSL_CERT_FILE=...
(avec /P
pour l'ajouter définitivement à votre environnement) dans votre commande.