Impossibile verificare localmente l'autorità dell'emittente


19

Non riesco ad aprire alcun URL https usando wget o curl:

$ wget https://www.python.org
--2015-04-27 17:17:33--  https://www.python.org/
Resolving www.python.org (www.python.org)... 103.245.222.223
Connecting to www.python.org (www.python.org)|103.245.222.223|:443... connected.
ERROR: cannot verify www.python.org's certificate, issued by "/C=US/O=DigiCert Inc/OU=www.digicert.com/CN=DigiCert SHA2 Extended Validation Server CA":
  Unable to locally verify the issuer's authority.
To connect to www.python.org insecurely, use '--no-check-certificate'.

$ curl https://www.python.org
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
 of Certificate Authority (CA) public keys (CA certs). If the default
 bundle file isn't adequate, you can specify an alternate file
 using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
 the bundle, the certificate verification probably failed due to a
 problem with the certificate (it might be expired, or the name might
 not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
 the -k (or --insecure) option.

Questo sta usando wget 1.12 e curl 7.30.0 su CentOS 5.5. Sembra che qualcosa non vada nel mio negozio di certificati locale, ma non ho idea di come procedere da qui. Qualche idea?

Aggiornamento: dopo aver aggiornato il pacchetto openssl da 0.9.8e-12.el5_4.6 a 0.9.8e-33.el5_11, ora c'è un errore diverso:

$ wget https://pypi.python.org
--2015-04-28 10:27:35--  https://pypi.python.org/
Resolving pypi.python.org (pypi.python.org)... 103.245.222.223
Connecting to pypi.python.org (pypi.python.org)|103.245.222.223|:443... connected.
ERROR: certificate common name "www.python.org" doesn't match requested host name "pypi.python.org".
To connect to pypi.python.org insecurely, use '--no-check-certificate'.

Penso che i certificati di root siano nel ca-certificatespacchetto. Questo pacchetto è installato? Forse prova a reinstallarlo. Se questo non è il problema, esegui strace -o /tmp/wget.strace wget https://www.python.orge pubblica la traccia risultante, che dovrebbe dirci dove si trova il problema.
Gilles 'SO- smetti di essere malvagio' il

@Gilles - Ho aggiornato il pacchetto openssl da 0.9.8e-12.el5_4.6 a 0.9.8e-33.el5_11 e l'errore è andato via (forse questo ha reinstallato i certificati root?), Ma ora c'è un errore diverso.
aco,

Sembra un errore temporaneo con questo sito specifico. Altri siti funzionano?
Gilles 'SO- smetti di essere malvagio' il

@Gilles - Anche altri siti Web non funzionano. Ad esempio, Google restituisce l'errore: il nome comune del certificato "google.com" non corrisponde al nome host richiesto "www.google.com.au".
aco,

Potrei risolvere lo stesso problema disabilitando Selinux: crypt.gen.nz/selinux/disable_selinux.html Saluti!

Risposte:




2

wgetprima della 1.14 non supporta il soggetto nome alternativo (SAN) *. PyPI utilizza una SAN come alternativa alla sua CN nel suo certificato e wget sta soffocando sulla mancata corrispondenza. L'aggiornamento di wget dovrebbe risolverlo.

* o eventualmente Server Name Indication (SNI) - Non sono sicuro di quale sia applicabile qui.

Riferimenti:


1

Soluzione 1:

openssl s_client -connect whateversite.com:443 -debug 

Ottieni la chiave del certificato e copia su /etc/ssl/certs.

$ wget https://www.python.org --ca-certificate=/etc/ssl/certsfile

Se vuoi andare in modo insicuro, prova la soluzione 2

Soluzione 2:

$ wget https://www.python.org --no-check-certificate

o utilizzando Curl

$ curl https://www.python.org --insecure

9
“Dottore, non posso camminare sulla mia gamba sinistra. - Soluzione 1: sposta ciò che ti serve vicino alla sedia in modo da non doverti alzare. Soluzione 2: hop. ”No, la soluzione è curare il problema. Il che, qui, significa riparare o reinstallare i certificati CA radice.
Gilles 'SO- smetti di essere malvagio' il

4
questo vale solo per i certificati autoportanti autofirmati
Pavel Niedoba,

1
Sì, questa è una cattiva idea. Soluzione 1 è insicuro troppo . Tutto quello che stai facendo è bypassare il controllo di wget fidandoti automaticamente del certificato da questo punto in poi. Dovresti risolvere il problema sottostante correggendo effettivamente i certificati di root a cui wget ha accesso.
Andrew Ferrier,

Anche se questa è solo una soluzione alternativa se i tuoi amministratori di sistema ti costringono a utilizzare elenchi di certificati radice rotti o impostazioni di sicurezza draconiane, non merita l'odio.
Nurettin,

0

Aggiorna l'ora sul server. Un secondo può causare questo problema!

Controllare con: date

Redhat / CentOS 6/7 yum -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org

Ubuntu / Debian apt-get -y install ntpdate; /usr/sbin/ntpdate -u pool.ntp.org


0

echo "check_certificate = off" >> ~ / .wgetrc


1
Questo è piuttosto pericoloso da suggerire.
appendi il

Questo riguarda solo il wgetcomando e non è una soluzione ma una soluzione alternativa.
mrc02_kr,
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.