доставка XML файла

23i

Guest
доставка XML файла

есть некая сущность данных которая формализируется в XML структуру на выходе. Дальше эти данные должны быть доствлены до другого сервера в другом конце страны(Ангарс-Москва - как пример маршрута). Данные должны передоватся в зашишенном режиме, т.е. чтобы кто угодно их не смог просто так прочитать(уровень безопасности конечно же очень относительно можно тут оценить, но он обязан присутствовать при передачи). Возникает вопрос как доставить эти данные?!
Есть 3 мысли на этот счет:
1. доставлять xml файл по ftp протоколу
2. работа на низком уровне через сокет
3.использование cURl, для этого

2й и 3й пункты не понятны с точки зрения общей архитектуры.:confused:
 

Макс

Старожил PHPClub
ИМХО тут просто обыкновенный POST-запрос через HTTPS-протокол.
Использовать curl или fsockopen
 

23i

Guest
а в пакете должен просто содержатся xml сущность, я правильно понимаю ход твоих мыслей?
теперь возникает вопрос по доступу на пос данных только тех кому это разрешино, а не всем кому угодно. Можно как то организовать с правами доступа? может пользователей создавать как-то или ещё что-то.
 

Макс

Старожил PHPClub
а в пакете должен просто содержатся xml сущность, я правильно понимаю ход твоих мыслей?
чесно говоря не очень понял что ты имеешь ввиду под пакетом.
Я имел ввиду следующее.
Предcтавь себе такую форму:
Код:
<form method="post" 
action="https://your.server.ru/destination.php">
<textarea name="xml"></textarea>
<input type="submit">
</form>
Вот примерно такой POST-запрос я предлагал реализовать.

теперь возникает вопрос по доступу на пос данных только тех кому это разрешино, а не всем кому угодно
что такое шифрование с открытым ключом и ЭЦП (электронная цифровая подпись) знаешь ?
 

23i

Guest
чесно говоря не очень понял что ты имеешь ввиду под пакетом.
Я имел ввиду следующее.
Предcтавь себе такую форму:
нет, это не то. мне надо доставить xml файл(сущность данных) от одного сервера к другому.

что такое шифрование с открытым ключом и ЭЦП (электронная цифровая подпись) знаешь ?
общее представление имею
 

Макс

Старожил PHPClub
23i
нет, это не то. мне надо доставить xml файл(сущность данных) от одного сервера к другому.
чем не устраивает мой вариант ? На другой сервер попадет текст xml-файла в $_POST['xml'];
 

23i

Guest
чем не устраивает мой вариант ? На другой сервер попадет текст xml-файла в $_POST['xml'];
хм, не понял с первого раза суть, похмелье после вчерашнего:), понял
все устраивает -гениально и просто:)
а по шифрованию посоветуешь что-нибуть почитать в инете?
 

Макс

Старожил PHPClub
а по шифрованию посоветуешь что-нибуть почитать в инете?
ой, давно я все это читал. Для начала мануал по mod_ssl (где-то здесь)
Там сама суть неплохо описана.
Тебе скорее всего не само щифрование нужно, сколько научиться подписывать свои запросы с помощью ЭЦП.
Я пока этим не занимался, так что советовать ничего не буду.
 

Ямерт

The Old One
Как я это вижу:

Создаётся SSL-сертификат - публичный ключ отправляется партнёру.

Отправляется HTTPS-запрос (GET или POST - имхо, тут разницы нет) через CURL (Content-type: text/plain). В запросе 2 поля:
1) base64_encode(<your_xml_data>)
2) подпись

Подпись составляется из некоторых данных запроса:
2.1) openssl_sign(<your_signature_data>, $signature, $priv_key_id);
2.2) подпись = base64_encode($signature);

Партнёр, получив запрос, проверяет подпись через openssl_verify(), используя публичный ключ. Если подпись верная, обрабатывает XML-данные (base64_decode(<your_xml_data>)).

Про PHP OpenSSL API можно почитать тут: http://www.php.net/openssl
Про CURL:
http://curl.haxx.se/
http://www.php.net/curl
 

23i

Guest
Как я это вижу:

Создаётся SSL-сертификат - публичный ключ отправляется партнёру.

Отправляется HTTPS-запрос (GET или POST - имхо, тут разницы нет) через CURL (Content-type: text/plain). В запросе 2 поля:
1) base64_encode(<your_xml_data> )
2) подпись

Подпись составляется из некоторых данных запроса:
2.1) openssl_sign(<your_signature_data>, $signature, $priv_key_id);
2.2) подпись = base64_encode($signature);

Партнёр, получив запрос, проверяет подпись через openssl_verify(), используя публичный ключ. Если подпись верная, обрабатывает XML-данные (base64_decode(<your_xml_data> )).

Про PHP OpenSSL API можно почитать тут: http://www.php.net/openssl
Про CURL:
http://curl.haxx.se/
http://www.php.net/curl
все замечательно акромя того что не понятно на чем будет написан сам гейт (основной, или как ты его назвал - партер), возможно это будет сделано средствами Axapta или может будет BizTalk Server 200(2003). Поэтому надо просто разработать общую схему работы, возможно использовать SOAP, над чем я подумываю.
Скорее всего данные будут передаватся именно так как ты и сказал, вопрос пока в цифровой пописи и шифровании.
 
Сверху