Heim >Backend-Entwicklung >PHP-Tutorial >Wie behebt man den Fehler „SSL-Vorgang mit Code 1 fehlgeschlagen' in PHPs „file_get_contents()'?

Wie behebt man den Fehler „SSL-Vorgang mit Code 1 fehlgeschlagen' in PHPs „file_get_contents()'?

Linda Hamilton
Linda HamiltonOriginal
2024-12-15 08:58:13968Durchsuche

How to Fix

Fehlerbehebung bei file_get_contents() SSL-Zertifikatsüberprüfungsfehler

Beim Versuch, mit file_get_contents() in PHP 5.6 auf einen REST-Dienst zuzugreifen, kann es zu folgendem Problem kommen: der Fehler „SSL-Vorgang mit Code 1 fehlgeschlagen“ aufgrund eines strengeren Zertifikats Überprüfung.

Problembeschreibung
Die PHP-Seite des Benutzers versucht, mithilfe von file_get_contents() Daten von einem HTTPS-Endpunkt abzurufen. Es schlägt jedoch mit den folgenden Fehlern fehl:

  • Warnung: SSL-Vorgang mit Code 1 fehlgeschlagen. OpenSSL-Fehlermeldungen: Zertifikatüberprüfung fehlgeschlagen
  • Warnung: Krypto konnte nicht aktiviert werden
  • Warnung: Stream konnte nicht geöffnet werden: Vorgang fehlgeschlagen

Root Ursache
PHP 5.6 führte standardmäßig eine strengere SSL-Überprüfung ein, die eine genaue Zertifikatsvalidierung erfordert. Der Fehler weist darauf hin, dass der Client das Zertifikat des Remote-Servers nicht überprüfen kann.

Lösung
Um dieses Problem zu beheben, empfiehlt ein offizielles PHP-Dokument zu OpenSSL-Änderungen in 5.6, die Zertifikatsüberprüfung zu deaktivieren. Hinweis: Diese Lösung hat erhebliche Auswirkungen auf die Sicherheit und sollte nur in kontrollierten Umgebungen in Betracht gezogen werden, in denen Vertrauen zwischen Client und Server besteht.

$arrContextOptions = array(
    "ssl" => array(
        "verify_peer" => false,
        "verify_peer_name" => false,
    ),
);

$response = file_get_contents("remote_url", false, stream_context_create($arrContextOptions));
  1. Erstellen Sie ein Array ($arrContextOptions) um die SSL-Optionen zu konfigurieren.
  2. Verify_peer auf false setzen, um die Zertifikatsüberprüfung zu deaktivieren.
  3. Setzen „Verify_peer_name“ auf „false“ setzen, um die Überprüfung des Hostnamens zu deaktivieren.
  4. Erstellen Sie einen Stream-Kontext mit dem Array „$arrContextOptions“.
  5. Übergeben Sie den Stream-Kontext als dritten Parameter an file_get_contents().

Wichtiger Hinweis
Das Deaktivieren der SSL-Zertifikatsüberprüfung verringert die Sicherheit und kann Setzen Sie Ihre Anwendung Lauschangriffen und anderen Sicherheitsverletzungen aus. Es wird dringend empfohlen, Ihr System korrekt zu konfigurieren, um vertrauenswürdige SSL-Zertifikate zu verwenden, anstatt auf diese Problemumgehung zurückzugreifen.

Das obige ist der detaillierte Inhalt vonWie behebt man den Fehler „SSL-Vorgang mit Code 1 fehlgeschlagen' in PHPs „file_get_contents()'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn