6 votes

Pourquoi curl fonctionne avec un site https spécifique, mais wget a des problèmes avec les certificats?

Centos 6. Après la récente mise à jour de ca-certificates, j'ai rencontré quelques problèmes. J'ai les versions les plus récentes de curl pour CentOS 6 :

-bash-4.1$ curl -V -v
curl 7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
Protocoles: tftp ftp telnet dict ldap ldaps http file https ftps scp sftp 
Fonctionnalités: GSS-Negotiate IDN IPv6 Largefile NTLM SSL libz 

Et wget :

-bash-4.1$ wget -V -v
GNU Wget 1.12 construit sur linux-gnu.

+digest +ipv6 +nls +ntlm +opie +md5/openssl +https -gnutls +openssl 
-iri 

Wgetrc: 
    /etc/wgetrc (système)
Locale: /usr/share/locale 
Compilation: gcc -DHAVE_CONFIG_H -DSYSTEM_WGETRC="/etc/wgetrc" 
    -DLOCALEDIR="/usr/share/locale" -I. -I../lib -O2 -g -pipe -Wall 
    -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector 
    --param=ssp-buffer-size=4 -m64 -mtune=generic -fno-strict-aliasing 
Lien: gcc -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions 
    -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic 
    -fno-strict-aliasing -Wl,-z,relro -lssl -lcrypto 
    /usr/lib64/libssl.so /usr/lib64/libcrypto.so -ldl -lrt ftp-opie.o 
    openssl.o http-ntlm.o gen-md5.o ../lib/libgnu.a 

Copyright (C) 2009 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
.
Il s'agit d'un logiciel libre : vous êtes libre de le modifier et de le redistribuer.
Aucune garantie n'est offerte, dans la mesure autorisée par la loi.

À l'origine écrit par Hrvoje Niksic .
Actuellement maintenu par Micah Cowan .
Veuillez envoyer rapports de bogues et questions à .

Maintenant, j'ai un problème avec les certificats de CA https://www.certum.pl/. curl fonctionne bien :

-bash-4.1$ curl -v 'https://certum.pl/'
* Connexion à certum.pl (213.222.201.147) port 443 (#0)
*   Essai de connexion àcertum.pl...
* Connecté à certum.pl (213.222.201.147) port 443 (#0)
* Initialisation de NSS avec le chemin des certificats : sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
* Connexion SSL avec TLS_DHE_RSA_WITH_AES_256_CBC_SHA
* Certificat du serveur:
*       sujet: CN=certum.pl,businessCategory=Private Organization,serialNumber=0000421310,incorporationState=pomorskie,incorporationLocality=Gdansk,incorporationCountry=PL,postalCode=81-321,STREET=Podolska 21,ST=pomorskie,L=Gdynia,OU=Certification Authority Division,O=Asseco Data Systems S.A.,C=PL
*       date de début : 16 août 09:10:07 2017 GMT
*       date d'expiration : 16 août 09:10:07 2019 GMT
*       nom commun : certum.pl
*       émetteur: CN=Certum Extended Validation CA SHA2,OU=Certum Certification Authority,O=Unizeto Technologies S.A.,C=PL
> GET / HTTP/1.1
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
> Host: certum.pl
> Accept: */*
> 
< HTTP/1.1 302 Found
< Date: Tue, 17 Jul 2018 07:02:41 GMT
< Server: Apache
< Pragma: no-cache
< Location: https://www.certum.pl/pl/
< Content-Length: 209
< Connection: close
< Content-Type: text/html; charset=iso-8859-1
< 

302 Found

Found
Le document a été déplacé ici.

* Fermeture de la connexion 0

Mais wget retourne ERROR :

-bash-4.1$ wget -d -O-  'https://certum.pl/'
Définition de --output-document (outputdocument) à -
Sortie DEBUG créée par Wget 1.12 sur linux-gnu.

--2018-07-17 09:04:42--  https://certum.pl/
Résolution de certum.pl... 213.222.201.147
Mise en cache de certum.pl => 213.222.201.147
Connexion à certum.pl|213.222.201.147|:443... connecté.
Création de la socket 3.
Libération de 0x0000000000d2af00 (nouveau refcount 1).
Initialisation de la poignée SSL.
Poignée de poignée de main réussie ; la socket connectée 3 au SSL poignée 0x0000000000d4bb40
certificat :
  sujet : /C=PL/O=Asseco Data Systems S.A./OU=Certification Authority Division/L=Gdynia/ST=pomorskie/street=Podolska 21/postalCode=81-321/1.3.6.1.4.1.311.60.2.1.3=PL/1.3.6.1.4.1.311.60.2.1.1=Gda\\xC5\\x84sk/1.3.6.1.4.1.311.60.2.1.2=pomorskie/serialNumber=0000421310/businessCategory=Private Organization/CN=certum.pl
  émetteur :  /C=PL/O=Unizeto Technologies S.A./OU=Certum Certification Authority/CN=Certum Extended Validation CA SHA2
ERREUR: ne peut pas vérifier le certificat de certum.pl, émis par `/C=PL/O=Unizeto Technologies S.A./OU=Certum Certification Authority/CN=Certum Extended Validation CA SHA2' :
  Impossible de vérifier localement l'autorité de l'émetteur.
Pour vous connecter à certum.pl de manière non sécurisée, utilisez `--no-check-certificate'.
Fermé 3/SSL 0x0000000000d4bb40

La même chose se produit lorsque je spécifie les certificats CA dans la commande - pour wget : --ca-certificate=/etc/pki/tls/certs/ca-bundle.crt et pour curl : --cacert /etc/pki/tls/certs/ca-bundle.crt

La version de ca-certificates est maintenant 2018.2.22-65.1.el6 - la plus récente. La version de openssl est maintenant 1.0.1e-57.el6 - la plus récente.

Avez-vous une idée de ce qui se passe ?

10voto

snowdude Points 2790

wget est lié à OpenSSL alors que curl est lié aux bibliothèques cryptographiques NSS, ce qui explique probablement pourquoi ils utilisent des magasins de confiance différents.

Je n'ai pas de système RHEL 6 à proximité mais probablement rpm -ql nss montrera un magasin de confiance différent / supplémentaire par rapport à ce qu'OpenSSL utilise.

Ce ressource de Red Hat peut être pertinente https://access.redhat.com/solutions/1549003

En bref: update-ca-trust extract

0voto

keypress Points 231

Ma solution de travail pour ce problème avec Centos 6 est d'ajouter le certificat CA "manquant" au magasin de confiance géré par ca-certificates. Je ne sais pas pourquoi ils l'ont supprimé lors de cette mise à jour. Donc :

  1. Copiez le certificat CA racine de la page "https://certum.pl/" dans /etc/pki/ca-trust/source/anchors/
  2. Exécutez : update-ca-trust enable
  3. Exécutez : update-ca-trust extract

Je ne sais toujours pas complètement pourquoi wget ne fonctionnait pas et que curl marchait. Lorsque j'ai essayé rpm -ql nss, il n'y avait aucune information sur un autre magasin de confiance. Je ne sais pas où il pourrait être situé.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X