


Comment résoudre les problèmes d'autorité de certification PHP Curl HTTPS sous Windows
Une requête HTTPS réussie implique que le client HTTP valide le Certificat TLS fourni par le serveur par rapport à une liste de racines connues et fiables certificats. L'extension PHP Curl n'est pas différente ; la boucle L'extension utilise libcurl pour effectuer la requête HTTPS, et libcurl, qui à son tour utilise une bibliothèque TLS telle qu'OpenSSL pour valider la requête.
L'extension Curl nécessite un fichier valide contenant tout le certificats racines de confiance pour terminer la validation HTTPS et PHP expose cela sous forme de directive dans le fichier php.ini.
Sous Linux, BSD et macOS, libcurl peut utiliser par défaut la racine du système certificats, mais cela n'est pas possible sous Windows car Windows ne ne vient pas avec un seul fichier contenant toute la racine du système certificats.
Cet article traite de deux approches possibles pour réussir à effectuer des requêtes HTTPS avec l'extension Curl, et de ce qu'il ne faut pas faire qui peut laisser les requêtes HTTPS non sécurisées.
Pourquoi cela échoue
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); // false curl_error($ch); // SSL certificate problem: unable to get local issuer certificate
Si les appels curl_exec échouent avec une fausse réponse, et si curl_error indique un problème de certificat SSL : impossible d'obtenir une erreur de certificat de l'émetteur local, cela signifie que Curl n'a pas reçu de fichier contenant les certificats racine, ou n'a pas pu le découvrir.
Cette erreur est rare sur les systèmes Linux, BSD et macOS, mais assez courant sous Windows car il n'y a pas de fichier désigné pour obtenir la racine certificats, et PHP ne fournit pas de liste de certificats racine sur son propre.
La solution est de fournir un fichier contenant le root à jour certificats, ou idéalement, laissez Curl analyser le magasin racine natif que le système d'exploitation sous-jacent fournit.
Utiliser les autorités de certification natives
Sur Curl 7.71 et versions ultérieures, il est possible de définir un Curl option pour demander à Curl d'utiliser les certificats racine natifs (système). Cela fonctionne même sous Windows, où Curl analyse les certificats racine du système et les utilise.
Lorsque l'option CURLOPT_SSL_OPTIONS est définie sur CURLSSLOPT_NATIVE_CA ou un masque de bits contenant ces bits, Curl tente d'utiliser le natif magasin de certificats racine, sous réserve des capacités et des versions du bibliothèque TLS sous-jacente.
Il s'agit du correctif recommandé, si l'extension Curl est construite avec Curl 7.71 ou version ultérieure et PHP 8.2 et version ultérieure.
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA); curl_exec($ch);
Notez que l'extrait ci-dessus ne vérifie pas la La version Curl et le PHP version, et suppose que les exigences des versions PHP et Curl sont remplies. Le Voici un exemple montrant l'ajout conditionnel de l'option Curl :
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); if (defined('CURLSSLOPT_NATIVE_CA') && version_compare(curl_version()['version'], '7.71', '>=')) { curl_setopt($ch, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA); } curl_exec($ch);
Téléchargez et conservez un fichier cacert.pem
Pour les applications exécutées sur des versions PHP antérieures à 8.2 (où CURLSSLOPT_NATIVE_CA constante n'est pas disponible), ou lorsque la version de Curl est antérieure à 7.71, la solution alternative recommandée est de télécharger un fichier compatible Curl fichier de certificat racine et configurez PHP ou la requête Curl pour l'utiliser.
Le projet Curl tient à jour une liste de certificats. Voir Certificats CA extraits de Mozilla.
Téléchargez le fichier cacert.pem
- Déplacez le fichier vers un répertoire accessible par PHP et le serveur web. Par exemple, vers C:/php/cacert.pem.
Modifiez le fichier php.ini et modifiez l'entrée curl.cainfo pour pointer vers le chemin absolu vers le fichier cacert.pem.
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_exec($ch); // false curl_error($ch); // SSL certificate problem: unable to get local issuer certificate
Copier après la connexionCopier après la connexionFacultativement, redémarrez le serveur Web (tel qu'Apache) pour recharger l'INI fichier.
L'inconvénient de cette approche est que le fichier cacert.pem doit être mis à jour régulièrement. Le cacert.pem Le fichier fourni par le projet Curl, par exemple, est extrait de la racine magasin maintenu par Mozilla. En moyenne, cette liste et le fichier obtiennent mis à jour 4 à 5 fois par an. Pour garantir la compatibilité avec la dernière version root liste des certificats, assurez-vous de mettre à jour la copie locale de ce fichier régulièrement
S'il n'est pas possible de modifier le fichier INI, précisez également le chemin absolu du fichier cacert.pem dans une requête Curl :
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA); curl_exec($ch);
Sur PHP 8.2 avec Curl 7.77 , il est possible d'obtenir une chaîne contenant le contenu de cacert.pem avec l'option CURLOPT_CAINFO_BLOB.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Visual Studio Code, également connu sous le nom de VS Code, est un éditeur de code source gratuit – ou environnement de développement intégré (IDE) – disponible pour tous les principaux systèmes d'exploitation. Avec une large collection d'extensions pour de nombreux langages de programmation, VS Code peut être c

JWT est une norme ouverte basée sur JSON, utilisée pour transmettre en toute sécurité des informations entre les parties, principalement pour l'authentification de l'identité et l'échange d'informations. 1. JWT se compose de trois parties: en-tête, charge utile et signature. 2. Le principe de travail de JWT comprend trois étapes: la génération de JWT, la vérification de la charge utile JWT et l'analyse. 3. Lorsque vous utilisez JWT pour l'authentification en PHP, JWT peut être généré et vérifié, et les informations sur le rôle et l'autorisation des utilisateurs peuvent être incluses dans l'utilisation avancée. 4. Les erreurs courantes incluent une défaillance de vérification de signature, l'expiration des jetons et la charge utile surdimensionnée. Les compétences de débogage incluent l'utilisation des outils de débogage et de l'exploitation forestière. 5. L'optimisation des performances et les meilleures pratiques incluent l'utilisation des algorithmes de signature appropriés, la définition des périodes de validité raisonnablement,

Ce tutoriel montre comment traiter efficacement les documents XML à l'aide de PHP. XML (Language de balisage extensible) est un langage de balisage basé sur le texte polyvalent conçu à la fois pour la lisibilité humaine et l'analyse de la machine. Il est couramment utilisé pour le stockage de données et

Liaison statique (statique: :) implémente la liaison statique tardive (LSB) dans PHP, permettant à des classes d'appel d'être référencées dans des contextes statiques plutôt que de définir des classes. 1) Le processus d'analyse est effectué au moment de l'exécution, 2) Recherchez la classe d'appel dans la relation de succession, 3) il peut apporter des frais généraux de performance.

