Echtes SSL für lokale Webserver
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.
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.
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.