cURL error 60: certificat SSL prblm: impossible d'obtenir un certificat d'émetteur local [dupliquer]

Cette question a déjà une réponse ici:

  • cURL erreur 60: certificat SSL: impossible d'obtenir locales certificat de l'émetteur 16 réponses

je veux recueillir une liste de vidéos téléchargées sur un canal spécifique en utilisant L'API de données YouTube. Cependant, avant de mettre en œuvre en ligne j'essaie de faire fonctionner mon code sur un environnement hors ligne (WAMPserver, PHP 5.5.12, Apache 2.4.9). Je suis en utilisant le code suivant:

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);

Toutefois, il donne l'erreur suivante:

Fatal error: Uncaught exception 'GuzzleHttpExceptionRequestException' with message 'erreur cURL 60: certificat SSL problème: impossible d'obtenir locales certificat de l'émetteur (voir la section http://curl.haxx.se/libcurl/c/libcurl-errors.html)'

j'ai essayé d'ajouter la dernière version de <!-Comme la plupart des sujets sur ainsi offrent une solution, cependant en vain.

19
demandé sur Machavity 2016-02-26 00:15:32

8 réponses

Si vous êtes sur windows xampp. Je suis voler une meilleure réponse de ici, serait utile si Google vous montrer cette question 1er.

  1. télécharger et extraire pour cacert.pem ici (propre format de fichier/données)

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

  2. mettre dans :

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

  3. ajouter cette ligne à votre php.ini

    curl.cainfo = "C:\xampp\php\extras\ssl\cacert.pem"!--3-->

  4. redémarrez votre serveur web / apache

68
répondu Phung D. An 2017-05-23 12:34:45

voyant que j'utilise un environnement local, je peux désactiver SSL en toute sécurité, ce que j'ai fait en utilisant ce qui suit:

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

$client est mon Google_Client ().

25
répondu Sjors Hijgenaar 2016-03-01 08:25:26
$guzzleClient = new \GuzzleHttp\Client(['verify' => false]);

Bouffer la version 6

Vous pouvez vous référer à Guzzle Docs à

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

8
répondu lijinma 2016-11-16 02:47:16

je travail avec xamps rien de ce qui précède n'a fonctionné pour moi

j'ai essayé et cela a fonctionné

  1. ouvrir vendor\guzzlehttp\guzzle\src\Handler\CurlFactory.php

et modifier ce

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

de cette

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

c'est une solution temporaire si vous avez mis à jour ce fichier les modifications seront perdues

2
répondu Abdalla Mohamed Aly Ibrahim 2018-09-24 08:25:29

PCI-DSS 3.1 exige que tous les SSL à seulement TLS 1.2 donc beaucoup de fournisseurs sont tout simplement tout désactiver sauf TLS 1.2. Je suis tombé sur ce type de problème où CURL a vu le défaut de déclassement des poignées de main comme un défaut de vérifier le certificat SSL. Essayez de trouver où votre code fait L'appel CURL et ajoutez cette ligne (assurez-vous de remplacer $ch avec tout ce que CURL gérer votre code utilise)

curl_setopt($ch, CURLOPT_SSLVERSION, 6);  // Force TLS 1.2
0
répondu Machavity 2016-02-25 21:29:38

pour l'essence du développement et de l'essai, vous avez deux options à une solution rapide

  1. Utiliser
$client = new GuzzleHttp\Client();
$request = $client->request('GET',$url, ['verify' => false]); //where $url is your http address
  1. suivez @Pham Huy Anh réponse est au-dessus de l'
$client = new GuzzleHttp\Client();
$request = $client->request('GET',$url, ['verify' => 'C:\xampp\php\extras\ssl\cacert.pem']);

j'Espère que ça aide quelqu'un.

0
répondu wale rvp 2017-07-11 11:48:31

il a également fonctionné pour moi en téléchargeant le cert à partir de la lien https://gist.github.com/VersatilityWerks/5719158/download puis garde ça pour toi. C:\xampp\php\extras\ssl puis éditer php.ini. Pour obtenir de Php.ini voir rapidement la figure ci-dessous entrez la description de l'image ici

puis arrêtez et redémarrez votre apache à nouveau. il a bien fonctionné !!!

0
répondu kimoduor 2017-08-03 00:07:49
$guzzleClient = new \GuzzleHttp\Client(['verify' => false]);
-2
répondu abbas waranlu 2017-06-21 23:11:28