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

164

Das Ausführen wget https://www.dropbox.comfü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.
Russell Davis
quelle

Antworten:

131

Wenn ich mir die aktuellen Hacky-Lösungen hier anschaue, muss ich doch eine richtige Lösung beschreiben.

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

Verwenden Sie KEINE Curl- oder ähnlichen Hacks, um Zertifikate herunterzuladen (als benachbarte Antwortempfehlung), da dies grundsätzlich unsicher ist und das System gefährden kann.

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

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

Shnatsel
quelle
5
Vielen Dank für diese Antwort und insbesondere für die Erinnerung an die Datei ~ / .wgetrc. Als MacPorts-Benutzer befinden sich meine Zertifikate unter / opt / local / etc / openssl, eine Tatsache, die hoffentlich jemand nützlich findet.
Bryce Anderson
3
Und für Fink sind sie in /sw/etc/ssl/certs/ca-bundle.crt, das Teil des ca-bundlePakets ist - wie hier beschrieben .
Jhfrontz
Ich bin ln -s /etc/ssl /usr/sslmir nicht sicher, ob es ein Tippfehler ist, habe aber für mich funktioniert.
zkent
240

Wenn Sie die Gültigkeit des Zertifikats nicht überprüfen möchten, fügen Sie einfach die --no-check-certificateOption in der wget-Befehlszeile hinzu. Das hat bei mir gut funktioniert.

HINWEIS: Dies öffnet Sie für Man-in-the-Middle-Angriffe (MitM) und wird nicht empfohlen, wenn Sie Wert auf Sicherheit legen.

DH4
quelle
1
Das hat bei mir funktioniert. Die anderen Lösungen zur Installation und Aktualisierung der Zertifikate haben das Problem nicht gelöst. In meinem speziellen Fall gibt es keine Sicherheitsbedenken.
Marlar
103

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
cguenther
quelle
1
apt-get ist auf cygwin? apt-get ist auf redgat? ;)
Denis Chenu
5
ca-certificates wurde bereits auf meinem Computer installiert. Laufen hat update-ca-certificatesdas Problem gelöst.
Tomás Fox
Dies funktionierte auch bei meiner Synology DS215j mit Debian chroot.
Microspino
@fox update-ca-certificatesist ein Ubuntu-Befehl, der in Debian nicht verfügbar ist.
Devy
@ Devy Es funktionierte tatsächlich auf meinem Himbeer-Pi mit Debian Wheezy
Luis Lobo Borobia
13

Zunächst müssen die SSL-Zertifikate installiert werden. Anleitung (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 oben Genannte reicht aus, um es zu beheben curl, wgeterfordert jedoch einen zusätzlichen Symlink:

ln -sT /usr/ssl /etc/ssl
Russell Davis
quelle
6
Ist es nicht unsicher, Stammzertifizierungsstellen von einer zufälligen Website zu installieren, insbesondere mit haxx im Namen?
Chloe
6
@Chloe curl.haxx.se das ist die Entwickler-Site von cURL. Ziemlich vertrauenswürdige Leute.
ylluminate
Wie kann man es ohne Locken reparieren?
Mark Lakata
1
omfg der Symlink war das, was ich verpasst habe ... suchte 30 Minuten nach einem 1-Liner-Fix> <
Populus
4
Dies ist auf mehreren Ebenen hacky. Erstens müssen Sie die Zertifikate nicht manuell herunterladen, da es dafür ein Cygwin-Paket namens "ca-certificates" gibt. Zweitens funktioniert Symlinking nur, wenn Sie Administratorzugriff auf das System haben oder cygwin nur für Ihr Benutzerkonto installiert haben, was nicht immer der Fall ist, sodass der Code nicht zuverlässig ist.
Shnatsel
10

Vielleicht hilft das:

wget --no-check-certificate https://blah-blah.tld/path/filename
Alexey Soloviev
quelle
1
Noch eine: Diese Situation ist auch möglich, wenn Sie Kaspersky AntiVirus oder dieselbe Software verwenden (standardmäßig wird das normale verifizierte SSL-Zertifikat der Site durch ein eigenes ersetzt). Sie können daher die Überprüfung des SSL-Verkehrs in Antivirus soft deaktivieren.
Alexey Soloviev
4
apt-get install ca-certificates 

Das smacht den Unterschied;)

Pete
quelle
Es gibt kein apt-getin Cygwin, also funktioniert das nicht.
17.
1

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

Wget von Cygwin weiß nichts über das AV-Stammzertifikat. Wenn also festgestellt wird, dass das Zertifikat der Website mit einem nicht vertrauenswürdigen Zertifikat signiert wurde, wird dieser Fehler ausgegeben.

Um dies dauerhaft zu beheben, ohne AV zu deaktivieren, sollten Sie das AV- /etc/pki/ca-trust/source/anchorsStammzertifikat aus dem Windows-Zertifikatspeicher in eine PEM-Datei (Base64-Codierung) kopieren und ausführenupdate-ca-trust

Denis Bakharev
quelle
-2

Mach einfach

apt-get install ca-certificate
Tekintian
quelle
-4

Wenn Sie Windows verwenden, gehen Sie einfach zur Systemsteuerung, klicken Sie auf automatische Updates und dann auf den Link Windows Update-Website. Folgen Sie einfach dem Schritt. Zumindest funktioniert dies für mich, es werden keine Zertifikate mehr ausgestellt, dh wenn ich wie zuvor zu https://www.dropbox.com gehe .

Saiful
quelle
Dies ist nicht verwandt mit Cygwin
Synthead