Echtes SSL für lokale Webserver

Beitrag vom 22.12.2015

Für sensible Sachen wie meine KeePass Datenbank habe ich mir lokal einen Seafile Service auf meinen Homeserver gepackt. Seafile ist sowas ähnliches wie Owncloud, nur dass Seafile auch wirklich funktioniert.

Auch hier wollte ich ein SSL Zertifikat nutzen, welches am besten in allen Clients akzeptiert wird.

Domain?

Natürlich kann man nicht einfach für einen lokalen Hostnamen ein SSL Zertifikat beantragen. Ich habe mir einfach eine von meinen Domains geschnappt und einen entsprechenden A Record auf die lokale IP des Webservers gesetzt.

Lokale IP im DNS

Zertifikat?

Nun muss noch ein Anbieter gefunden werden, der hier mitspielt. Lets Encrypt fällt hier erstmal weg, da die Validation über eine Textdatei läuft, welche in den Document Root gelegt werden muss. Die Lets Encrypt API Server rufen diese dann ab.

Da der Server natürlich nicht aus dem Internet erreichbar ist, funktioniert das nicht.

Das gute, alte StartSSL funktioniert aber. Man muss für die Validation per Email nur einen entsprechenden MX Record und ein Postfach für die Adresse webmaster@example.com angelegt haben.

StartSSL stellt ohne Murren ein Zertifikat aus. Die A bzw CNAME Records werden nicht weiter geprüft.

Lokale IP im DNS

NGINX?

Einrichtung im NGINX wie gehabt:

server {
   listen 80;
   server_name velmastaplebot.brickburg.de;

   listen 443;
   ssl on;
   ssl_certificate /etc/nginx/ssl/velmastaplebot-crt.pem;
   ssl_certificate_key /etc/nginx/ssl/velmastaplebot-key.pem;
   add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";

   proxy_set_header X-Forwarded-For $remote_addr;

   location / {
      # do things...
   }
}

Thats it.

Hallo Internet

Mein Name ist Christian, vom Beruf bin ich Anwendungsentwickler.

In meiner Freizeit beschäftige ich mich mit verschiedensten Technologien. Hier sammele ich Dinge, die für mich interessant waren oder sind.