Ben kullanıcı adı ve şifre ek olarak bir SSL sertifikası kullanan bir sayfası aracılığıyla bir kullanıcı yetki olabilir cURL kullanarak bir PHP komut dosyası yazmak çalışıyorum, ve ben SSL sertifika aşamasında geçmiş olsun gibi olamaz.
Bu durumda, curl_setopt($handle, CURLOPT_VERIFYPEER, 0)
, ne yazık ki, bir seçenek değildir. Sertifika yoksa ben this other similar SO post belirtilen hata almak, kimlik doğrulama gerekli bir parçasıdır.
Birkaç komut satırı cURL ile çalışır denedim:
> curl --url https://website
Bu (60) SLL certificate problem
hatası döndürür. Ben --cacert
seçeneğini dahil komutunu ayarlayın eğer:
> curl --url https://website --cacert /path/to/servercert.cer
Gayet güzel çalışıyor; auth sitesi döndürülür.
Ancak, şu PHP kodu denedim:
$handle = curl_init();
$options = array(
CURLOPT_RETURNTRANSFER => false,
CURLOPT_HEADER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_SSL_VERIFYHOST => '0',
CURLOPT_SSL_VERIFYPEER => '1',
CURLOPT_CAINFO => '/path/to/servercert.cer',
CURLOPT_USERAGENT => 'Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)',
CURLOPT_VERBOSE => true,
CURLOPT_URL => 'https://website'
);
curl_setopt_array($handle, $options);
curl_exec($handle);
if (curl_errno($handle)) {
echo 'Error: ' . curl_error($handle);
}
curl_close($handle);
Ben kodu kabuk komutları aslında benzer olduğunu, ama bunun yerine aşağıdaki hata mesajı ile karşılaşacaksınız sanırdım:
Hata: Hata ayarı sertifika yerleri doğrulayın: CAFile: / / yol / servercert.cer CApath: yok
Ben (özellikle php.net ve curl.haxx üzerinde) bulabilirsiniz ve bu sorunu giderir şey bulmak için görünmüyor olabilir, tüm edebiyat okudum. Herhangi bir öneriniz?
EDIT: Ben hiçbir başarı ile chmod 777 servercert.cer
denedim. Ancak, php test.php
vasıtasıyla yerine tarayıcı komut satırından Yukarıdaki kod ile PHP komut dosyası yürütme, mükemmel çalışıyor. Bu tarayıcıda neden çalışmıyor için herhangi bir açıklama?
EDIT 2: Bu drive-by bu soru eski alıyorsanız cevaplamak için yeterince cesur sadece ruhlar üzerinde downvotes. Anlamlı bir katkı veya tarafından geçmek, lütfen ya.