cURL и пароль к сертификату

hussar

In code we trust!
cURL и пароль к сертификату

Всем доброе время суток!
Подключаю свой сертификат, в соответствии с маном пишу такую конструкцию:
PHP:
curl_setopt($ch, CURLOPT_SSLCERT, 'Cert.pem');
       curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'пароль');
Название файла и пароль точно правильные, как и путь к файлу. Однако скрипт возвращает
1) на удаленной машине:

unable to set private key file: 'Cert.pem' type PEM

2) на локальной

unable to set certificate file (wrong password?)

Насколько я понимаю не подходит пароль, хотя он правильный. В чем может быть дело? Подскажите?!

Всем заранее спасибо!
 

skynet80

rundesigner.com
В общем у тебя в первом случае на первай фунции запинается, а во втором на второй. Ты бы полностью код привел. Может чего конкретней подсказали бы :).
 

hussar

In code we trust!
Вот код
PHP:
$ch = curl_init();
       	curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
       	curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
       	curl_setopt($ch, CURLOPT_URL,$url);
       	curl_setopt($ch, CURLOPT_FAILONERROR, 1);
		curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
       	curl_setopt($ch, CURLOPT_SSLCERT, 'Cert.pem');
       	curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'kkk');
       	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
       	curl_setopt($ch, CURLOPT_TIMEOUT, 4);
       	//curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $header);
		
       	echo "<pre>";
       	print_r(curl_getinfo($ch));
       	echo "</pre>";
       	
		echo "<br>cURL error number: " .curl_errno($ch);
		echo "<br>cURL error: " . curl_error($ch); 
       	
       $data = curl_exec($ch);        
       
       curl_close($ch);
От хоста к которому идет конект приходит ответ о том что сертификат не подтвержден.
 

skynet80

rundesigner.com
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
Вот эта вот величина типа интежер, и она ставится автоматически в 2 при написании вот этой строчки
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
так что можешь выкинуть, может поможет, а может дальше в чем дело. Все до завтра.
 

skynet80

rundesigner.com
Почитай здесь поможет. Сейчас нет времени разбираться.
http://curl.tsuren.net/docs/sslcerts.html
 

hussar

In code we trust!
В общем разобрался с проблемой!
Вот окончательный вариант кода (может кому-то и понадобится), который проверяет сертификат и производит соединение с удаленным сервером через SSL:
PHP:
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSLCERT, 'мой_файл_с_сертификатом.pem');
curl_setopt($ch, CURLOPT_SSLKEY, 'мой_файл_с_ключем_от_сертификата.pem');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'пароль');
curl_setopt($ch, CURLOPT_CAINFO, 'сертификат_сервера.pem');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
Возможная причина не срабатывания может заключатся в том что проставлен маленький timeout, когда я увеличил его до 10 секнд все заработало.
 
Сверху