Возникла необходимость организовать к веб-сервису доступ по протоколу https. Для этого мне нужно было получить ssl-сертификаты. Передо мной было два варианта:
1. Сделать самоподписанный сертификат.
2. Приобрести сертификат у доверенного Центра Сертификации.
Для теста, я попробовал и первый вариант, так как не был уверен, что получится купить доверенный сертификат. Проблем с самоподписанным сертификатом не было - инструкций гуглится вагон и маленькая тележка. Например раз, два и три.

Но так как это небезопасно и вообще некошерно, поискал информацию по приобретению доверенного сертификата. Куча контор занимается продажей подобных сертификатов, но на хабре нашел несколько постов про бесплатный подтвержденный сертификат, который можно получить в startssl.com. Для небольших проектов вполне подойдет: выдается на один год, включает в себя один поддомен, нет подтверждения организации. Нашел несколько инструкций, которыми и воспользовался: раз, два, три. Также можно приобрести сертификат второго класса (60 баксов, относительно других контор, вполне себе недорого), с подтверждением организации и кучей поддоменов (и wildcard - все поддомены домена типа *.site.ru). На хабре есть инструкция. Есть и сертификаты повыше класса.

Отмечу, что при регистрации на startssl указывайте вначале свои данные, а не организации - они в последующих приобретенных сертификатах участвовать не будут, но понадобятся при идентификации, когда будете брать платные сертификаты.

Инструкции по настройке apache также имеются. На примере самоподписанных сертификатов: раз, два. С доверенными могут быть небольшие изменения, которые в принципе должны быть в инструкция Сертификационных Центров - например, небольшая инструкция на startssl.

Редирект с http на https в апаче можно сделать таким образом (указать в виртуалхосте для http_:80):
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
 Чтобы Django заработала с https, необходимо добавить в settings.py:
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True
Об этом написано, например, здесь - там же сказано еще про один вид редиректа http на https, но его я не пробовал. Настройки эти, кстати, я указал на деплое в local_setting.py (а уже в settings.py их импортирую - об этом можно прочесть здесь), а на девелопе они и не нужны (ну или и на девелопе самоподписанными ключами воспользоваться).

Теперь зеленый замок радует глаз.

Вот такая довольно сумбурная заметка.

0 комментариев:

Отправить комментарий