Jak naprawić błędy certyfikatów podczas uruchamiania wget na adresie URL HTTPS w Cygwin?


164

Na przykład uruchomienie wget https://www.dropbox.comskutkuje następującymi błędami:

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

Odpowiedzi:


131

Patrząc na obecne, hakerskie rozwiązania, czuję, że mimo wszystko muszę opisać właściwe rozwiązanie.

Najpierw musisz zainstalować pakiet cygwin ca-certificatesza pośrednictwem programu setup.exe Cygwin, aby uzyskać certyfikaty.

NIE używaj curl lub podobnych hacków do pobierania certyfikatów (jako sąsiednich porad dotyczących odpowiedzi), ponieważ jest to zasadniczo niepewne i może zagrozić systemowi.

Po drugie, musisz powiedzieć wget, gdzie są twoje certyfikaty, ponieważ nie pobiera ich domyślnie w środowisku Cygwin. Jeśli możesz to zrobić za pomocą parametru wiersza polecenia --ca-directory=/usr/ssl/certs(najlepiej dla skryptów powłoki) lub przez dodanie ca_directory = /usr/ssl/certsdo ~/.wgetrcpliku.

Możesz to również naprawić, uruchamiając ln -sT /usr/ssl /etc/sslzgodnie z inną odpowiedzią, ale zadziała to tylko wtedy, gdy masz dostęp administracyjny do systemu. Inne opisane przeze mnie rozwiązania tego nie wymagają.


5
Dzięki za tę odpowiedź, a zwłaszcza za przypomnienie o pliku ~ / .wgetrc. Jako użytkownik MacPorts moje certyfikaty znajdują się w / opt / local / etc / openssl, co, mam nadzieję, komuś się przyda.
— Bryce Anderson

3
A dla fink, są w /sw/etc/ssl/certs/ca-bundle.crt, który jest częścią ca-bundlepakietu - jak opisano tutaj .
— jhfrontz

Nie jestem pewien, czy to literówka, ale ln -s /etc/ssl /usr/sslzadziałało dla mnie.
— zkent

240

Jeśli nie zależy Ci na sprawdzeniu ważności certyfikatu, po prostu dodaj --no-check-certificateopcję w wierszu poleceń wget. To działało dobrze dla mnie.

UWAGA: Otwiera to cię na ataki typu man-in-the-middle (MitM) i nie jest zalecane w przypadku niczego, na czym zależy Ci na bezpieczeństwie.


1
To zadziałało dla mnie. Inne rozwiązania dotyczące instalacji i aktualizacji certyfikatów nie rozwiązały tego problemu. W moim przypadku nie ma obaw dotyczących bezpieczeństwa.
— marlar

103

Jeśli problem polega na tym, że brakuje znanego głównego urzędu certyfikacji i gdy używasz Ubuntu lub Debian, możesz rozwiązać problem za pomocą tej jednej linii:

sudo apt-get install ca-certificates

1
apt-get jest na Cygwin? apt-get jest na redgacie? ;)
— Denis Chenu

5
c-certyfikaty zostały już zainstalowane na moim komputerze. Uruchomienie update-ca-certificatesrozwiązało problem.
— Tomás Fox

Działało to również na moim serwerze Synology DS215j z chrootem Debiana.
— microspino

@fox update-ca-certificatesto polecenie ubuntu, niedostępne w debianie.
— Devy

@Devy To faktycznie działało na moim raspberry pi z Debian wheezy
— Luis Lobo Borobia

13

Najpierw należy zainstalować certyfikaty SSL. Instrukcje (na podstawie 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

Powyższe wystarczy, aby naprawić curl, ale wgetwymaga dodatkowego łącza symbolicznego:

ln -sT /usr/ssl /etc/ssl

6
Czy instalowanie głównych urzędów certyfikacji z losowej witryny internetowej, zwłaszcza z haxx w nazwie, nie jest niebezpieczne?
— Chloe

6
@Chloe curl.haxx.se to strona deweloperów cURL. Całkiem godni zaufania ludzie.
— ylluminate

jak to naprawić bez zawijania?
— Mark Lakata,

1
omfg przegapiłem link symboliczny ... szukałem 30 minut dla poprawki 1 linera> <
— Populus,

4
To jest hacking na kilku poziomach. Po pierwsze, nie musisz ręcznie pobierać certyfikatów, ponieważ istnieje pakiet Cygwin o nazwie „ca-Certificates”. Po drugie, dowiązanie symboliczne będzie działać tylko wtedy, gdy masz dostęp administracyjny do systemu lub zainstalowałeś cygwin tylko dla swojego konta użytkownika, co nie zawsze ma miejsce, więc kod nie jest wiarygodny.
— Shnatsel

10

Może to pomoże:

wget --no-check-certificate https://blah-blah.tld/path/filename

1
Jeszcze jedno: ta sytuacja jest również możliwa, jeśli używasz Kaspersky AntiVirus lub tego samego oprogramowania (domyślnie zastępuje normalny zweryfikowany certyfikat SSL witryny na ich własny) - więc możesz wyłączyć sprawdzanie ruchu SSL w oprogramowaniu antywirusowym.
— Alexey Soloviev

4
apt-get install ca-certificates 

To srobi różnicę;)


W apt-getcygwin nie ma , więc to nie działa.
— jlh

1

Mam podobny problem i naprawiłem go, tymczasowo wyłączając program antywirusowy (Kaspersky Free 18.0.0.405). To AV ma moduł przechwytywania HTTPS, który automatycznie podpisuje wszystkie certyfikaty znalezione w odpowiedziach HTTPS.

Wget z Cygwin nie wie nic o certyfikacie głównym AV, więc gdy stwierdzi, że certyfikat tej witryny został podpisany certyfikatem nieufnym, drukuje ten błąd.

Aby to naprawić na stałe bez wyłączania AV, należy skopiować główny certyfikat AV z magazynu certyfikatów systemu Windows do /etc/pki/ca-trust/source/anchorspliku .pem (kodowanie base64) i uruchomićupdate-ca-trust



-4

Jeśli używasz systemu Windows, po prostu przejdź do panelu sterowania, kliknij automatyczne aktualizacje, a następnie kliknij łącze Witryna sieci Web Windows Update. Po prostu postępuj zgodnie z instrukcjami. Przynajmniej to działa dla mnie, nie ma już wydawania certyfikatów, tj. Za każdym razem, gdy wchodzę na https://www.dropbox.com, jak poprzednio.


To nie jest związane z Cygwin
— Synthead
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.