


So beheben Sie Probleme mit der PHP Curl HTTPS-Zertifizierungsstelle unter Windows
Eine erfolgreiche HTTPS-Anfrage erfordert die Validierung durch den HTTP-Client vom Server bereitgestelltes TLS-Zertifikat anhand einer Liste bekannter und vertrauenswürdiger Root-Zertifikate Zertifikate. Die PHP-Curl-Erweiterung ist nicht anders; die Locke Die Erweiterung verwendet libcurl, um die HTTPS-Anfrage zu stellen, und libcurl, das wiederum eine TLS-Bibliothek wie OpenSSL verwendet, um die Anfrage zu validieren.
Die Curl-Erweiterung erfordert eine gültige Datei mit alle vertrauenswürdige Stammzertifikate zur Vervollständigung der HTTPS-Validierung und PHP stellt dies als Direktive in der Datei php.ini bereit.
Unter Linux, BSD und macOS kann libcurl standardmäßig das Systemstammverzeichnis verwenden Dies ist jedoch unter Windows nicht möglich, da dies bei Windows der Fall ist wird nicht mit einer einzigen Datei geliefert, die das gesamte Systemstammverzeichnis enthält Zertifikate.
In diesem Artikel werden zwei mögliche Ansätze zum erfolgreichen Durchführen von HTTPS-Anfragen mit der Curl-Erweiterung erläutert, und was man nicht tun sollte, um HTTPS-Anfragen unsicher zu machen.
Warum es fehlschlägt
$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
Wenn die Aufrufe von „curl_exec“ mit einer falschen Antwort fehlschlagen und „curl_error“ auf ein Problem mit dem SSL-Zertifikat hinweist: Der Fehler „Lokales Ausstellerzertifikat konnte nicht abgerufen werden“ bedeutet, dass Curl erfolgreich war Es wurde keine Datei bereitgestellt, die Stammzertifikate enthält, oder sie konnte nicht erkannt werden.
Dieser Fehler ist auf Linux-, BSD- und macOS-Systemen ungewöhnlich, aber durchaus üblich Dies ist unter Windows üblich, da es keine bestimmte Datei zum Abrufen des Stammverzeichnisses gibt Zertifikate, und PHP liefert keine Stammzertifikatsliste mit besitzen.
Die Lösung besteht darin, eine Datei mit dem aktuellen Stammverzeichnis bereitzustellen Zertifikate, oder lassen Sie Curl im Idealfall den nativen Stammspeicher analysieren, der die Das zugrunde liegende Betriebssystem bietet.
Nutzung nativer Zertifizierungsstellen
Ab Curl 7.71 ist es möglich, einen Curl festzulegen Option, um Curl aufzufordern, die nativen (System-)Stammzertifikate zu verwenden. Dies funktioniert sogar unter Windows, wo Curl Systemstammzertifikate analysiert und verwendet sie.
Wenn die Option CURLOPT_SSL_OPTIONS auf CURLSSLOPT_NATIVE_CA gesetzt ist oder eine Bitmaske, die diese Bits enthält, versucht Curl, die native zu verwenden Stammzertifikatspeicher, abhängig von den Funktionen und Versionen des zugrunde liegende TLS-Bibliothek.
Dies ist die empfohlene Lösung, wenn die Curl-Erweiterung mit Curl 7.71 oder höher und PHP 8.2 und höher erstellt wurde.
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_OPTIONS, CURLSSLOPT_NATIVE_CA); curl_exec($ch);
Beachten Sie, dass das obige Snippet das nicht überprüft Curl-Version und das PHP Version und geht davon aus, dass sowohl die PHP- als auch die Curl-Versionsanforderungen erfüllt sind. Der Das Folgende ist ein Beispiel, das das bedingte Hinzufügen der Curl-Option zeigt:
$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);
Laden Sie eine cacert.pem-Datei herunter und verwalten Sie sie
Für Anwendungen, die auf PHP-Versionen älter als 8.2 ausgeführt werden (wobei CURLSSLOPT_NATIVE_CA (Konstante ist nicht verfügbar) oder wenn die Curl-Version älter als 7.71 ist, Die empfohlene alternative Lösung besteht darin, eine Curl-kompatible Version herunterzuladen Root-Zertifikatdatei und konfigurieren Sie PHP oder die Curl-Anfrage für deren Verwendung.
Das Curl-Projekt verwaltet eine aktuelle Liste von Zertifikaten. Siehe CA-Zertifikate, die aus Mozilla extrahiert wurden.
Laden Sie die Datei cacert.pem herunter
- Verschieben Sie die Datei in ein Verzeichnis, auf das PHP und der Webserver zugreifen können. Zum Beispiel nach C:/php/cacert.pem.
Bearbeiten Sie die Datei php.ini und ändern Sie den Eintrag „curl.cainfo“ so, dass er auf den absoluten Pfad zur Datei cacert.pem verweist.
[curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. ;curl.cainfo = curl.cainfo = "C:/php/cacert.pem"
Optional starten Sie den Webserver (z. B. Apache) neu, um die INI neu zu laden
Der Nachteil dieses Ansatzes besteht darin, dass die Datei cacert.pem regelmäßig aktualisiert werden muss. Das cacert.pem Die vom Curl-Projekt bereitgestellte Datei wird beispielsweise aus dem Stammverzeichnis extrahiert Store, der von Mozilla verwaltet wird. Im Durchschnitt erhalten Sie diese Liste und die Datei 4-5 Mal im Jahr aktualisiert. Um die Kompatibilität mit dem neuesten Root sicherzustellen Stellen Sie sicher, dass Sie in der Liste der Zertifikate die lokale Kopie dieser Datei aktualisieren regelmäßig
Wenn es nicht möglich ist, die INI-Datei zu ändern, geben Sie auch den absoluten Pfad zur Datei cacert.pem in einer Curl-Anfrage an:
$ch = curl_init('https://php.watch'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CAINFO, 'C:/php/cacert.pem'); curl_exec($ch);
Auf PHP 8.2 mit Curl 7.77 , ist es möglich, mit der Option CURLOPT_CAINFO_BLOB eine Zeichenfolge zu erstellen, die den Inhalt von cacert.pem enthält.
Das obige ist der detaillierte Inhalt vonSo beheben Sie Probleme mit der PHP Curl HTTPS-Zertifizierungsstelle unter Windows. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In PHP eignet sich das Merkmal für Situationen, in denen die Wiederverwendung von Methoden erforderlich ist, aber nicht zur Erbschaft geeignet ist. 1) Das Merkmal ermöglicht Multiplexing -Methoden in Klassen, um die Komplexität mehrerer Vererbungskomplexität zu vermeiden. 2) Bei Verwendung von Merkmalen müssen Sie auf Methodenkonflikte achten, die durch die Alternative und als Schlüsselwörter gelöst werden können. 3) Überbeanspruchte des Merkmals sollte vermieden werden und seine einzelne Verantwortung sollte beibehalten werden, um die Leistung zu optimieren und die Code -Wartbarkeit zu verbessern.

