Come posso correggere gli errori del certificato quando eseguo wget su un URL HTTPS in Cygwin?


164

Ad esempio, l'esecuzione di wget https://www.dropbox.comrisultati nei seguenti errori:

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

Risposte:


131

Osservando le attuali soluzioni confuse, sento che devo descrivere una soluzione adeguata dopo tutto.

Innanzitutto, è necessario installare il pacchetto cygwin ca-certificatestramite setup.exe di Cygwin per ottenere i certificati.

NON utilizzare arricciature o hack simili per scaricare certificati (come consigli di risposta vicini) perché questo è fondamentalmente insicuro e potrebbe compromettere il sistema.

In secondo luogo, devi dire a wget dove sono i tuoi certificati, dal momento che non li preleva per impostazione predefinita nell'ambiente Cygwin. Se puoi farlo con il parametro della riga di comando --ca-directory=/usr/ssl/certs(migliore per gli script di shell) o aggiungendo ca_directory = /usr/ssl/certsal ~/.wgetrcfile.

Puoi anche risolverlo eseguendo ln -sT /usr/ssl /etc/sslcome indicato in un'altra risposta, ma funzionerà solo se hai accesso amministrativo al sistema. Altre soluzioni che ho descritto non lo richiedono.


5
Grazie per questa risposta, e in particolare per il promemoria sul file ~ / .wgetrc. Come utente MacPorts, i miei certificati si trovano in / opt / local / etc / openssl, un fatto che spero che qualcuno possa trovare utile.
Bryce Anderson,

3
E per il vero, sono in /sw/etc/ssl/certs/ca-bundle.crt che fa parte del ca-bundlepacchetto - come descritto qui .
jhfrontz,

Non sono sicuro che sia un errore di battitura, ma ha ln -s /etc/ssl /usr/sslfunzionato per me.
zkent,

240

Se non ti interessa verificare la validità del certificato, aggiungi l' --no-check-certificateopzione nella riga di comando di wget. Questo ha funzionato bene per me.

NOTA: questo ti apre agli attacchi man-in-the-middle (MitM) e non è raccomandato per qualsiasi cosa ti interessi della sicurezza.


1
Questo ha funzionato per me. Le altre soluzioni relative all'installazione e all'aggiornamento dei certificati non sono state risolte. Nel mio caso particolare non ci sono problemi di sicurezza.
marlar,

103

Se il problema è che manca una CA radice nota e quando si utilizza Ubuntu o Debian, è possibile risolvere il problema con questa riga:

sudo apt-get install ca-certificates

1
apt-get è su Cygwin? apt-get è su redgat? ;)
Denis Chenu,

5
i certificati ca erano già installati nel mio computer. L'esecuzione ha update-ca-certificatesrisolto il problema.
Tomás Fox,

Questo ha funzionato anche sul mio Synology DS215j con Debian chroot.
microspino,

@fox update-ca-certificatesè un comando ubuntu, non disponibile in debian.
Devy,

@Devy In realtà ha funzionato sul mio lampone pi debian wheezy
Luis Lobo Borobia,

13

Innanzitutto, è necessario installare i certificati SSL. Istruzioni (basate su 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

Quanto sopra è sufficiente per risolvere curl, ma wgetrichiede un link simbolico aggiuntivo:

ln -sT /usr/ssl /etc/ssl

6
Non è insicuro installare le autorità di certificazione radice da un sito Web casuale, in particolare con haxx nel nome?
Chloe,

6
@Chloe curl.haxx.se che è il sito di sviluppo di cURL. Gente abbastanza affidabile.
illuminerà il

come lo aggiusti senza arricciare?
Mark Lakata,

1
omfg il collegamento simbolico era quello che mi mancava ... ho cercato 30 minuti per una correzione 1 liner> <
Populus

4
Questo è confuso su più livelli. Innanzitutto, non è necessario scaricare manualmente i certificati perché esiste un pacchetto Cygwin per quello chiamato "certificati ca". In secondo luogo, il collegamento simbolico funzionerà solo se si ha accesso amministrativo al sistema o se si è installato cygwin solo per il proprio account utente, il che non è sempre il caso, quindi il codice non è affidabile.
Shnatsel,

10

Potrebbe essere questo aiuterà:

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

1
Ancora una volta: questa situazione è possibile anche se si utilizza Kaspersky AntiVirus o lo stesso software (per impostazione predefinita sostituisce il normale certificato SSL verificato del sito al proprio) - quindi, è possibile disabilitare il controllo del traffico SSL in Antivirus soft.
Alexey Soloviev,

4
apt-get install ca-certificates 

La sfa la differenza;)


Non c'è apt-getin Cygwin, quindi non funziona.
jlh

1

Ho il problema simile e l'ho risolto disabilitando temporaneamente il mio antivirus (Kaspersky Free 18.0.0.405). Questo AV ha un modulo di intercettazione HTTPS che auto-firma automaticamente tutti i certificati che trova nelle risposte HTTPS.

Wget di Cygwin non sa nulla del certificato radice AV, quindi quando rileva che il certificato del sito Web è stato firmato con certificato non attendibile, stampa quell'errore.

Per risolvere il problema in modo permanente senza disabilitare AV, è necessario copiare il certificato radice AV dall'archivio certificati di Windows /etc/pki/ca-trust/source/anchorscome file .pem (codifica base64) ed eseguireupdate-ca-trust



-4

Se si utilizza Windows, basta andare al pannello di controllo, fare clic su Aggiornamenti automatici, quindi fare clic sul collegamento Sito Web Windows Update. Segui il passaggio. Almeno questo funziona per me, niente più rilascio di certificati, ad esempio quando vado su https://www.dropbox.com come prima.


Questo non è correlato a Cygwin
Synthead
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.