Подключение по SSL

al_mt

Новичок
Подключение по SSL

Пытаюсь подключиться к серверу, который требует сертификат.
PHP:
$cookie = str_replace('\\', '/', dirname(__FILE__)) . 'cookies.txt'; 
$post = ""; 
$ch = curl_init(); 
сurl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 
curl_setopt($ch, CURLOPT_REFERER, "https://sms2all.mts.com.ua/mCampaign/common/Redirector.jsp"); 
curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 
//здесь будет подключение сертификата
curl_setopt($ch, CURLOPT_SSLCERT, 'sertificate.pem');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'DGFER45H');
curl_setopt($ch, CURLOPT_SSLCERTTYPE,'PEM');
сurl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt($ch, CURLOPT_NOBODY, 0); 
// это необходимо, чтобы cURL не высылал заголовок на ожидание
curl_setopt ($ch, CURLOPT_HTTPHEADER, array('Expect:'));
var_dump($ch);
$result = curl_exec($ch); 
var_dump($result);
curl_close($ch);
К другим серверам (без проверки сертификата) всё подключается нормально. А с проверкой вот...
$result равен false :(
Может у меня с ДНК чего?
 

al_mt

Новичок
Ни каких хакеров. Я пытаюсь со своего сервера подключиться к платному сервису МТС. И вот :( Нифига... У других операторов как-то всё работает. А тут просто трындец :(
 

al_mt

Новичок
"Я тормоз" (с)
unable to use client certificate (no key found or wrong pass phrase?)

Странно... Вроде бы как *.pem содержит в себе и публичный ключ и закрытый?
 

Dl

Новичок
Вобще файлов *.pem несколько
PHP:
curl_setopt($curl, CURLOPT_SSLCERT, 'file_cert.pem');
curl_setopt($curl, CURLOPT_SSLKEY, 'file_key.pem');
curl_setopt($curl, CURLOPT_CAINFO, 'file_ca.pem');
 

al_mt

Новичок
PHP:
curl_setopt($curl, CURLOPT_SSLKEY, 'file_key.pem');
curl_setopt($curl, CURLOPT_CAINFO, 'file_ca.pem');
так сюда вроде бы не файлы надо, нет?

-~{}~ 15.07.09 17:47:

Так :) Продолжаем разговор:
Код:
$cookie = str_replace('\\', '/', dirname(__FILE__)) . 'cookies.txt'; 
$url="https://sms2all.mts.com.ua:8070/MCampaignWs/GroupsManagerWs.asmx";
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$url); 
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"); 
curl_setopt($ch, CURLOPT_REFERER, "https://sms2all.mts.com.ua:8070/MCampaignWs/CampaignsManagerWs.asmx"); 
curl_setopt($ch, CURLOPT_FAILONERROR, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 

//здесь будет подключение сертификата
curl_setopt($ch, CURLOPT_SSLCERT, 'client.cer');
curl_setopt($ch, CURLOPT_CAINFO, 'ca.crt');
curl_setopt($ch, CURLOPT_SSLKEY, 'client.key');
curl_setopt($ch, CURLOPT_SSLCERTPASSWD, 'SGE*@#JD');
curl_setopt($ch, CURLOPT_SSLCERTTYPE,'PEM');

// передаем поля формы
$request='<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetReport xmlns="http://www.cellact.com/MCampaignWsBuisnessLogic">
      <CampaignID>my_company</CampaignID>
      <User>
        <Username>my_name</Username>
        <Password>my_password</Password>
      </User>
    </GetReport>
  </soap:Body>
</soap:Envelope>';
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, '1');
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, '1');
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt($ch, CURLOPT_NOBODY, 0);

$headers = array('POST /MCampaignWs/CampaignsManagerWs.asmx HTTP/1.1',
'Host: sms2all.mts.com.ua',
'Content-Type: text/xml; charset=utf-8',
'Content-Length: '.strlen($request),
'SOAPAction: "http://www.cellact.com/MCampaignWsBuisnessLogic/GetReport"'
);

curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $request);

$result = curl_exec($ch);
echo("result:<br>");

$r=curl_error($ch);
var_dump($r);
curl_close($ch);
Возвращает:
bool(false)
string(37) "The requested URL returned error: 500"

:(
 

al_mt

Новичок
Дело в том, что если я захожу туда браузером, то мне возвращается страничка с листом операций. А когда так - вот :(
Вот я и хотел спростить гуру - ничего в моём коде глаз не режет? Я с сертификатами впервые в жизни работаю, мог укосячить, что-нибудь очевидное :(
 
Сверху