Wie man ein selbstsigniertes SSL-Zertifikat für ein Docker-Registry generiert

DockerDockerBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

Das Sichern Ihres Docker-Registry ist entscheidend für die Aufrechterhaltung der Integrität Ihrer Containerimages und die Gewährleistung der Sicherheit Ihrer Docker-basierten Anwendungen. In diesem Tutorial führen wir Sie durch den Prozess der Generierung eines selbstsignierten SSL-Zertifikats für Ihr Docker-Registry, wodurch Sie eine vertrauenswürdige Verbindung zwischen Ihren Docker-Clients und dem Registry herstellen können.

Selbstsignierte SSL-Zertifikate verstehen

SSL (Secure Sockets Layer)-Zertifikate werden verwendet, um eine sichere Verbindung zwischen einem Client und einem Server herzustellen. Sie gewährleisten, dass die zwischen den beiden Parteien übertragenen Daten verschlüsselt und vor unbefugtem Zugang geschützt sind. Ein selbstsigniertes SSL-Zertifikat ist ein Typ von SSL-Zertifikat, das von derselben Entität erstellt und signiert wird, anstatt von einer vertrauenswürdigen Zertifizierungsstelle (Certificate Authority, CA) signiert zu werden.

Selbstsignierte SSL-Zertifikate werden häufig in Entwicklung- oder Testumgebungen verwendet, wo die Kosten und Komplexität des Erhaltens eines von einer CA signierten Zertifikats möglicherweise nicht erforderlich sind. Sie können auch in Szenarien verwendet werden, in denen keine vertrauenswürdige CA verfügbar ist oder in denen die Organisation mehr Kontrolle über den Zertifikatsmanagementprozess haben möchte.

Selbstsignierte SSL-Zertifikate werden jedoch standardmäßig von Webbrowsern und anderen Clients nicht vertraut. Wenn ein Client ein selbstsigniertes Zertifikat antrifft, wird normalerweise eine Warnmeldung angezeigt, die angibt, dass das Zertifikat nicht vertraut wird. Dies kann Probleme mit Webanwendungen und anderen Diensten verursachen, die auf sicheren Verbindungen zurückgreifen.

Um ein selbstsigniertes SSL-Zertifikat in einer Produktionsumgebung zu verwenden, müssen Sie sicherstellen, dass das Zertifikat von allen Clients vertraut wird, die Ihre Anwendung oder Ihren Dienst zugreifen werden. Dies kann durch die Verteilung des selbstsignierten Zertifikats an die Clients und die Konfiguration der Clients, um das Zertifikat zu vertrauen, erreicht werden.

Im Kontext eines Docker-Registry kann das Verwenden eines selbstsignierten SSL-Zertifikats eine praktische Lösung sein, insbesondere wenn Sie ein privates Registry innerhalb Ihrer Organisation betreiben. Indem Sie ein selbstsigniertes Zertifikat generieren und Docker so konfigurieren, dass es es verwendet, können Sie sicherstellen, dass die Kommunikation zwischen dem Docker-Client und dem Registry sicher ist, ohne dass ein von einer vertrauenswürdigen CA signiertes Zertifikat erforderlich ist.

Generieren eines selbstsignierten SSL-Zertifikats für ein Docker-Registry

Voraussetzungen

Bevor Sie das selbstsignierte SSL-Zertifikat generieren, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:

  • Ein Linux-basiertes System (in diesem Beispiel wird Ubuntu 22.04 verwendet)
  • OpenSSL installiert (in der Regel auf den meisten Linux-Distributionen vorinstalliert)

Schritte zum Generieren eines selbstsignierten SSL-Zertifikats

  1. Öffnen Sie ein Terminal auf Ihrem Ubuntu 22.04-System.

  2. Generieren Sie einen privaten Schlüssel für das SSL-Zertifikat:

openssl genrsa -out registry.key 2048
  1. Generieren Sie ein selbstsigniertes SSL-Zertifikat mithilfe des privaten Schlüssels:
openssl req -new -x509 -key registry.key -out registry.crt -days 365

