SSL-Zertifikat

Der einfachste Weg, ein SSL-Zertifikat für eine Domain mit Port-Weiterleitung zu implementieren, beinhaltet die Verwendung eines Reverse Proxies und eines kostenlosen Zertifikatdienstes wie Let’s Encrypt.

Der Weg hier wird mit Apache2 erklärt.

Installieren von Certbot für Apache

Wenn Sie Certbot noch nicht installiert haben.

sudo apt update
sudo apt upgrade
sudo apt install certbot python3-certbot-apache

Konfiguration Apache2

Erstellen oder bearbeiten Sie eine Konfigurationsdatei für Ihre Domain, z. B.

/etc/apache2/sites-available/meinedomain.at.conf

Die Datei muss auf .conf enden und muss im Verzeichnis sites-available gespeichert werden.

Der inhalt der .conf Datei sollte dabei wie folgt aussehen.

 

<VirtualHost *:80>
ServerName meinedomain.at
DocumentRoot /var/www/meinedomain.at
    ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>

Aktivieren der Konfigurationsdatei und das benötigte Proxy-Modul

sudo a2ensite meinedomain.at
sudo a2enmod proxy proxy_http
sudo systemctl restart apache2

Erwerben eines SSL-Zertifikates

Verwenden Sie Certbot, um ein SSL-Zertifikat für Ihre Domain zu erhalten und es automatisch in Apache zu installieren

sudo certbot

Befolgen Sie die Anweisungen.
Certbot wird die Apache-Konfiguration automatisch anpassen, um SSL zu verwenden.

Automatische Erneuerung

Let’s Encrypt-Zertifikate sind nur 90 Tage gültig. Certbot kann sie jedoch automatisch erneuern.
Stellen Sie sicher, dass Sie einen Cronjob oder systemd-Timer einrichten, um
certbot renew regelmäßig auszuführen.

DocumentRoot

In der Apache2-Konfiguration muss nicht immer ein DocumentRoot angegeben werden, insbesondere wenn die Konfiguration für einen reinen Reverse Proxy gedacht ist und keine statischen Dateien von Apache selbst ausgeliefert werden sollen.

Docker-Container

Wenn Sie eine Subdomain zu einem Webservice in einem Docker-Container verlinken möchten, wird dies in der Regel über einen Reverse Proxy gemacht.
Apache kann als dieser Reverse Proxy agieren.

Ihr Docker-Container sollte so konfiguriert sein, dass er den gewünschten Webservice auf einem bestimmten Port hostet, z.B. Port 8080.

Erstellen oder bearbeiten Sie eine Konfigurationsdatei für Ihre Subdomain, z.B.

/etc/apache2/sites-available/sub.meinedomain.at.conf

<VirtualHost *:80>
ServerName sub.meinedomain.at
   ProxyPreserveHost On
ProxyRequests Off
ProxyPass / http://localhost:8080/
ProxyPassReverse / http://localhost:8080/
</VirtualHost>

Dies setzt voraus, dass der Docker-Container den Webservice auf Port 8080 des Host-Systems bereitstellt. Wenn er auf einem anderen Port läuft, ändern Sie einfach den Port in den ProxyPass– und ProxyPassReverse-Direktiven.

Aktivieren Sie anschließend die Konfigurationsdatei und die benötigten Proxy-Module.

 

sudo a2ensite sub.meinedomain.at
sudo a2enmod proxy proxy_http
sudo systemctl restart apache2

nun nur noch SSL per Certbot einrichten und fertig.