HTTPS Setup für eine Flask Anwendung – Teil 2
Im ersten Teil habe ich die Einrichtung des Ubuntu Servers für meine kleine Webanwendung für den isländisch Kurs beschrieben. Im zweiten Teil möchte ich kurz auf die HTTPS Einrichtung eingehen.
Die DigitalOcean Anleitung für Ubuntu 18.04 funktioniert nicht unter Ubunt 20.x. Bitte darauf achren, die Anleitung für das eingesetzte Ubuntu Release (hier 20.04) zu verwenden, falls vorhanden. Das verwendete Repository ppa:certbot/certbot
ist im Status DEPRECATED.
slommi@ubuntu-s-1vcpu-1gb-fra1-01:~$ sudo add-apt-repository ppa:certbot/certbot
The PPA has been DEPRECATED.
To get up to date instructions on how to get certbot for your systems, please see https://certbot.eff.org/docs/install.html.
More info: https://launchpad.net/~certbot/+archive/ubuntu/certbot
Press [ENTER] to continue or Ctrl-c to cancel adding it.
Daher wird der Certbot für die Let’s Encrypt Zertifikate
sudo apt install certbot python3-certbot-apache
apt install python3-certbot-apache
Ein Apache Virtual Host ist Vorausssetzung für die nächsten Schritte. Die Einrichung habe ich in Teil 1 beschrieben.
HTTPS Zugriff durch die Firewall
Der aktuelle Status der Firewall wird mit ufw
abgefragt:
sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Apache ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Apache (v6) ALLOW Anywhere (v6)
Um eingehende HTTPS Anfragen zu erlauben, muss das Apache Full Profil zugelassen werden. Das HTTP Apache Profil kann entfernt werden.
sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache'
Eine Statusabfrage mit sudo ufw status
zeigt jetzt Apache Full
an.
Zertifikate von Let’s Encrypt
Der certbot wird mit dem Apache Plugin und der gewünschten Domäne (-d) aufgerufen. Die folgenden Fragen nach Parametern sind zu beantworten. Bei der Frage nach Umleitung der HTTP Anfragen auf HTTPS empfehle ich einer Umleitung auf HTTPS zuzustimmen.
sudo certbot --apache -d is.hslomka.de
Die Zertifikate sind nur 90 Tage gültig. Daher hat certbot einen Systemservice eingerichtet, der sich um die Erneuerung der Zertifikate kümmert. Der Prozess kann mit einem --dryrun
getestet werden.
certbot renew --dry-run
Der entscprechende systemd Service heißt certbot.timer
.
sudo systemctl status certbot.timer
slommi@ubuntu-s-1vcpu-1gb-fra1-01:~$ sudo systemctl status certbot.timer
● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Wed 2021-04-07 13:43:30 UTC; 2 weeks 6 days ago
Trigger: Wed 2021-04-28 09:59:33 UTC; 2h 17min left
Triggers: ● certbot.service
Apr 07 13:43:30 ubuntu-s-1vcpu-1gb-fra1-01 systemd[1]: Started Run certbot twice daily.
HTTPS ist eingerichtet.