17 votes

Échec du téléchargement de Homebrew Cask. Problème de certificat SSL : le certificat a expiré

J'essaie d'installer NetLogo via Fût de bière artisanale . J'exécute la commande suivante :

brew cask install netlogo

Homebrew lance le téléchargement mais affiche immédiatement l'erreur suivante :

==> Downloading https://ccl.northwestern.edu/netlogo/6.1.1/NetLogo-6.1.1.dmg
#=#=-#  #                                                                     
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
Error: Download failed on Cask 'netlogo' with message: Download failed: https://ccl.northwestern.edu/netlogo/6.1.1/NetLogo-6.1.1.dmg

J'ai cru comprendre que ce problème était dû à l'expiration du certificat sur le site web qui héberge le programme d'installation de NetLogo.

Existe-t-il un moyen de contourner ce problème ? Par exemple, existe-t-il un argument qui pourrait être transmis à brew pour qu'il ignore l'erreur ? ou fournir une résolution ? ou puis-je télécharger manuellement le DMG et le placer dans le répertoire cache d'Homebrew afin qu'Homebrew saute le téléchargement lors de l'exécution de la commande d'installation ?

24voto

nohillside Points 82672

Ceci est documenté aquí voir aussi https://curl.haxx.se/mail/lib-2020-06/0010.html y https://security.stackexchange.com/questions/232445/https-connection-to-specific-sites-fail-with-curl-on-MacOS .

La solution proposée consiste à définir HOMEBREW_FORCE_BREWED_CURL

HOMEBREW_FORCE_BREWED_CURL=1 brew cask install netlogo

Si vous utilisez Catalina, vous pouvez utiliser

export CURL_SSL_BACKEND=secure-transport

d'avoir curl ne pas utiliser LibreSSL (qui semble avoir le problème).

Vous pouvez également supprimer l'entrée pour AddTrust de /etc/ssl/cert.pem (c'est la première entrée du fichier, il suffit de supprimer toutes celles qui ont expiré fin mai 2020).

8voto

fgoudra Points 161

Pour les personnes qui n'ont pas de brassée installée curl la réponse acceptée n'est pas suffisante car il est impossible d'installer la homebrew curl avec des certificats non valides (puisque brew install utilise le système curl lorsque le homebrew curl n'est pas disponible). Une façon de contourner ce problème est de passer l'option --insecure à la système curl lors de l'installation du homebrew curl par le biais de la ~/.curlrc fichier. Cependant, il faut définir le HOMEBREW_CURLRC=1 variable d'environnement avant cela :

edit or create ~/.curlrc file and add "--insecure" to it then:
$ HOMEBREW_CURLRC=1 brew install curl
delete ~/.curlrc file or remove the "--insecure" from it
$ [HOMEBREW_FORCE_BREWED_CURL=1 if needed] brew install whatever

Source :

1voto

Jose Chavez Points 645

Lorsque j'accède à l'URL à partir d'ici, le certificat SSL n'est pas expiré. Je vous suggère de réessayer la commande maintenant pour voir si elle fonctionne.

Si vous obtenez toujours la même erreur, je vérifierais les paramètres de date et d'heure de votre ordinateur - ils peuvent être incorrects.

Si elles sont correctes, je suggère d'installer manuellement le programme. Le code Cask pour cette application spécifique est très simple, donc vous pouvez facilement le faire manuellement.

Il suffit d'ouvrir cette URL dans un navigateur :

https://ccl.northwestern.edu/netlogo/6.1.1/

Téléchargez le fichier DMG pour MacOS. Double-cliquez sur le DMG pour l'ouvrir, et installez-le comme n'importe quelle autre application.

MISE À JOUR : compte tenu du commentaire ci-dessous, la question n'a pas été posée dans le but d'obtenir l'installation de NetLogo, mais plutôt pour comprendre pourquoi le problème se produit et comment le résoudre correctement :

Si l'on examine de plus près la communication TLS avec le serveur de téléchargement (ccl.northwestern.edu), on constate que le problème vient en fait des certificats intermédiaires groupés. En d'autres termes, le certificat réel de ccl.northwestern.edu est correct et n'a pas expiré, mais le serveur répond avec un certain nombre de certificats intermédiaires et de certificats CA qui ont expiré (en particulier les certificats "USERTrust RSA Certification Authority" et "AddTrust Extdernal CA Root").

Lorsque vous accédez au site dans Safari, vous n'obtenez pas d'erreur, car il utilise le magasin de certificats intégré de MacOS. Dans le trousseau, vous pouvez vérifier que MacOS dispose par défaut d'un certificat CA à jour et non expiré pour "USERTrust RSA Certification Authority". Par conséquent, vous n'obtenez pas d'erreur ici.

Cependant, lorsque vous utilisez brew-cask le fichier est téléchargé en utilisant curl - et curl n'accède pas au même magasin de confiance. Si vous essayez de télécharger le fichier manuellement sur la ligne de commande en utilisant la méthode suivante curl -O vous obtiendrez la même erreur.

Le correctif côté client pour le curl La ligne de commande consiste à définir CURL_CA_BUNDLE pour pointer vers un fichier texte contenant les intermédiaires mis à jour. J'ai testé cela et vous pouvez alors télécharger sans avertissement.

Cependant brew-cask ne semble pas relayer cette variable d'environnement vers curl Il ne semble pas non plus respecter une cacert dans ~/.curlrc.

La meilleure façon de résoudre ce problème est de réparer le serveur. Mettez à jour le paquet de certificats intermédiaires associé au site Web sur le serveur, et le problème disparaîtra.

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