Подать заявку на бесплатный сертификат HTTPS и включить HTTPS для всего сайта

GitHub Django
Подать заявку на бесплатный сертификат HTTPS и включить HTTPS для всего сайта

Автор: HelloGitHub-стремящийся к мечте

Пример кода, задействованный в этой статье, был синхронно обновлен доРепозиторий HelloGitHub-Team

HTTP-пакеты передаются в открытом виде. Если ваш сайт поддерживает только HTTP-протокол, он может подвергаться атакам безопасности. Вы можете использовать Google Chrome, чтобы открыть веб-сайт с протоколом HTTP, и вы обнаружите, что Chrome помечает веб-сайт как небезопасный в левой части URL-адреса.

HTTPS обеспечивает зашифрованный канал передачи HTTP-пакетов, поэтому злоумышленники не могут подслушать или изменить передаваемый контент. Чтобы включить HTTPS, вы должны подать заявку на сертификат HTTPS от доверенного центра. Заявка на получение профессионального сертификата требует платы, но для сайтов с личными блогами существует множество бесплатных агентств по подаче заявок на сертификаты. Например, Let’s Encrypt предоставляет бесплатную услугу подачи заявки на сертификат, процесс подачи заявки очень прост, нужно выполнить всего несколько команд, а также поддерживается автоматическое продление после истечения срока действия сертификата, что можно описать как раз и навсегда. Затем мы используем инструменты, предоставляемые Let’s Encrypt, чтобы подать заявку на бесплатный сертификат HTTPS.

Сначала установите инструмент приложения сертификата, предоставленный Let's Encrypt. Авторизоватьсяcertbot.eff.org/Выберите серверное программное обеспечение и операционную систему, используемые нашим блог-сайтом. В руководстве используются Nginx и CentOS 7 в качестве примера:

Сначала установите необходимые инструменты:

$ sudo yum -y install yum-utils
$ sudo sudo yum install -y certbot python2-certbot-nginx

certbot python2-certbot-nginx — это инструмент для применения сертификата HTTPS, предоставляемый Let’s Encrypt, а python2-certbot-nginx — это плагин, специально предназначенный для Nginx, который упрощает и делает более удобным применение сертификатов для служб, работающих под управлением Nginx.

Затем выполните команду запроса сертификата:

$ sudo certbot --nginx

Уведомление

После тестирования можно сообщить об ошибке ImportError: Нет модуля с именем «requests.packages.urllib3» после выполнения вышеуказанной команды, что связано с низкой версией запросов и urlib3 (см.issueобсуждение), решение состоит в том, чтобы переустановить их, выполнив следующую команду:

$ pip uninstall requests
$ pip uninstall urllib3
$ yum remove python-urllib3
$ yum remove python-requests

Затем переустановите certbot.Поскольку он зависит от двух вышеуказанных пакетов, при переустановке он будет установлен вместе:

$ sudo yum install -y certbot python2-certbot-nginx

Повторно выполните команду запроса сертификата: sudo certbot --nginx

Появится серия интерактивных подсказок, которые сначала попросят вас ввести адрес электронной почты для подписки. Затем введите a, чтобы согласиться с их политикой.

Затем certbot автоматически просканирует доменное имя и введет метку доменного имени, для которого вы хотите включить HTTPS, в соответствии с запросом:

Which names would you like to activate HTTPS for?


1: django-blog-tutorial-v2-demo.zmrenwu.com


Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel): 1

Затем certbot выполнит проверку доменного имени, чтобы доказать, что вы контролируете доменное имя. После проверки Let’s Encrypt выдаст вам сертификат.

Наконец, вам будет предложено перенаправить HTTP на HTTPS. Конечно, выберите «Да», чтобы certbot автоматически помог нам изменить конфигурацию Nginx и перенаправить HTTP на HTTPS. Если пользователи используют протокол HTTP для доступа к нашему веб-сайту блога, они быть перенаправлены на доступ по протоколу HTTPS для обеспечения безопасности.

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.


1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration.


Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2 Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/django-blog-tutorial-v2.conf

Сертификат, запрошенный certbot, действителен только в течение 3 месяцев, но это не имеет значения, certbot может быть продлен на неопределенный срок.Мы добавляем запланированное задание crontab для выполнения задачи автоматического обновления certbot.Такое приложение будет использоваться на всю жизнь.

Откройте /etc/crontab и добавьте запланированные задачи:

echo "0 0,12 * * * root python -c 'import random; import time; time.sleep(random.random() * 3600)' && certbot renew" | sudo tee -a /etc/crontab > /dev/null

Эта конфигурация выполняет команду автоматического обновления в 12:00 каждый день.

Поскольку HTTPS включен на всем сайте, необходимо изменить не-HTTPS-контент на веб-сайте (например, внешние ресурсы, запрашиваемые по протоколу HTTP) на HTTPS. В настоящее время в нашем блоге есть файл стиля, который вводит внешний библиотека иконок по протоколу HTTP. , нужно перейти на HTTPS:

base.html

<link rel="stylesheet" href="https://code.ionicframework.com/ionicons/2.0.1/css/ionicons.min.css">

Вышеупомянутое за несколько простых шагов включает HTTPS для всего сайта.

«Объяснение серии проектов с открытым исходным кодом»——Пусть больше не боятся люди, интересующиеся проектами с открытым исходным кодом, и пусть инициаторы проектов с открытым исходным кодом больше не остаются в одиночестве. Следите за нашими статьями, и вы откроете для себя радости программирования, насколько легко им пользоваться, и узнаете, как легко участвовать в проектах с открытым исходным кодом. Добро пожаловать, чтобы оставить сообщение, чтобы связаться с нами, присоединиться к нам, позволить большему количеству людей влюбиться в открытый исходный код и внести свой вклад в открытый исходный код~