So aktivieren Sie TLS- und CA-Authentifizierung in Docker

So aktivieren Sie TLS- und CA-Authentifizierung in Docker

Vorwort: Es ist für Docker unsicher, Port 2375 direkt zu öffnen. Andere können alles tun, solange sie sich damit verbinden. Im Folgenden erfahren Sie, wie Sie die TLS- und CA-Authentifizierung für Docker aktivieren und es mithilfe von Jenkins und Portainer verbinden.

1. Zertifikat generieren

Überprüfen Sie den Server-Hostnamen

Hostname 

Docker-TLS-CA.sh automatisch generieren

# !/bin/bash

# TLS- und CA-Zertifikate mit einem Klick generieren# Erstellen: 2021-08-25
# Aktualisierung : 25.08.2021
# @Autor: wuduoqiang

# Server-Hostname SERVER="6c377ffb8e86"
# Passwort PASSWORD="2cx&BUjsV4u%3TW9"
# Land COUNTRY="CN"
# Provinz STAAT="Provinz Hainan"
# Stadt CITY="Haikou"
# Organisationsname ORGANIZATION="Xiao Qiangzi Company"
# Organisationseinheit ORGANIZATIONAL_UNIT="Kleine Qiangzi-Einheit"
# E-Mail EMAIL="[email protected]"

# CA-Schlüssel generieren openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 2048

# CA-Zertifikat generieren openssl req -new -x509 -passin "pass:$PASSWORD" -days 3650 -key ca-key.pem -sha256 -out ca-cert.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL"

# Serverschlüssel generieren openssl genrsa -out server-key.pem 2048

# Erstellen Sie eine Anforderungsdatei zum Signieren des Serverzertifikats openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server-req.csr

# Serverzertifikat generieren openssl x509 -req -days 3650 -in server-req.csr -CA ca-cert.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial -out server-cert.pem

# Client-Schlüssel generieren openssl genrsa -out client-key.pem 2048

# Erstellen Sie eine Client-Zertifikat-Signatur-Anforderungsdatei openssl req -subj '/CN=client' -new -key client-key.pem -out client-req.csr

# Client-Zertifikat generieren sh -c 'echo "extendedKeyUsage=clientAuth" >> extfile.cnf'
openssl x509 -req -days 3650 -in client-req.csr -CA ca-cert.pem -CAkey ca-key.pem -passin "pass:$PASSWORT" -CAcreateserial -out client-cert.pem -extfile extfile.cnf

# Schlüsselberechtigungen ändern chmod 0400 ca-key.pem server-key.pem client-key.pem
# Zertifikatsberechtigungen ändern chmod 0444 ca-cert.pem server-cert.pem client-cert.pem
# Unnötige Dateien löschen# rm ca-cert.srl client-req.csr server-req.csr extfile.cnf 

Dateibeschreibung

ca.srl: Datensatz der Seriennummer des CA-Zertifikats fileca-cert.pem: CA-Zertifikatca-key.pem: CA-Schlüsselserver-key.pem: Server-Schlüsselserver-req.csr: Anforderung zur Signierung des Server-Zertifikats fileserver-cert.pem: Server-Zertifikatclient-key.pem: Client-Schlüsselextfile.cnf: Konfigurationsdatei der Client-Zertifikatserweiterung fileclient-req.csr: Anforderung zur Signierung des Client-Zertifikats fileclient-cert.pem: Client-Zertifikat

Befehlsanalyse

# -subj /C=$LAND/ST=$BUNDESSTAAT/L=$STADT/O=$ORGANISATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL
-subj sind die Informationen des angegebenen Zertifikatsantragstellers. C ist der Ländername.
ST ist der Name des Staates oder der Provinz
L steht für Locality Name (Ortsname)
O steht für den Organisationsnamen
OU ist der Name der Organisationseinheit
CN ist der gebräuchliche Name
emailAddress ist die E-Mail-Adresse 

2. Aktivieren Sie die Fernbedienung

Aktivieren Sie die Remote-Zugriffs-API von Docker

# Bearbeiten Sie die Datei vim /etc/systemd/system/docker.service
# Ändern Sie den Inhalt und achten Sie auf den angegebenen Speicherort des Zertifikats ExecStart=/usr/bin/dockerd \
--tlsverify \
--tlscacert=/etc/docker/ca-cert.pem \
--tlscert=/etc/docker/server-cert.pem \
--tlskey=/etc/docker/server-key.pem \
-H unix:///var/run/docker.sock \
-H tcp://0.0.0.0:2375
# Starten Sie den Dienst neu systemctl daemon-reload && systemctl restart docker 

Wenn Sie den Schlüssel und das Zertifikat nicht haben, können Sie keine Verbindung herstellen

Docker -H 192.168.8.248:2375 Bilder 

Ohne Schlüssel und Zertifikat ist keine Verbindung über den Hostnamen möglich.

