


Comment résoudre les problèmes d'autorité de certification PHP Curl HTTPS sous Windows
Nov 11, 2024 pm 12:24 PMUne 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
Facultativement, 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

Undress AI Tool
Images de déshabillage gratuites

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.

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à 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

PhhasthreocommentStyles: //,#forsingle-lineand/.../formulti-line.USECOMENTSTOEXPLAINWHYCODEEXISTS,NOTHATITOES.Marktodo/fixmeitemsanddisableCodeTemporairementDuringDebugging.VoidOverCormentSimplelogic.

Les étapes clés pour installer PHP sur Windows incluent: 1. Téléchargez la version PHP appropriée et décompressez-la. Il est recommandé d'utiliser la version ThreadSafe avec Apache ou NONTHREADSAFE avec Nginx; 2. Configurez le fichier php.ini et renommez PHP.ini-développement ou php.ini-production à php.ini; 3. Ajouter le chemin PHP au chemin variable de l'environnement système pour l'utilisation de la ligne de commande; 4. Testez si PHP est installé avec succès, exécutez PHP-V via la ligne de commande et exécutez le serveur intégré pour tester les capacités d'analyse; 5. Si vous utilisez Apache, vous devez configurer P dans httpd.conf

La syntaxe de base de PHP comprend quatre points clés: 1. La balise PHP doit être terminée et l'utilisation de balises complètes est recommandée; 2. L'écho et l'impression sont couramment utilisés pour le contenu de sortie, parmi lesquels Echo prend en charge plusieurs paramètres et est plus efficace; 3. Les méthodes d'annotation incluent //, # et //, pour améliorer la lisibilité du code; 4. Chaque déclaration doit se terminer par un point-virgule, et les espaces et les pauses de ligne n'affectent pas l'exécution mais affectent la lisibilité. La ma?trise de ces règles de base peut aider à rédiger un code PHP clair et stable.

Phpisaserver-sidescriptingNanguageUsedForwebDevelopment, en particulierdoyNamicWebsitesandcmsPlatformslikewordpress.itrunsonTheServer, processData, interactswithdatabases, andsendshtmltobrowsers.commonusingincludeUserAuthentication, e-commerceplatforms, pour pour

Les étapes pour installer PHP8 sur Ubuntu sont: 1. Mettez à jour la liste des packages logiciels; 2. Installez les composants PHP8 et BASIC; 3. Vérifiez la version pour confirmer que l'installation est réussie; 4. Installez des modules supplémentaires au besoin. Les utilisateurs de Windows peuvent télécharger et décompresser le package ZIP, puis modifier le fichier de configuration, activer les extensions et ajouter le chemin d'accès aux variables d'environnement. Les utilisateurs de MacOS recommandent d'utiliser HomeBrew pour installer et effectuer des étapes telles que l'ajout de TAP, l'installation de PHP8, la définition de la version par défaut et la vérification de la version. Bien que les méthodes d'installation soient différentes dans différents systèmes, le processus est clair, vous pouvez donc choisir la bonne méthode en fonction de l'objectif.

Comment commencer à écrire votre premier script PHP? Tout d'abord, configurez l'environnement de développement local, installez XAMPP / MAMP / LAMP et utilisez un éditeur de texte pour comprendre le principe d'exécution du serveur. Deuxièmement, créez un fichier appelé hello.php, entrez le code de base et exécutez le test. Troisièmement, apprenez à utiliser PHP et HTML pour obtenir une sortie de contenu dynamique. Enfin, faites attention aux erreurs communes telles que les demi-colons manquants, les problèmes de citation et les erreurs d'extension de fichier, et activer les rapports d'erreur pour le débogage.

TohandlefileoperationsInPhp, usApproProptofetFunctionsandModes.1.toreaDafile, usefile_get_contents () forsmallfilesorfgets () inaloopforline-by-lineprocessing.2

La clé pour rédiger les instructions IFELSE de Python est de comprendre la structure et les détails logiques. 1. L'infrastructure consiste à exécuter un morceau de code si des conditions sont établies, sinon la pièce ELSE est exécutée, ELLS est facultatif; 2. Le jugement multi-conditions est mis en ?uvre avec ELIF, et il est exécuté séquentiellement et arrêté une fois qu'il est atteint; 3. Nested Si c'est utilisé pour un jugement supplémentaire de subdivision, il est recommandé de ne pas dépasser deux couches; 4. Une expression ternaire peut être utilisée pour remplacer Ifelse simple dans un scénario simple. Ce n'est qu'en faisant attention à l'indentation, à l'ordre conditionnel et à l'intégrité logique que nous pouvons écrire des codes de jugement clair et stable.
