Как настроить SSL на локальном сервере django для тестирования приложения facebook?

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

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

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

Ответы

Ответ 1

Короткий ответ: вам нужно настроить правильный веб-сервер на своей машине разработки. Используйте тот, который вам больше всего нравится (Apache, nginx, cherokee и т.д.).

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

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

Ответ 2

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

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

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

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

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

Ответ 3

Установите django-extensions и его требования, и запустите

python manage.py runserver_plus --cert certname

Он автоматически сгенерирует (самозаверяющий) сертификат, если он не существует. Слишком просто.

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

Ответ 4

Обходной путь для запуска 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. Itll выведет предупреждение в вашем браузере, говоря, что ваша веб-страница может быть фальшивой, но действия в Facebook все еще работают правильно. Поскольку stunnel должен прослушивать один порт, а сервер разработки Pythons не может работать на одном сервере, вы должны использовать разные порты для приема (входящего) и соединения (внутреннего). После того, как у вас есть файл 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/

Ответ 5

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

./manage.py test

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

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

pip install django-extensions pyOpenSSL

а затем запустите:

python manage.py runningerver_plus --cert cert

Ответ 6

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

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

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

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