it-swarm.com.de

cURL-Fehler 60: Problem mit SSL-Zertifikat: Kein lokales Aussteller-Zertifikat erhalten

Ich möchte mithilfe der YouTube-Daten-API eine Liste von Videos sammeln, die auf einem bestimmten Kanal hochgeladen wurden. Bevor ich jedoch online implementiere, versuche ich, meinen Code in einer Offline-Umgebung (WAMPserver, PHP 5.5.12, Apache 2.4.9) zum Laufen zu bringen. Ich verwende den folgenden Code:

require_once 'google-api-php-client-2.0.0-RC5/vendor/autoload.php';

$client = new Google_Client();
$client->setApplicationName("SRC_Thor");
$client->setDeveloperKey("xxxxxxxxxxx");

$youtube = new Google_Service_YouTube($client);

$channelResponse = $youtube->channels->listChannels('contentDetails', []);
var_dump($channelResponse);

Es gibt jedoch den folgenden Fehler: 

Schwerwiegender Fehler: Nicht erfasste Ausnahme 'GuzzleHttp\Exception\RequestException' mit der Nachricht 'cURL-Fehler 60: Problem mit SSL-Zertifikat: Kein lokales Ausstellerzertifikat abrufbar (siehe http://curl.haxx.se/libcurl/c/libcurl-errors.html)'

Ich habe versucht, die neueste Version von cacert.pem hinzuzufügen, da die meisten Themen auf SO als Lösung anbieten, jedoch ohne Erfolg. 

21
Sjors Hijgenaar

Wenn Sie Windows Xampp verwenden. Ich klaue eine bessere Antwort aus hier , wäre hilfreich, wenn Google Ihnen diese Frage zuerst zeigt. 

  1. download und Extrahieren für cacert.pem hier (sauberes Dateiformat/Daten)

    https://Gist.github.com/VersatilityWerks/5719158/download

    UPDATE: https://curl.haxx.se/docs/caextract.html

  2. steck es in: 

    C:\xampp\php\extras\ssl\cacert.pem

  3. Fügen Sie diese Zeile Ihrer php.ini hinzu

    curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"

  4. starten Sie Ihren Webserver/Apache neu

80
Phung D. An

Da ich eine lokale Umgebung verwende, kann ich SSL sicher deaktivieren. Dazu habe ich Folgendes verwendet:

$guzzleClient = new \GuzzleHttp\Client(array( 'curl' => array( CURLOPT_SSL_VERIFYPEER => false, ), ));
$client->setHttpClient($guzzleClient);

Wo $client ist mein Google_Client ().

25
Sjors Hijgenaar
$guzzleClient = new \GuzzleHttp\Client(['verify' => false]);

Guzzle Version 6

Sie können sich auf Guzzle Docs unter beziehen

http://docs.guzzlephp.org/de/latest/request-options.html#verify

8
lijinma

Ich arbeite mit xamps nichts von dem, was für mich gearbeitet hat

Ich habe es versucht und es hat funktioniert

  1. vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php öffnen

und ändern Sie dies

$conf[CURLOPT_SSL_VERIFYHOST] = 2;
$conf[CURLOPT_SSL_VERIFYPEER] = true;

zu diesem

$conf[CURLOPT_SSL_VERIFYHOST] = 0;
$conf[CURLOPT_SSL_VERIFYPEER] = FALSE;

wenn Sie diese Datei aktualisieren, gehen die Änderungen verloren

$guzzleClient = new \GuzzleHttp\Client(['verify' => false]);
0
abbas waranlu

es hat auch für mich funktioniert, indem ich das cert aus der link https://Gist.github.com/VersatilityWerks/5719158/download dann Speichern Sie es in C:\xampp\php\extras\ssl .__ und bearbeiten Sie dann php.ini. Um schnell Php.ini zu erhalten, sehen Sie die Abbildung unten Geben Sie hier die Bildbeschreibung ein

Dann STOPPEN und den Apache erneut starten. es hat gut funktioniert !!!

0
kimoduor

für das Wesentliche der Entwicklung und des Testens haben Sie zwei Möglichkeiten zur schnellen Behebung

  1. Benutzen
$client = new GuzzleHttp\Client();
$request = $client->request('GET',$url, ['verify' => false]); //where $url is your http address
  1. folgen Sie @Pham Huy. Anh Antwort oben, dann tun Sie dies
$client = new GuzzleHttp\Client();
$request = $client->request('GET',$url, ['verify' => 'C:\xampp\php\extras\ssl\cacert.pem']);

Hoffe es hilft jemandem.

0
walecloud

Für PCI-DSS 3.1 ist alles SSL nur für TLS 1.2 erforderlich, sodass viele Anbieter einfach alles außer TLS 1.2 deaktivieren. Ich bin auf ein Problem dieser Art gestoßen, bei dem CURL den Fehler beim Downgrade von Handshakes als Fehler beim Überprüfen des SSL-Zertifikats sah. Versuchen Sie herauszufinden, wo Ihr Code den CURL-Aufruf ausführt, und fügen Sie diese Zeile hinzu (ersetzen Sie unbedingt $ch mit dem von Ihnen verwendeten CURL-Code).

curl_setopt($ch, CURLOPT_SSLVERSION, 6);  // Force TLS 1.2
0
Machavity