it-swarm.com.de

Docker-Registrierungsanmeldung schlägt mit "Zertifikat von unbekannter Stelle signiert" fehl

Ich verwende eine private Docker-Registry auf Ubuntu und verwende S3 für die Speicherung. Ich habe Probleme mit Docker-Login/Push/Pull-Befehlen, um über SSL zu arbeiten. Ich verwende Nginx vor Gunicorn, um die Registrierung auszuführen. Es funktioniert ohne Probleme über HTTP, aber nach dem Wechsel zu HTTPS für ein Prod-System löst es den folgenden Fehler aus der Client-Docker-Anmeldung aus.

Ungültiger Registrierungsendpunkt: x509: Von einer unbekannten Behörde signiertes Zertifikat 

Ich habe ein günstiges PositiveSSL-Zertifikat von Commodo erworben, um dies zu nutzen. Ich habe sichergestellt, dass die Stammzertifizierungsstelle und die Zwischenzertifizierungsstellen auf dem Ubuntu-System installiert sind, auf dem die Registrierung ausgeführt wird. Das Folgende ist meine Nginx-Konfiguration für den Server 

     # Standard-Nginx-Site zum Ausführen der Docker-Registrierung 
 
 Upstream-Docker-Registry {
 Server localhost: 5000; 
} 
 
 server {
 listen 443; 
 
 server_name docker.ommited.net; 
 
 ssl ein; 
 ssl_certificate/etc/ssl /docker-registry.crt ;
 ssl_certificate_key /etc/ssl/docker-registry.key ;[.____.(
 proxy_set_header Host $ http_Host; # erforderlich für Docker-Clients 
 proxy_set_header X-Real-IP $ remote_addr; # die reale Client-IP weitergeben 
 
 client_max_body_size 0; # Deaktivieren Sie alle Grenzwerte, um HTTP 413 für das Hochladen von Bildern zu vermeiden. 
 
 
 Speicherort/{
 Proxy_Pass http: // localhost: 5000 /; 
 } 
}

Ich versuche herauszufinden, wie Docker das Zertifikat richtig erkennen können oder die Zertifikatwarnung ignorieren. Ich verwende die Docker-Registry-Version v0.7.3. Der bestimmte Client, den ich verwende, ist Docker-Version 1.1.2, Build d84a070. Wenn Sie die Registrierung in einem Browser aufrufen, wird das Zertifikat ordnungsgemäß erkannt. Jede Hilfe, die mich in die richtige Richtung weist, wäre sehr dankbar! 

16
isuschlue

Für billige/weniger bekannte Zertifikate wie die von COMODO oder StartSSL müssen Sie die gesamte Zertifikatskette der mit nginx verwendeten Zertifikatsdatei hinzufügen. Viele Betriebssysteme vertrauen nicht den Zwischenzertifizierungsstellen, sondern nur der Stammzertifizierungsstelle. Daher müssen Sie die fehlenden Schritte zwischen dem Zertifikat für Ihren Host und der vom Betriebssystem vertrauenswürdigen Stammzertifizierungsstelle eingeben.

In der E-Mail, mit der Sie Ihr Zertifikat erhalten haben, sollten Sie auch Links zu den Zwischenzertifizierungsstellen und der Stammzertifizierungsstelle finden. Öffnen Sie die Datei docker-registry.crt, scrollen Sie nach unten und hängen Sie die zwischengeschalteten Zertifizierungsstellen und schließlich das Stammzertifizierungsstellenzertifikat für die PositiveSSL-Kette an. Wenn Sie das getan haben, starten Sie Nginx neu. Du solltest jetzt gut sein.

13
sullivanmatt

Für RHEL-Hosts können Sie das CA-Zertifikat der PKI-CA-Liste auf dem Clienthost hinzufügen:

cp docker-registry.crt /etc/pki/ca-trust/source/anchors/docker-registry.crt
update-ca-trust
systemctl restart docker

Von https://www.happyassassin.net/2014/09/06/adding-your-freeipa-servers-ca-certificate-to-the-system-wide-ustuststore-on-Fedora-und-rhel/

3
Mark Lamourine

Wenn Sie letsencrypt und nginx verwenden, ändern Sie einfach das ssl_certificate Schlüssel von cert.pem bis fullchain.pem.

0
MagMax

Wenn Sie auf einem Mac arbeiten, fügen Sie einfach die Registrierung der Einstellung insecure-registries in ~/.docker/daemon.json hinzu:

{ "debug" : true, "experimental" : true, "registry-mirrors" : [], "insecure-registries" : ["registry.your.domain.de"] }

Falls Sie irgendwo einen Fehler machen (ich habe ein Komma in der JSON vergessen), könnten nach dem Starten des Docker-Daemons Probleme auftreten. Jeder Docker-Befehl, der einen Error response from daemon: Bad response from Docker engine auslöst. Ein paar Neustarts und Resets später löste sich von selbst.

0
David Nathan