Как настроить 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 в разделе "Конфигурации отладки" → "Среда" → Переменные