/ / cURL mówi, że certyfikat wygasł, Firefox się nie zgadza - ssl, curl, openssl

cURL mówi, że certyfikat wygasł, Firefox nie zgadza się - ssl, curl, openssl

Próbuję uzyskać dostęp do wewnętrznej witryny za pośrednictwem cURL (do którego miałem dostęp kilka dni temu). Jednak cURL wyświetla błąd curl: (60) SSL certificate problem: certificate has expired. Jeśli używam openssl aby sprawdzić datę początkową i końcową certyfikatu, podaje on przedział czasowy, w którym mam się dobrze w ciągu:

echo | openssl s_client -connect internalsite.example.com:443 2>/dev/null | openssl x509 -noout -dates
notBefore=Nov 30 00:00:00 2012 GMT
notAfter=Mar 30 12:00:00 2016 GMT
# For reference, the day I"m posting this is July 30th, 2014

Dodatkowo, jeśli używam cURL na innym komputerze lub łączę się przez przeglądarkę (Firefox, Chrome lub IE), mogę połączyć się bez błędu.

Ponadto nie mogę połączyć się z żadną wersją cURL na własnym komputerze; dotyczy to również cURL w Cygwin i cURL na Ubuntu na maszynie wirtualnej, a także wersji Windows.

Co może być przyczyną takiego zachowania?

Odpowiedzi:

1 dla odpowiedzi № 1

Twój pakiet certyfikatów jest prawdopodobnie nieaktualny.

Możesz dostać taki, który jest utrzymywany przez twórców curl w http://curl.haxx.se/ca/cacert.pem

Aby go użyć:

<?
$ch = curl_init("http://example.com");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, "/path/to/cacert.pem");
$response = curl_exec($ch);

1 dla odpowiedzi nr 2

Mój loki używa pakietu certyfikatów przechowywanego w:

/etc/ssl/certs/ca-certificates.crt

W przeszłości miałem ten problem i naprawiłem go, patrząc na maszynę, na której działa curl, porównując pliki .crt z tych dwóch komputerów i kopiując brakujący certyfikat.

Właśnie miałem ten problem i tym razem go naprawiłem, po prostu kopiując cały plik z nowszej maszyny (nowsza instalacja Ubuntu ---- maszyna, na której mam problem, jest stara).

I zadziałało.