Dieser Befehl wird Sie auffordern, verschiedene Details über das Zertifikat einzugeben, wie zum Beispiel den Common Name (CN), der mit dem Hostnamen oder der IP-Adresse Ihres Docker-Registry übereinstimmen sollte.

  1. Überprüfen Sie das generierte Zertifikat:
openssl x509 -in registry.crt -text -noout

Dies wird die Details des generierten selbstsignierten SSL-Zertifikats anzeigen.

  1. (Optional) Wenn Sie einen benutzerdefinierten Domänennamen für Ihr Docker-Registry verwenden möchten, können Sie die /etc/hosts-Datei auf dem System, auf dem der Docker-Client ausgeführt wird, aktualisieren, um die Domäne auf die IP-Adresse des Docker-Registry zuzuordnen.
graph LR A[Generate Private Key] --> B[Generate Self-Signed SSL Certificate] B --> C[Verify Certificate] C --> D[Update /etc/hosts (Optional)]

Indem Sie diese Schritte befolgen, haben Sie ein selbstsigniertes SSL-Zertifikat generiert, das Sie verwenden können, um Ihr Docker-Registry zu schützen. Der nächste Schritt besteht darin, Docker so zu konfigurieren, dass es dieses selbstsignierte Zertifikat verwendet.

Konfigurieren von Docker, um das selbstsignierte Zertifikat zu verwenden

Kopieren des selbstsignierten Zertifikats auf den Docker-Host

  1. Kopieren Sie die in Schritt zuvor erstellte Datei registry.crt auf den Docker-Host. Sie können ein Dateiübertragungstool oder den scp-Befehl verwenden, um die Datei zu kopieren.
scp registry.crt user@docker-host:/etc/docker/certs.d/myregistry.example.com/ca.crt

Ersetzen Sie user@docker-host durch den passenden Benutzer und den Hostnamen oder die IP-Adresse Ihres Docker-Hosts und myregistry.example.com durch den Hostnamen oder die IP-Adresse Ihres Docker-Registry.

Konfigurieren von Docker, um das selbstsignierte Zertifikat zu verwenden

  1. Auf dem Docker-Host erstellen Sie das Verzeichnis für das selbstsignierte Zertifikat:
sudo mkdir -p /etc/docker/certs.d/myregistry.example.com
  1. Kopieren Sie die Datei registry.crt in das neu erstellte Verzeichnis:
sudo cp registry.crt /etc/docker/certs.d/myregistry.example.com/ca.crt
  1. Starten Sie den Docker-Dämon neu, um die Änderungen anzuwenden:
sudo systemctl restart docker

Überprüfen der Konfiguration

  1. Versuchen Sie, ein Image von Ihrem Docker-Registry mithilfe des Docker-Clients zu ziehen:
docker pull myregistry.example.com/my-image:latest

Wenn die Konfiguration korrekt ist, sollte der Docker-Client ohne SSL/TLS-bezogene Fehler mit dem Registry verbunden sein können.

graph LR A[Copy Certificate to Docker Host] --> B[Create Certificate Directory] B --> C[Copy Certificate to Directory] C --> D[Restart Docker Daemon] D --> E[Verify Configuration]

Indem Sie diese Schritte befolgen, haben Sie Docker so konfiguriert, dass es das selbstsignierte SSL-Zertifikat für Ihr Docker-Registry verwendet. Dies gewährleistet, dass die Kommunikation zwischen dem Docker-Client und dem Registry sicher ist, auch wenn das Zertifikat nicht von einer vertrauenswürdigen Zertifizierungsstelle signiert ist.

Zusammenfassung

Indem Sie die in diesem Tutorial beschriebenen Schritte befolgen, können Sie ein selbstsigniertes SSL-Zertifikat für Ihr Docker-Registry generieren, Docker so konfigurieren, dass es das Zertifikat verwendet, und sichere Kommunikation zwischen Ihren Docker-Clients und dem Registry gewährleisten. Dies wird Ihnen helfen, die Sicherheit Ihrer Docker-basierten Infrastruktur zu verbessern und Ihren gesamten Docker-Bereitstellungsvorgang zu vereinfachen.