Как настроить SSL на локальном сервере django для тестирования приложения facebook? - PullRequest
19 голосов
/ 30 сентября 2011

Я настроил конфигурацию HOSTS на локальном компьютере для доступа к локальному серверу (@ 127.0.0.1) всякий раз, когда я нажимаю http://www.mydomain.com в браузере.

И я использовал это для взаимодействия сГрафик API для Facebook, чтобы построить мое приложение.Но теперь Facebook требует, чтобы у нас был URL-адрес HTTPS или, скорее, защищенный URL-адрес SSL для взаимодействия с их API.

Итак, вопрос -> Как настроить SSL на локальном сервере django?

Ответы [ 6 ]

39 голосов
/ 11 августа 2013

Не надо зацикливаться на потоке, но я нашел этот инструмент чрезвычайно простым в использовании.

Это готовое приложение django с очень простыми инструкциями по установке.

Вы можете добавить сертифицированный ключ после его установки, просто запустив:

python manage.py runsslserver --certificate /path/to/certificate.crt --key /path/to/key.key

Надеюсь, это поможет любому прохожему, который может это увидеть.

13 голосов
/ 10 июня 2015

С помощью django-extensions вы можете выполнить следующую команду:

python manage.py runserver_plus --cert certname

Он автоматически создаст (самоподписанный) сертификат, если он не существует.Почти слишком просто.

Вам просто нужно установить следующие зависимости:

pip install django-extensions
pip install Werkzeug
pip install pyOpenSSL

Теперь, , как указал Райан Перджент в комментариях , вам, наконец, нужно толькодобавьте 'django_extensions', к вашему INSTALLED_APPS и все будет хорошо.

Ранее я использовал туннель, который работал, но это намного проще и поставляется со многими другими командами.

7 голосов
/ 30 сентября 2011

Короткий ответ: вам нужно настроить надлежащий веб-сервер на компьютере разработчика.Используйте тот из них (Apache, nginx, Cherokee и т. Д.), С которым вы наиболее знакомы.

Более длинный ответ: сервер разработки django (manage.py runserver) не предназначен для работы с SSL и т. Д.скорее всего, это больше, чем вы бы хотели потратить.

См. обсуждение этого пассима в списке пользователей django: http://groups.google.com/group/django-users/browse_thread/thread/9164126f70cebcbc/f4050f6c82fe1423?lnk=gst&q=ssl+development+server#f4050f6c82fe1423

6 голосов
/ 16 января 2014

Обходной путь для запуска https на django.

Это можно сделать с помощью stunnel, который позволяет серверу Facebook и stunnel на вашем компьютере обмениваться данными по протоколу SSL, а stunnel оборачивается для связи с Python по HTTP. Сначала установите stunnel. Например, в Mac OS X:

brew install stunnel

Затем вам нужно создать файл настроек для выполнения stunnel. Вы можете создать текстовый файл в любом месте. Например, вы можете создать dev_https и ввести:

pid=
cert=/usr/local/etc/stunnel/stunnel.pem
foreground=yes
debug=7

[https]
accept=8001
connect=8002
TIMEOUTclose=1

stunnel создает поддельный сертификат. По умолчанию на Mac он находится по адресу /usr/local/etc/stunnel/stunnel.pem. В вашем браузере появится предупреждение о том, что ваша веб-страница может быть поддельной, но операции в Facebook все еще работают правильно. Поскольку stunnel должен прослушивать один порт, а сервер разработки Python не может работать на одном и том же сервере, вы должны использовать разные порты для приема (входящего) и соединения (внутреннего). Когда у вас есть файл dev_https или как вы его назвали, запустите

sudo stunnel dev_https

чтобы начать туннелирование. Затем запустите ваш сервер Python.

HTTPS=1 python manage.py runserver 0.0.0.0:8002

Переменная среды HTTPS должна быть установлена ​​в 1, чтобы она возвращала безопасные ответы, и, поскольку мы ранее установили внутренний порт на 8002, мы прослушиваем 8002 со всех входящих IP-адресов. Затем ваш IP: 8001 может принимать HTTPS-соединения без изменения вашего веб-сервера, и вы можете продолжить работу другого экземпляра HTTP Python-сервера на другом порту.

ссылка: http://tech.xster.net/tips/django-development-server-with-https/

3 голосов
/ 09 сентября 2013

Это не решает проблему автоматического тестирования через

. / Manage.py test

, но для запуска сервера с HTTPS вы можете использовать RunServerPlus: http://pythonhosted.org/django-extensions/runserver_plus.html

Просто установите django-extensions и pyOpenSSL:

pip установите django-extensions pyOpenSSL

и запустите:

python manage.py runserver_plus --cert cert

1 голос
/ 15 июня 2012

Я смог настроить ssl на тестовом сервере django с помощью stunnel. Здесь - некоторая информация о том, как его настроить

Просто замечание, я не смог заставить его работать, используя пакет, предоставленный debian в apt-get, и мне пришлось установитьиз источника.Если вам нужно сделать то же самое, ознакомьтесь с отличными инструкциями форумы Debian о том, как создавать пакеты Debian.В Интернете есть множество инструкций, а также часто задаваемых вопросов о том, как создать сертификат pem, но в конечном итоге dpkg-buildpackage в Debian создал его для меня.

Я бы подумал, что на самом деле в Windows все может быть проще.,

Затем я смог заставить pydev в eclipse запустить тестовый сервер (и также подключиться к нему), добавив переменную окружения HTTPS = 1 в «Отладочные конфигурации» -> «Среда» -> Переменные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...