Abhängigkeitsinjektionsbehälter (DIC) ist ein Tool, das Objektabhängigkeiten für die Verwendung in PHP -Projekten verwaltet und bereitstellt. Die Hauptvorteile von DIC sind: 1. Entkopplung, Machen von Komponenten unabhängig, und der Code ist leicht zu warten und zu testen; 2. Flexibilität, leicht zu ersetzen oder zu ändern; 3.. Testbarkeit, bequem für die Injektion von Scheinobjekten für Unit -Tests.

SplfixedArray ist ein Array mit fester Größe in PHP, das für Szenarien geeignet ist, in denen hohe Leistung und geringe Speicherverbrauch erforderlich sind. 1) Es muss die Größe beim Erstellen angeben, um den durch dynamischen Einstellungen verursachten Overhead zu vermeiden. 2) Basierend auf C -Spracharray betreibt direkt Speicher und schnelle Zugriffsgeschwindigkeit. 3) Geeignet für eine großräumige Datenverarbeitung und speicherempfindliche Umgebungen, muss jedoch mit Vorsicht verwendet werden, da seine Größe festgelegt ist.

PHP überlädt Datei -Hochladen über die Variable $ \ _ Dateien. Zu den Methoden zur Sicherstellung gehören: 1. Upload -Fehler, 2. Dateityp und -größe überprüfen, 3.. Dateiüberschreibung verhindern, 4. Verschieben von Dateien auf einen dauerhaften Speicherort.

In JavaScript können Sie NullCoalescingoperator (??) und NullCoalescingAssignmentoperator (?? =) verwenden. 1.??? 2.??= Weisen Sie den Wert des rechten Operanden die Variable zu, jedoch nur, wenn die Variable null oder undefiniert ist. Diese Operatoren vereinfachen die Codelogik und verbessern die Lesbarkeit und Leistung.

CSP ist wichtig, da es XSS -Angriffe verhindern und das Laden der Ressourcen begrenzen und die Sicherheit der Website verbessern kann. 1.CSP ist Teil von HTTP -Reaktionsüberschriften und begrenzt böswilliges Verhalten durch strenge Richtlinien. 2. Die grundlegende Verwendung besteht darin, nur Laderessourcen aus demselben Ursprung zuzulassen. 3. Erweiterte Verwendung kann mehr feinkörnige Strategien festlegen, z. V.

Zu den HTTP -Anforderungsmethoden gehören GET, Post, Put und Löschen, mit denen Ressourcen erhalten, übermittelt, aktualisiert und gelöscht werden. 1. Die GET -Methode wird verwendet, um Ressourcen zu erhalten, und eignet sich für Lesevorgänge. 2. Die Post -Methode wird verwendet, um Daten zu übermitteln und häufig neue Ressourcen zu erstellen. 3. Die Put -Methode wird zum Aktualisieren von Ressourcen verwendet und eignet sich für vollständige Updates. V.

HTTPS ist ein Protokoll, das auf der Grundlage von HTTP eine Sicherheitsschicht hinzufügt, die hauptsächlich die Privatsphäre und die Datensicherheit der Benutzer durch verschlüsselte Daten schützt. Zu den Arbeitsprinzipien gehören TLS -Handshake, Zertifikatüberprüfung und verschlüsselte Kommunikation. Bei der Implementierung von HTTPS müssen Sie auf Zertifikatverwaltung, Leistungsauswirkungen und Mischinhalteprobleme achten.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen