Comment résoudre "Problème de certificat SSL : impossible d'obtenir le certificat de l'émetteur local"
- Base De Connaissances /
- Certificats SSL /
- Comment résoudre "Problème de certificat SSL : impossible d'obtenir le certificat de l'émetteur local"
Comment résoudre le “problème de certificat SSL : impossible d'obtenir le certificat de l'émetteur local”
Le scénario
Vous écrivez une requête cURL vers une destination sécurisée (HTTPS) et vous voyez ce message d'erreur redouté apparaître dans curl_error() : Problème de certificat SSL : impossible d'obtenir le certificat de l'émetteur local
Peu importe les modifications que vous apportez à votre requête cURL ou le nombre de fois que vous vérifiez que vous avez la bonne URL ou le nombre de cheveux restants que vous arrachez, rien ne change - ce même message d'erreur ennuyeux….
La solution
Bien qu'il s'agisse techniquement d'un message d'erreur clair et détaillé, si vous ne savez pas ce que cela signifie ou ce qu'il vous dit, ce n'est pas très convivial… Alors laissez-moi vous expliquer.
Vous faites une demande à une source sécurisée via HTTPS. Cette destination s'attend à ce que vous lui partagiez certaines informations d'identification indiquant que vous êtes qui vous dites être (ou quelque chose comme ça au moins). Mettez plus technique – vous devez envoyer avec votre demande un certificat SSL. Heureusement, c'est quelque chose que nous définissons dans la configuration de votre serveur et nous n'avons donc pas besoin de le spécifier à chaque requête. Il n'y a que quelques étapes pour y parvenir.
Acquérir le bundle ca-bundle.crt SSL
Copiez le contenu de cette URL et enregistrez-la sur votre serveur. Vous pouvez vraiment l'enregistrer dans n'importe quelle destination, mais quelque part près du niveau supérieur du serveur, c'est bien.
https://raw.githubusercontent.com/bagder/ca-bundle/master/ca-bundle.crt
Dans le cas où j'ai rencontré ce problème aujourd'hui, j'utilisais une installation XAMP hébergée localement, donc je choisis ce chemin:
C:/xampp/htdocs/_certs/ca-bundle.crt
1 |
C:/xampp/htdocs/_certs/ca-bundle.crt |
Mettez à jour le fichier php.ini pour connaître le chemin d'accès à votre fichier ca-bundle.crt
Vous devez maintenant modifier votre fichier php.ini pour identifier l'emplacement de ce fichier. Si vous utilisez XAMP, vous pouvez accéder au fichier php.ini à partir du bouton Configuration du panneau de configuration XAMP. D'autres serveurs ont parfois ce fichier à des emplacements différents, mais il se trouve souvent quelque part dans le répertoire /etc.
Ajoutez ou mettez à jour ces lignes dans votre fichier :
[CA Certs] curl.cainfo="C:/xampp/htdocs/_certs/ca-bundle.crt" openssl.cafile="C:/xampp/htdocs/_certs/ca-bundle.crt"
1 2 3 |
[CA Certs] curl.cainfo="C:/xampp/htdocs/_certs/ca-bundle.crt" openssl.cafile="C:/xampp/htdocs/_certs/ca-bundle.crt" |
Évidemment, vous devrez mettre à jour le chemin pour qu'il corresponde à l'endroit où vous avez enregistré votre fichier..
Une fois que vous avez enregistré le fichier php.ini, vous n'avez qu'une étape à parcourir.
Redémarrez PHP
Chaque serveur peut être légèrement différent sur la façon de déclencher le redémarrage de PHP (les hôtes partagés peuvent être plus délicats), mais vous devrez redémarrer PHP pour que ce changement soit reconnu. Dans XAMP, éteignez simplement Apache, puis rallumez-le via le panneau de configuration XAMP. Sur de nombreux serveurs Linux, vous pouvez essayer cette commande.
service php5-fpm restart
1 |
service php5-fpm restart |
Et c'est tout! Avec PHP redémarré, vous pouvez maintenant réessayer votre demande cURL et être heureux de voir une demande réelle envoyée et, espérons-le, sans aucun autre problème, vous verrez une réponse valide !!!
Ouvrir un ticket
Soumettez une demande d'assistance