2015-12-21 15 views
14

Używam cURL do weryfikacji logowania przez kilka miesięcy, a działało poprawnie.Błąd zwijania Certyfikat SSL nie może uzyskać certyfikatu lokalnego wystawcy - ostatnie uaktualnienie

$searchURL = "https://url.com/isTokenValid?"; 

$strCookie = 'asdf=' . $_COOKIE['asdf'] . '; path=/';  
$ch = curl_init();    
curl_setopt($ch, CURLOPT_URL, $searchURL); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);  
curl_setopt($ch, CURLOPT_COOKIE, $strCookie); 
curl_setopt($ch, CURLOPT_CAPATH, "\cacert.pem"); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); 
curl_setopt($ch, CURLOPT_VERBOSE, 1); 
curl_setopt($ch, CURLOPT_FAILONERROR, FALSE); 

if($answer = curl_exec($ch)) 
{   
    if (strpos($answer,'true') !== false) 
    { 
    $login = true; 
    } 
    else 
    { 
    $login = false; 
    } 

Dziś rano - przestał działać, i pojawia się błąd:

Curl error: SSL certificate problem: unable to get local issuer certificate

używam plik cacert.pem z https://curl.haxx.se/ca/cacert.pem - w przypadku gdy dane te należy zaktualizować lub odświeżony w jakiś sposób, używam plik z tą datą, która wydaje się wciąż być najbardziej aktualny:

Certificate data from Mozilla as of: Wed Oct 28 04:12:04 2015

to nie jest moją mocną stroną w tworzeniu stron internetowych, więc nie jestem pewien, jak rozwiązać problem, co się tutaj dzieje. Moja pierwsza myśl jest taka, że ​​musi to być coś po stronie serwera, ponieważ nie robiłem żadnych zmian lokalnie przez weekend, ale nie chciałem zacząć szturchać, jeśli ktoś mógłby najpierw wskazać mi właściwy kierunek.

Dzięki!

+1

Czy masz wiersza poleceń dostęp do serwera? Jeśli tak, spróbuj tego polecenia 'openssl s_client -connect url.com: 443' – Machavity

+0

Jest możliwe, że zdalna witryna ostatnio zainstalowała nowy certyfikat. Użyj przeglądarki, aby sprawdzić certyfikat, aby sprawdzić, czy daty i/lub wystawcy uległy zmianie. – drew010

+0

@Machavity Jestem na komputerze z systemem Windows - nie jestem pewien, co masz na myśli przez 'dostęp do wiersza poleceń' - Próbowałem polecenia w Windows' 'cmd' i nie jest to polecenie, więc zakładam, że masz na myśli coś innego. –

Odpowiedz

1

Pobierz https://curl.haxx.se/ca/cacert.pem i zmieniamy nazwę na ssl.txt, to można spróbować

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, TRUE); 
curl_setopt ($ch, CURLOPT_CAINFO, dirname(__FILE__)."/ssl.txt"); 
0

man curl stany:

-k, --insecure 
      (SSL) This option explicitly allows curl to perform "insecure" 
      SSL connections and transfers. All SSL connections are attempted 
      to be made secure by using the CA certificate bundle installed 
      by default. This makes all connections considered "insecure" 
      fail unless -k, --insecure is used. 

      See  this online resource for further details: 
      http://curl.haxx.se/docs/sslcerts.html