docker -H 6c377ffb8e86:2375 Bilder

Darüber hinaus können Schlüssel und Zertifikat nicht ohne Verwendung des Hostnamens verbunden werden

curl https://192.168.8.248:2375/info --cert ./client-cert.pem --key ./client-key.pem --cacert ./ca-cert.pem 

Fügen Sie den Schlüssel und das Zertifikat hinzu und greifen Sie über den Hostnamen darauf zu

curl https://6c377ffb8e86:2375/info --cert ./client-cert.pem --key ./client-key.pem --cacert ./ca-cert.pem 

3. Remote-Verbindung

3.1 Jenkins-Verbindung

Anmeldeinformationen hinzufügen

Füllen Sie die Informationen aus

Testen Sie die Verbindung. Beachten Sie, dass hier der Hostname verwendet werden sollte

Wenn Jenkins über Docker installiert wird, müssen Sie den Hostnamen zuordnen

Version: '3'
Leistungen:
  Jenkins:
    Neustart: immer
    Bild: 192.168.8.247/xiaoqiangzai/jenkins:latest
    Containername: Jenkins
    Häfen:
      - „8888:8080“
      - „50000:50000“
    Bände:
      - ./data/jenkins_home:/var/jenkins_home
      - ./data/war/jenkins.war:/usr/share/jenkins/jenkins.war
    Umfeld:
      JENKINS_OPTS: "--prefix=/jenkins"
    zusätzliche_hosts:
      - „6c377ffb8e86:192.168.8.248“

3.2 Portainer-Verbindung

Wählen Sie den Client-Schlüssel und das Zertifikat sowie das CA-Zertifikat aus

Verbindung OK

Wenn Portainer mit Docker installiert ist, müssen Sie den Hostnamen zuordnen

Version: '3'
Leistungen:
  Träger:
    Neustart: immer
    Bild: portainer/portainer-ce:latest
    Containername: Portainer
    privilegiert: wahr
    Häfen:
      - „9000:9000“
    Bände:
      - ./Daten/Daten:/Daten
      - ./data/public:/öffentlich
    zusätzliche_hosts:
      - „6c377ffb8e86:192.168.8.248“

Dies ist das Ende dieses Artikels über die Schritte zum Aktivieren der TLS- und CA-Authentifizierung in Docker. Weitere Informationen zum Aktivieren der TLS- und CA-Authentifizierung in Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Detailliertes Beispiel für eine Remote-Verbindung zu Docker mithilfe einer TLS-verschlüsselten Kommunikation
  • Implementierung der One-Click-TLS-Verschlüsselung für die Docker-Remote-API
  • Docker stellt eine MySQL-Remoteverbindung bereit, um 2003-Probleme zu lösen
  • Docker ermöglicht sicheren TLS-Remoteverbindungszugriff

<<:  Detaillierte Beschreibung des HTML-Meta-Viewport-Attributs

>>:  Tägliches automatisches Backup der MySQL-Datenbank mit mysqldump in Centos7 schreiben

Artikel empfehlen

Gängige Angriffe auf Web-Frontends und Möglichkeiten, sie zu verhindern

Die Sicherheitsprobleme, die bei der Frontend-Ent...

Detaillierte Erklärung zum MySQL-Dateispeicher

Was ist ein Dateisystem Wir wissen, dass Speicher...

Das WeChat-Applet realisiert ein Verknüpfungsmenü

Um das Kursdesign zu realisieren, habe ich kürzli...

Zusammenfassung der Methoden zur Verbesserung der MySQL-Anzahl

Ich glaube, dass viele Programmierer mit MySQL ve...

CentOS 8 ist jetzt verfügbar

CentOS 8 ist jetzt verfügbar! Die Versionen von C...

Eine "klassische" Falle der MySQL UPDATE-Anweisung

Inhaltsverzeichnis 1. Problematische SQL-Anweisun...

So erstellen Sie https mit Nginx und dem kostenlosen Tencent Cloud-Zertifikat

Ich habe gelernt, wie man https bekommt. Kürzlich...

Detaillierte Schritte zum manuellen Konfigurieren der IP-Adresse in Linux

Inhaltsverzeichnis 1. Geben Sie zuerst das Konfig...

So lernen Sie algorithmische Komplexität mit JavaScript

Inhaltsverzeichnis Überblick Was ist die O-Notati...

Tipps, wie Sie aus Pixeln umfassende Markenerlebnisse machen

Herausgeber: In diesem Artikel wird die Rolle erö...

Besprechen Sie den Wert von Webstandards aus vier Aspekten mit einer Mindmap

Ich habe einige Werte grob aufgelistet, um die Di...

Detaillierte Erläuterung gängiger MySQL-Befehle im Linux-Terminal

Aufschlag: # chkconfig --list Alle Systemdienste ...