/ / cURL hovorí, že platnosť certifikátu vypršala, Firefox nesúhlasí - ssl, curl, openssl

cURL hovorí, že certifikát vypršal, Firefox nesúhlasí - ssl, curl, openssl

Snažím sa získať prístup na internú stránku cez CURL (ku ktorej som sa dostal pred niekoľkými dňami). CURL však uvádza chybu curl: (60) SSL certificate problem: certificate has expired, Ak používam openssl skontrolovať dátum začiatku a konca certifikátu, dáva časový rámec, v ktorom sa nachádzam:

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

Navyše, ak používam CURL na inom počítači alebo sa pripájam cez prehliadač (Firefox, Chrome alebo IE), môžem sa pripojiť bez chyby.

Tiež sa nemôžem spojiť s akoukoľvek verziou CURL na svojom vlastnom počítači, medzi ktoré patrí CURL v Cygwine a CURL na Ubuntu vo virtuálnom stroji, ako aj verzia Windows.

Čo by mohlo viesť k tomuto správaniu?

odpovede:

1 pre odpoveď č. 1

Váš zväzok certifikátov je pravdepodobne zastaraný.

Môžete si kúpiť ten, ktorý udržujú vývojári lokne na http://curl.haxx.se/ca/cacert.pem

Ak chcete používať:

<?
$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 pre odpoveď č. 2

My curl používa balík certifikátov uložený v:

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

Tento problém som mal v minulosti a vyriešil som ho tak, že som sa pozrel na stroj, v ktorom curl pracoval, porovnával súbory .crt z týchto dvoch počítačov a kopíroval chýbajúci certifikát.

Tento problém som mal znova a tentokrát som to opravil len skopírovaním celého súboru z novšieho počítača (novšia inštalácia Ubuntu - stroj, v ktorom mám problém, je starodávny).

A to fungovalo.