Опитвам се да осъществя достъп до вътрешен сайт чрез cURL (до който бих могъл да дойда преди няколко дни). Въпреки това, cURL дава грешката curl: (60) SSL certificate problem: certificate has expired
, Ако използвам openssl
за да проверите началните и крайните дати на сертификата, той дава времева рамка, в която аз съм в рамките на:
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
Освен това, ако използвам cURL на друг компютър или се свържа чрез браузъра (Firefox, Chrome или IE), мога да се свържа без грешка.
Също така не мога да се свържа с никоя версия на cURL на моя собствен компютър; това включва cURL в Cygwin и cURL в Ubuntu във виртуална машина, както и версията на Windows.
Какво може да породи това поведение?
Отговори:
1 за отговор № 1Вашият пакет пакет вероятно е остарял.
Можете да получите такъв, който се поддържа от разработчиците на къдрици на http://curl.haxx.se/ca/cacert.pem
За да го използвате:
<?
$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 за отговор № 2
Моят къдря използва пакетът сертификати, съхраняван в:
/etc/ssl/certs/ca-certificates.crt
В миналото имах този проблем и го отстраних, като погледнах машина, където работеше curl и сравних .crt файловете от тези две машини и копирах липсващия сертификат.
Просто имах този проблем отново и го отстраних този път, като просто копирах целия файл от по-новата машина (по-нова инсталация на Ubuntu ---- машината, където имам проблема е древна).
И работи.