Curl+сертификат

ivanovec

Новичок
Добрый день!

Нужно получить xml c сервера xml2.osmp.ru/xmlgate/xml.jsp
Отправка запросов на этот сервер осуществляется по http протоколу методом POST

В браузере есть сертификат для подключения к сайту http://agent.osmp.ru/

Этот сертификат я импортирую из IE.
Как видно в скриншоте, у этого сертификата есть ключ, но при экспорте ключ не запрашивается.
В итоге сертификат эскпортируется без ключа и в формате cer.

Затем этот сертификат я преобразовываю в формат pem т.к. говорят, что curl работает с pem.
Преобразовываю таким образом: C:\WebServers\usr\local\php5\extras\openssl\openssl.exe x509 -in 3.cer -inform d -out file.pem
В момент преобразования никаких действий от меня openssl не запрашивает. Предполагал, что openssl запросит пароль. Тем не менее, получаю выходной сертификат в формате pem.

В скрипте пишу:
function _GetAnswer($address, $xml){
$ch = curl_init($address);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
//curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 180);
curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
//Путь до сертификата
curl_setopt($ch, CURLOPT_SSLCERT, 'file.pem');
//Пароль сертификата
//curl_setopt($ch, CURLOPT_SSLCERTPASSWD,'');
$result=curl_exec($ch);
return $result;
}


//Вызовем функцию _GetAnswer(), сохранив XML-ответ в переменную:
//Код:

// Открываем xml файл
$xml = simplexml_load_file("GetActions.xml");
$answer=_GetAnswer("xml2.osmp.ru/xmlgate/xml.jsp", $xml);
echo $answer;

Результат скрипта, как видно из скрина, <?xml version="1.0" encoding="windows-1251"?><response result="202"/>, т.е. ошибка

Подскажите, пожалуйста, как мне все таки получить xml от сервера?
 

Вложения

ivanovec

Новичок
SPQR.
Внимательно ознакомился. Спасибо.

В настоящий момент имею вот что:

Отказался от пути с экспортом сертификата.

Код выглядит следующим образом:

PHP:
<?php

/**
 * @author admin
 * @copyright 2011
 */

   function _GetAnswer($address, $xml, $header){ 
     $ch = curl_init($address);      
	 curl_setopt($ch, CURLOPT_HEADER, 0);  
     curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
     curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 180);
     curl_setopt($ch, CURLOPT_POST,1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $xml); 
	 $result=curl_exec($ch); 
     return $result; 
   } 


//Вызовем функцию _GetAnswer(), сохранив XML-ответ в переменную: 
//Код:

    // Открываем xml файл  
    $xml = simplexml_load_file("GetActions7.xml");
    $answer=_GetAnswer("http://xml2.osmp.ru/xmlgate/xml.jsp", $xml);
   echo $answer;  



?>
xml файл выглядит следующим образом:
<?xml version="1.0" encoding="windows-1251"?>
<request>
<auth login="*****" sign="*****" signAlg=""/>
<client terminal="*****" software="Dealer v0" serial="*****"/>
<persons>
<getPersonInfo/>
</persons>
</request>

Смотрю через HTTPFOX и там запрос идет методом get, а не post
Скрин прилагаю.

Какие будут идеи, чтобы пройти авторизации на осмп сервере и обменяться с ним xml?
 

Вложения

ivanovec

Новичок
Закрываем тему!
Разобрался без использования экспорта сертификата
 
Сверху