J'ai récemment mis à niveau notre serveur de 8.04 à 10.04, et tous les logiciels avec.
D'après ce que j'ai trouvé en ligne, il semble que la nouvelle version de CURL n'inclut pas de bundle CA et, par conséquent, ne parvient pas à vérifier que le certificat du serveur auquel vous vous connectez est signé par une autorité valide .
L'erreur réelle est:
Erreur CURL: problème de certificat SSL, vérifiez que le certificat CA est OK. Détails: erreur: 14090086: routines SSL: SSL3_GET_SERVER_CERTIFICATE: échec de la vérification du certificat
Certains palettes que j'ai trouvées suggèrent de spécifier manuellement un fichier CA ou de désactiver complètement la vérification en définissant une option lorsque vous appelez CURL, mais je préférerais de loin résoudre le problème globalement, plutôt que d'avoir à modifier les appels CURL de chaque application.
Existe-t-il un moyen de résoudre le problème de l'AC de CURL à l'échelle du serveur afin que tout le code d'application existant fonctionne tel quel sans avoir besoin d'être modifié?
Nous avons eu un problème similaire avec Ubuntu 12.04 en exécutant curl à partir de la ligne de commande pour obtenir les outils de ligne de commande aws qui étaient dans github. J'ai trouvé si j'exécutais la ligne de commande en tant que telle:
ça marcherait. Mais essayer de définir la variable d'environnement CURL_CA_BUNDLE afin que je puisse éviter l'argument "cacert" ne fonctionnerait pas. En fin de compte, la mise à jour des certificats CA a semblé résoudre le problème:
En remarque, à un moment donné, j'ai mis à jour les ca-certs de curl.haxx.se qui n'ont pas résolu le problème mais qui peuvent avoir été liés. (
sudo wget http://curl.haxx.se/ca/cacert.pem
courir à partir de/etc/ssl/certs
).la source
En règle générale, les logiciels qui n'ont pas d'implémentation unique et qui sont compilés avec OpenSSL feront référence au ca-bundle.crt à l'échelle du système, souvent situé dans
/usr/share/ssl/certs
.L'emplacement peut être différent dans Ubuntu mais le package OpenSSL doit inclure le fichier ca-bundle.
CURL a une variété d'options pour spécifier comment il vérifie les certificats.
CURL_CA_BUNDLE
variable d'environnement pour l'emplacement du fichier ca-bundle.--capath
vous permet de spécifier le répertoire où se trouvent les certificats CA. (RemplaceCURL_CA_BUNDLE
)--cacert
vous permet de spécifier le fichier de certificat CA.Sur mon serveur CentOS, je peux exécuter ce qui suit pour identifier le chemin d'accès CA-bundle utilisé par CURL:
la source
libcurl3-openssl-dev
package basé sur une recherche rapide sur Internet.CURL_CA_BUNDLE
est juste une variable d'environnement. En bash,CURL_CA_BUNDLE=/path/to/file
.