it-swarm.com.de

Wie behebe ich Zertifikatfehler, wenn Sie wget auf einer HTTPS-URL in Cygwin ausführen?

Die Ausführung von wget https://www.dropbox.com führt beispielsweise zu folgenden Fehlern:

ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.
149
Russell Davis

Wenn ich mir hier aktuelle Lösungen ansehe, denke ich, muss ich doch eine richtige Lösung beschreiben.

Zuerst Sie müssen das cygwin-Paket ca-certificates über die Setup.exe von Cygwin installieren, um die Zertifikate zu erhalten. 

Verwenden Sie KEINE curl oder ähnliche Hacks zum Herunterladen von Zertifikaten (als benachbarte Antwortempfehlungen), da das ist grundsätzlich unsicher und kann das System beeinträchtigen.

Zweitens Sie müssen wget mitteilen, wo sich Ihre Zertifikate befinden, da diese in der Cygwin-Umgebung nicht standardmäßig abgerufen werden. Sie können dies entweder mit dem Befehlszeilenparameter --ca-directory=/usr/ssl/certs (am besten für Shell-Skripts) oder durch Hinzufügen von ca_directory = /usr/ssl/certs zur ~/.wgetrc-Datei tun.

Sie können dies auch beheben, indem Sie ln -sT /usr/ssl /etc/ssl wie in einer anderen Antwort ausgeführt ausführen. Dies funktioniert jedoch nur wenn Sie über Administratorzugriff auf das System verfügen. Andere Lösungen, die ich beschrieben habe, erfordern dies nicht.

125
Shnatsel

Wenn Sie die Gültigkeit des Zertifikats nicht prüfen möchten, fügen Sie einfach die Option --no-check-certificate in der wget-Befehlszeile hinzu. Das hat gut für mich funktioniert.

ANMERKUNG: Dies eröffnet Ihnen Man-in-the-Middle-Angriffe (MitM) und wird nicht empfohlen, wenn Sie sich für die Sicherheit interessieren.

224
DH4

Wenn das Problem darin besteht, dass eine bekannte Stammzertifizierungsstelle fehlt und Sie Ubuntu oder Debian verwenden, können Sie das Problem mit dieser einen Zeile lösen:

Sudo apt-get install ca-certificates
90
cguenther

Zunächst müssen die SSL-Zertifikate installiert werden. Anweisungen (basierend auf https://stackoverflow.com/a/4454754/278488 ):

pushd /usr/ssl/certs
curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash

Das Obige reicht aus, um curl zu beheben, aber wget erfordert einen zusätzlichen Symlink:

ln -sT /usr/ssl /etc/ssl
13
Russell Davis

Vielleicht hilft das: 

wget --no-check-certificate https://blah-blah.tld/path/filename
3
Alexey Soloviev
apt-get install ca-certificates 

Die s macht den Unterschied;)

2
Pete

Ich habe ein ähnliches Problem und habe es behoben, indem mein Antivirenprogramm (Kaspersky Free 18.0.0.405) vorübergehend deaktiviert wurde. Dieser AV verfügt über ein HTTPS-Interception-Modul, das alle in den HTTPS-Antworten gefundenen Zertifikate automatisch selbst signiert.

Wget von Cygwin weiß nichts über das AV-Stammzertifikat. Wenn das Zertifikat der Website mit einem nicht vertrauenswürdigen Zertifikat signiert wurde, gibt es diesen Fehler aus. 

Um dies dauerhaft zu beheben, ohne AV zu deaktivieren, sollten Sie das AV-Stammzertifikat aus dem Windows-Zertifikatspeicher als .pem-Datei (base64-Kodierung) nach /etc/pki/ca-trust/source/anchors kopieren und update-ca-trust ausführen.

0
Denis Bakharev