Es gibt verschiedene Möglichkeiten, um das Ergebnis zu erzielen:
Chefkoch muss trusted_dir
das Hinzufügen eines Zertifikats zur vertrauenswürdigen Liste erlauben. Die Dokumentation enthält viele Details. Das Hinzufügen Ihres CA-Zertifikats zu diesem Verzeichnis würde das Problem lösen. knife
hat es auch in einem etwas anderen pfad als in seiner eigenen dokumentation
Chefkoch verwendet eine eigene CA-Zertifizierungsliste in /opt/chef/embedded/ssl/certs/cacert.pem
. Sie können Ihr CA-Zertifikat am Ende dieser Liste hinzufügen, um ihm zu vertrauen.
Die zweite Option bietet den Vorteil, dass SSL_CERT_FILE
die auf chef zeigende Umgebungsvariable exportiert werden kann , cacert.pem
damit die meisten Tools, die die openssl
Bibliothek verwenden, Ihr CA-Zertifikat kennen.
Im Fall eines selbstsignierten Zertifikats auf dem Chef-Server (oder einem anderen Server, der als Ziel in einem Rezept verwendet wird) knife ssl_fetch
können alle Messerbefehle ausgeführt werden.
Verwenden Sie den folgenden Befehl, um das Serverzertifikat zu cacert.pem für den obigen 2. Fall hinzuzufügen:
# 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
Der Befehl openssl ist in chef-dk enthalten, daher kann dies auch unter Windows durchgeführt werden. Der Patch wird c:\opscode\
anstelle von /opt/
und zum Exportieren der Umgebungsvariablen verwendet set SSL_CERT_FILE=...
( /P
um ihn dauerhaft zu Ihrer Umgebung hinzuzufügen).