11 votes

App / curl continue de recevoir une erreur de certificat expiré en raison de l'expiration du certificat Let's Encrypt.

Une application open source exécutée sur mon système macOS 10.13.6 et 10.14.6 rencontre un problème d'accès à un site Web via https qui utilise un certificat Let's Encrypt. Si j'utilise curl pour accéder au même site, j'obtiens également une erreur indiquant que le certificat a expiré.

Voici la sortie de curl -vv avec le nom d'hôte et l'adresse IP masqués :

* Rebuilt URL to: https://hostname/
*   Trying x.x.x.x...
* TCP_NODELAY set
* Connected to hostname (x.x.x.x) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* Sélection du chiffrement : ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
* Emplacement de vérification du certificat défini avec succès :
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
* TLSv1.2 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (OUT), TLS alert, Server hello (2):
* Problème de certificat SSL : le certificat a expiré
* Arrêt du flux de pause !
* Connexion 0 fermée
curl: (60) Problème de certificat SSL : le certificat a expiré
Plus de détails ici: https://curl.haxx.se/docs/sslcerts.html

curl effectue la vérification du certificat SSL par défaut...
(reste du texte non pertinent et supprimé)

J'ai confirmé que le certificat ISRG Root X1 est installé dans Keychain Access et est fiable.

De plus, je peux accéder au site en utilisant Safari ou tout autre navigateur Web. Cependant, l'application en question échoue toujours, tout comme curl.

Que dois-je faire pour résoudre ce problème? Je ne peux pas simplement utiliser le mode non sécurisé sur curl car le problème que j'essaie de résoudre est l'application qui ne peut pas accéder au site. Je ne suis pas sûr de la bibliothèque utilisée par l'application pour le https -- il peut s'agir de libcurl, mais je soupçonne qu'elle échoue pour la même raison que curl.

Petit ajout : l'application open source utilise OpenSSL 1.1.1j.

20voto

Bri Bri Points 1991

OpenSSL sur macOS n'utilise pas le trousseau de clés du système (ce qui est logique étant donné qu'il s'agit d'une bibliothèque multiplateforme) mais possède son propre fichier .pem contenant ses certificats racine. Même si mes systèmes ont une version plus récente d'OpenSSL installée via homebrew et/ou MacPorts, le fichier pem OpenSSL à l'échelle du système situé à /etc/ssl/cert.pem était obsolète et ne comprenait pas le certificat ISRG Root X1.

La solution :

  1. Renommez /etc/ssl/cert.pem en quelque chose d'autre. (Je suggère /etc/ssl/cert.pem.org)

  2. Téléchargez le dernier cacert.pem à partir de https://curl.se/docs/caextract.html

  3. Renommez-le en cert.pem

  4. Copiez-le dans /etc/ssl/cert.pem

Maintenant curl et toute autre application utilisant OpenSSL peuvent accéder à des sites web signés avec des certificats Let's Encrypt actuels.

En outre, le package MacPorts curl-ca-bundle installe un fichier pem contenant ISRG Root X1 à /opt/local/etc/openssl/cert.pem qui peut également être utilisé.

Autres solutions possibles :

  • Ajouter manuellement le certificat ISRG Root X1 à /etc/ssl/cert.pem

  • Configurer OpenSSL pour utiliser un autre fichier .pem pour ses certificats racine, tel que /opt/local/etc/openssl/cert.pem

1 votes

Belle. Mais il y a un potentiel problème de poule et d'oeuf car curl.se utilise un certificat dérivé du nouveau ISRG Root X1, en lequel vous semblez ne pas encore avoir confiance. Si vous avez un navigateur qui le fait, vous pouvez l'utiliser; sinon, vous pouvez contourner le problème en téléchargeant la nouvelle collection de certificats racine avec: curl --insecure https://curl.se/ca/cacert.pem -o cert.pem

0 votes

Heureusement, ce n'était pas un problème pour moi car je ne suis pas bloqué en utilisant uniquement curl. J'ai simplement téléchargé les nouveaux certificats en utilisant un navigateur. Mais si quelqu'un se trouvait dans une situation où il devait réparer curl avec curl, alors c'est un bon conseil.

1 votes

Merci. Cela a aidé après avoir essayé 5 solutions différentes.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X