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

So stellen Sie die MySQL5.7-Kodierung auf utf8mb4 ein

Ich bin vor kurzem auf ein Problem gestoßen. Die ...

503 Dienst nicht verfügbar Fehlerlösungserklärung

1. Beim Öffnen der Webseite wird die Meldung „503...

Zabbix überwacht Linux-Hosts basierend auf SNMP

Vorwort: Der Linux-Host ist relativ einfach zu ha...

Spezifische Schritte für den Vue-Browser zur Rückgabe der Überwachung

Vorwort Beim Teilen einer Seite hoffen Sie, durch...

Referenzschreiben im JS- und CSS-Stil

CSS: 1. <link type="text/css" href=&q...

Tutorial zur Installation und Konfiguration von MySQL 5.7 unter CentOS7 (YUM)

Installationsumgebung: CentOS7 64-Bit, MySQL5.7 1...

Docker-Compose-Installation DB2-Datenbankbetrieb

Es ist mühsam, die db2-Datenbank direkt auf dem H...

Allgemeine Funktionen der MySQL-Grundlagen

Inhaltsverzeichnis 1. Allgemeine Funktionsklassif...

Beispielüberprüfung MySQL | Update-Feld mit demselben Wert zeichnet Binlog auf

1. Einleitung Vor ein paar Tagen fragte mich ein ...

Zusammenfassung des Wissens zu CSS-Injection

Moderne Browser erlauben nicht mehr, JavaScript i...