web-dev-qa-db-fra.com

PHP CURL CURLOPT_SSL_VERIFYPEER ignoré

Pour une raison quelconque, je ne peux pas utiliser CURL avec HTTPS. Tout fonctionnait bien jusqu'à la mise à niveau des bibliothèques curl. Maintenant, je rencontre cette réponse lorsque j'essaie d'exécuter des demandes CURL: Problème avec le certificat SSL CA (chemin d'accès? Droits d'accès?)

Suite aux suggestions postées ici sur des sujets connexes, j’ai essayé de faire ce qui suit:

  • Désactiver la vérification pour l'hôte et le pair

    curl_setopt($cHandler, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);
    
  • Activez CURLOPT_SSL_VERIFYPEER et pointez sur cacert.pem téléchargé depuis http://curl.haxx.se/docs/caextract.html

    curl_setopt($cHandler, CURLOPT_SSL_VERIFYPEER, true);  
    curl_setopt($cHandler, CURLOPT_CAINFO, getcwd() . "/positiveSSL.ca-bundle");
    
  • J'ai également essayé de faire la même chose avec positiveSSL.ca-bundle, fourni en tant que certificat d'autorité de certification pour le serveur auquel je tente de me connecter.

  • Éditez les paramètres php ini avec curl.cainfo=cacert.pem (fichier dans le même répertoire accessible par Apache)

  • Renommez /etc/pki/nssdb en /etc/pki/nssdb.old

Malheureusement, aucun des éléments ci-dessus n'est capable de résoudre mon problème et je reçois constamment un problème avec le message SSL CA cert (chemin d'accès? Droits d'accès?).

Et je n'ai pas besoin de cette vérification en premier lieu (je suis conscient des problèmes de sécurité).

Quelqu'un a-t-il d'autres suggestions?

UPDATE

Après la mise à jour vers les dernières bibliothèques et le redémarrage de toute la boîte, pas seulement Apache que je faisais, tout semble fonctionner maintenant !!!

101
Greg

Selon la documentation: pour vérifier le certificat d'hôte ou homologue, vous devez spécifier d'autres certificats avec l'option CURLOPT_CAINFO ou un répertoire de certificats peut être spécifié avec l'option CURLOPT_CAPATH.

Regardez aussi CURLOPT_SSL_VERIFYHOST:

  • 1 pour vérifier l'existence d'un nom commun dans le certificat homologue SSL.
  • 2 pour vérifier l'existence d'un nom commun et également vérifier qu'il correspond au nom d'hôte fourni.

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
210
clover

Nous avons eu le même problème sur une machine CentOS7. La désactivation de VERIFYHOSTVERIFYPEER ne résout pas le problème, l'erreur cURL n'est plus disponible, mais la réponse n'est toujours pas valide. Faire un wget sur le même lien que le faisait le cURL entraînait également une erreur de certificat.

-> Notre solution consistait également à redémarrer le VPS. Cela a été résolu et nous avons pu compléter la demande à nouveau.

Pour nous, cela semblait être un problème de corruption de mémoire. Le redémarrage du VPS a rechargé la bibliothèque dans la mémoire et maintenant cela fonctionne. Donc, si la solution ci-dessus de @clover ne fonctionne pas, essayez de redémarrer votre ordinateur.

1
Rvanlaak