Evgenii Legotckoi
Evgenii Legotckoi22. Januar 2017 03:05

Django - Tutorial 019. Konfiguration des HTTPS-Protokolls auf der Seite von Let`s Encrypt

Gestern habe ich einen Glücksbrief von Google erhalten, weil ich die Google Search Console verwende, um die Indexierung der Seite in der Google-Suchmaschine zu tracken. Der Kern des Schreibens besteht darin, dass Google Chrome die Unsicherheit einer Website meldet, die das http-Protokoll auf den Seiten verwendet, die ein Passwort erfordern. Und wenn Sie bedenken, dass sich auf meiner Website das Autorisierungsformular auf allen Seiten befindet, wird die Warnung auf allen Seiten der Website angezeigt. Nicht die angenehmste Situation, also musste ich schnell ein SSL-Zertifikat besorgen und https konfigurieren.

Derzeit gibt es eine Zertifizierungsstelle Let`s Encrypt , die kostenlose Zertifikate für einen Zeitraum von 90 Tagen ausstellt. Diese Zertifizierungsstelle wird unterstützt von Electronic Frontier Foundation (EFF), Mozilla Foundation, Akamai, Cisco Systems.

Der Vorgang zum Abrufen und Installieren eines Zertifikats ist automatisiert, aber im Fall einer Website, die auf Django und Nginx ausgeführt wird, müssen Sie zusätzlich an den Nginx -Servereinstellungen arbeiten.


Ein Zertifikat erhalten

