LINUX.ORG.RU
ФорумAdmin

Передача данных от клиента через https

 , ,


0

2

Добрый день!

Имеется вебприложение на джанго, вебсервером работает апач.

Стоит задача привести в порядок систему регулярной передачи информации с клиентов на сервер. Сейчас в качестве этого выступают питонные скрипты: один - сервер, который в себе использует питонный ThreadedTCPServer и висит на отдельном порту, второй - клиент, дергающий сервер раз в 10 минут по крону и передающий нечто бинарное, размер передаваемый информации это, как правило, килобайты.

Идея состоит в том, что бы переложить эту работу на плечи apache и django и при этом все это дело зашифровать и наладить авторизацию сервера клиентом и, что более важно, клиента сервером.

В связи с чем вопросы:

1. На сколько я понимаю, передавать данные придется либо через GET, либо через POST запросы, нормально ли это вообще и есть ли какие-то другие способы передачи данных с клиента на сервер по https?

2. С авторизацией сервера все понятно, а как быть с авторизацией клиента? Читал, что https позволяет авторизовывать обе стороны, но умеет ли это apache и можно ли хранить сертификаты клиентов в бд django? Подозреваю, что ответ - нет.

Хочется услышать мнение людей со стороны о том, как вообще лучше это реализовать.

На сколько я понимаю, передавать данные придется либо через GET, либо через POST запросы, нормально ли это вообще

Нормально, как будто есть другие варианты. Это же все тот же http.

С авторизацией сервера все понятно, а как быть с авторизацией клиента? Читал, что https позволяет авторизовывать обе стороны, но умеет ли это apache

Конечно умеет.

и можно ли хранить сертификаты клиентов в бд django?

Сертификаты клиентов вообще нигде хранить не надо. Нужно создать самому свою приватную CA (certificate authority) и ее ключем подписывать все клиентские сертификаты. При этом на стороне сервера достаточно будет хранить только сертификат твоей CA.

Vovka-Korovka ★★★★★ ()

Если я правильно понял, и клиент написан на питоне - то нужно осторожным быть с https. Дефолтные библиотеки (urllib и httplib) научились проверять сертификаты только с версии 2.7.9, причем даже в последних версиях все SSL проверки по умолчанию выключены.

P.S. В любом случае тебе придется сначала про SSL/TLS почитать, и дело не должно ограничаваться парой часов - риск налажать незнаючи с SSL около 100 %.

Vovka-Korovka ★★★★★ ()
Ответ на: комментарий от Vovka-Korovka

Спасибо за быстрый ответ

Сертификаты клиентов вообще нигде хранить не надо. Нужно создать самому свою приватную CA (certificate authority) и ее ключем подписывать все клиентские сертификаты. При этом на стороне сервера достаточно будет хранить только сертификат твоей CA.

Дойдет ли до джанго информация о том, что это за клиент?

flawless ()
Ответ на: комментарий от flawless

Дойдет ли до джанго информация о том, что это за клиент?

Судя по документации, можно настроить, чтобы информация о клиенте, вытащенная из сертификата, доходила до джанги

https://docs.djangoproject.com/en/dev/howto/auth-remote-user/

Правда, я не специалист по джанге ниразу.

Vovka-Korovka ★★★★★ ()

Читал, что https позволяет авторизовывать обе стороны, но умеет ли это apache и можно ли хранить сертификаты клиентов в бд django? Подозреваю, что ответ - нет.

всё можно

Harald ★★★★★ ()

rest, данные в base64, авторизация по токену. 5 мин работы

invokercd ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.