Wie füge ich mein internes CA-Zertifikat hinzu, um den SSL-Austausch in Chef zu validieren?

15

Wir verwenden eine interne Zertifizierungsstelle, um Serverzertifikate in meinem Unternehmen zu erstellen.

Wir müssen uns auch mit einem transparenten Proxy befassen, der SSL Interception (MITM) ausführt.

Ich stoße regelmäßig auf Fehler bei der SSL-Validierung, weil Chef das CA-Zertifikat nicht kennt und manchmal das Werkzeug herumsteht (Berkshelf, Messer, selbst Chef-Client, wenn er zum ersten Mal seit Chef 12 standardmäßig SSL aktiviert).

Die Frage ist: Wie mache ich Chef auf mein CA-Zertifikat aufmerksam, um einen gültigen SSL-Austausch zu erhalten?

Tensibai
quelle

Antworten:

13

Es gibt verschiedene Möglichkeiten, um das Ergebnis zu erzielen:

  1. Chefkoch muss trusted_dirdas 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. knifehat es auch in einem etwas anderen pfad als in seiner eigenen dokumentation

  2. 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_FILEdie auf chef zeigende Umgebungsvariable exportiert werden kann , cacert.pemdamit die meisten Tools, die die opensslBibliothek 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_fetchkö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=...( /Pum ihn dauerhaft zu Ihrer Umgebung hinzuzufügen).

Tensibai
quelle