Une chaîne est une séquence de caractères, y compris des lettres, des nombres et des symboles. Ce tutoriel apprendra à calculer le nombre de voyelles dans une chaîne donnée en PHP en utilisant différentes méthodes. Les voyelles en anglais sont a, e, i, o, u, et elles peuvent être en majuscules ou en minuscules. Qu'est-ce qu'une voyelle? Les voyelles sont des caractères alphabétiques qui représentent une prononciation spécifique. Il y a cinq voyelles en anglais, y compris les majuscules et les minuscules: a, e, i, o, u Exemple 1 Entrée: String = "TutorialSpoint" Sortie: 6 expliquer Les voyelles dans la chaîne "TutorialSpoint" sont u, o, i, a, o, i. Il y a 6 yuans au total

Quelles sont les méthodes magiques de PHP? Les méthodes magiques de PHP incluent: 1. \ _ \ _ Construct, utilisé pour initialiser les objets; 2. \ _ \ _ Destruct, utilisé pour nettoyer les ressources; 3. \ _ \ _ Appel, gérer les appels de méthode inexistants; 4. \ _ \ _ GET, Implémentez l'accès à l'attribut dynamique; 5. \ _ \ _ SET, Implémentez les paramètres d'attribut dynamique. Ces méthodes sont automatiquement appelées dans certaines situations, améliorant la flexibilité et l'efficacité du code.

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.