Certbot-Software wird verwendet, um ein Zertifikat zu erhalten und automatisch zu aktualisieren. Auf der Let`s encrypt-Website gibt es einen Link zu dieser Software, wo Sie den Typ Ihres Betriebssystems und den Server auswählen können, der zum Bereitstellen von Inhalten verwendet wird auf Ihrer Website. In meinem Fall sind dies Nginx und Ubuntu 16.04 .

Es wird auch Anweisungen zum Installieren und Erhalten eines Zertifikats geben.

Verwenden Sie den folgenden Befehl, um die Zertifizierungssoftware zu installieren:

sudo apt-get install letsencrypt 

Als nächstes müssen Sie ein Zertifikat mit dem Plug-in webroot mit dem folgenden Befehl abrufen:

sudo letsencrypt certonly --webroot -w /var/www/example -d example.com -d www.example.com 

Wo das Verzeichnis für die Zertifizierung Ihrer Website angegeben ist, in diesem Fall /var/www/example , muss es erstellt werden und die entsprechenden Domains, für die Sie Zertifikate erhalten.

In diesem Fall gibt es eine Einschränkung. Bereits in diesem Schritt müssen Sie Nginx konfigurieren, da im Verzeichnis /var/www/example ein verstecktes .well-known -Verzeichnis erstellt wird, das zum Erhalt einer Zertifikat. Sie können mehr über die Ersteinrichtung von Nginx im relevanten Artikel lesen.

Daher konfigurieren wir zunächst Nginx wie unten gezeigt und starten es neu.

server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    location /.well-known {
        alias /var/www/example/.well-known;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Dann erhalten Sie erfolgreich Ihr SSL-Zertifikat.

Konfigurieren Sie das https-Protokoll

Nachdem wir das Zertifikat erhalten haben, müssen wir das https-Protokoll konfigurieren und dafür den Port 443 auf dem Server öffnen.

sudo ufw allow 443/tcp

Und konfigurieren Sie Nginx.

server {    
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;  

    location /.well-known {
        alias /var/www/example/.well-known;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

In diesem Fall geben Sie die Pfade zu Ihren Zertifikaten und die Ports an, auf denen der Server auf eine Verbindung wartet.

Aufbau einer http-Verbindung

Ob Sie Benutzern die Möglichkeit lassen, sich mit dem Protokoll http zu verbinden, liegt bei Ihnen, aber welchen Sinn hat es, die Möglichkeit zu lassen, mit diesem Protokoll zu arbeiten, wenn es bereits https gibt. Daher werden wir umleiten der Benutzer von Seiten mit http auf die gleiche Seite mit https .

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;  


    location /.well-known {
        alias /var/www/example/.well-known;
    }

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Wir starten Nginx neu und stellen sicher, dass wir beim Verbindungsversuch über http automatisch auf die Verbindung über https umgeleitet werden.

Automatische Zertifikatserneuerung

Der folgende Befehl wird verwendet, um das Zertifikat zu aktualisieren:

letsencrypt renew 

Aber der Prozess kann mit cron automatisiert werden (ein Daemon-Programm, das entwickelt wurde, um Aufgaben zu einer bestimmten Zeit oder in bestimmten Intervallen auszuführen).

Führen Sie den folgenden Befehl aus, um Cron als Root-Benutzer zu bearbeiten:

sudo crontab -e

Sie haben die Wahl zwischen möglichen Editoren, wählen Sie Ihren Editor nach Ihren Wünschen. Und ich verwende nano. Fügen Sie dann die folgende Zeile in die cron. -Konfiguration ein

30 2 * * 1 /usr/bin/letsencrypt renew >> /var/log/letsencrypt-renew.log

In diesem Fall wird montags um 2:30 Uhr versucht, das Zertifikat zu erneuern.

Inhaltskorrektur

Als letztes bleibt noch die Anpassung aller Links auf der Seite. Das heißt, Sie müssen http auf https ändern, damit die interne Verlinkung der Website keine zusätzlichen Weiterleitungen erzeugt.

Für Django empfehle ich Timeweb-Hoster VDS-Server .

Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Stabiles Hosting des sozialen Netzwerks EVILEG. Wir empfehlen VDS-Hosting für Django-Projekte.

Magst du es? In sozialen Netzwerken teilen!

ArtDev
  • 2. Juni 2017 14:58

Добрый день хочу обновить сертификат, но получаю следующее

The following certs are not due for renewal yet: /etc/letsencrypt/live/mysite_ru/fullchain.pem (skipped) No renewals were attempted
. Как правильно обновить сертифика, подскажите? Может что в конфиге поправить?
Evgenii Legotckoi
  • 3. Juni 2017 02:34

Добрый день. Либо webroot не отработал как следует, либо вы где-то в настройке http накосячили. Смотрите строчки, где указывается путь к ssl сертификату в конфиге nginx.

Kommentare

Nur autorisierte Benutzer können Kommentare posten.
Bitte Anmelden oder Registrieren
Letzte Kommentare
A
ALO1ZE19. Oktober 2024 08:19
Fb3-Dateileser auf Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов5. Oktober 2024 07:51
Django – Lektion 064. So schreiben Sie eine Python-Markdown-Erweiterung Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas55. Juli 2024 11:02
QML - Lektion 016. SQLite-Datenbank und das Arbeiten damit in QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
k
kmssr8. Februar 2024 18:43
Qt Linux - Lektion 001. Autorun Qt-Anwendung unter Linux как сделать автозапуск для флэтпака, который не даёт создавать файлы в ~/.config - вот это вопрос ))
Qt WinAPI - Lektion 007. Arbeiten mit ICMP-Ping in Qt Без строки #include <QRegularExpressionValidator> в заголовочном файле не работает валидатор.
Jetzt im Forum diskutieren
J
JacobFib17. Oktober 2024 03:27
добавить qlineseries в функции Пользователь может получить любые разъяснения по интересующим вопросам, касающимся обработки его персональных данных, обратившись к Оператору с помощью электронной почты https://topdecorpro.ru…
JW
Jhon Wick1. Oktober 2024 15:52
Indian Food Restaurant In Columbus OH| Layla’s Kitchen Indian Restaurant If you're looking for a truly authentic https://www.laylaskitchenrestaurantohio.com/ , Layla’s Kitchen Indian Restaurant is your go-to destination. Located at 6152 Cleveland Ave, Colu…
КГ
Кирилл Гусарев27. September 2024 09:09
Не запускается программа на Qt: точка входа в процедуру не найдена в библиотеке DLL Написал программу на C++ Qt в Qt Creator, сбилдил Release с помощью MinGW 64-bit, бинарнику напихал dll-ки с помощью windeployqt.exe. При попытке запуска моей сбилженной программы выдаёт три оши…
F
Fynjy22. Juli 2024 04:15
при создании qml проекта Kits есть но недоступны для выбора Поставил Qt Creator 11.0.2. Qt 6.4.3 При создании проекта Qml не могу выбрать Kits, они все недоступны, хотя настроены и при создании обычного Qt Widget приложения их можно выбрать. В чем может …

Folgen Sie uns in sozialen Netzwerken