Für verschlüsselte HTTP Verbindungen benötigt man ein Zertifikat. Dieses kann man sich von einer Zertifizierungsstelle (Certificate Authority, CA) ausstellen lassen. Der Haken an der Sache ist das dies Geld kostet (CACert und StartCom mal außen vor gelassen). Eine Alternative hierzu wäre es das Zertifikat selbst zu erstellen. Bei Diensten die man nur für einen kleinen Nutzerkreis z.B. für die Familie hostet, ist es auch vertretbar die Zertifikatswarnung im Browser über sich ergehen zu lassen. Für die Zertifikate wird ein Ordner erstellt und in diesen gewechselt:
mkdir /etc/nginx/ssl cd /etc/nginx/ssl
Nun werden das Zertifikat und der Certificate Signing Request erstellt:
openssl genrsa -out example.key 2048 openssl req -new -key example.key -out example.csr
Bei der Erstellung des Certificate Signing Request müssen einige Daten angegeben werden:
Country Name (2 letter code) [AU]:DE State or Province Name (full name) [Some-State]:Mecklenburg-Vorpommern Locality Name (eg, city) []:Neubrandenburg Organization Name (eg, company) [Internet Widgits Pty Ltd]:Example Inc Organizational Unit Name (eg, section) []:Skunk works Common Name (e.g. server FQDN or YOUR name) []:example.org Email Address []: Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
Nun muss das Zertifikat noch signiert werden, bevor wir es verwenden können:
openssl x509 -req -days 730 -in example.csr -signkey example.key -out example.crt
In diesem Fall ist das Zertifikat 730 Tage, also zwei Jahre gültig. Da die Signierung nun abgeschlossen ist, kann das Zertifikat in Nginx eingebunden werden. Dazu öffnen wir die Datei „/etc/nginx/sites-available/example“, wobei „example“ hier natürlich für die entsprechende Konfigurationsdatei steht. Dort sollte die SSL Konfiguration vorgenommen werden:
server { listen 443 ssl; root /var/www/example/root; index index.html index.htm; server_name .example.org; ssl_certificate /etc/nginx/ssl/example.crt; ssl_certificate_key /etc/nginx/ssl/example.key; }
Nach dem Aktualisieren der Konfiguration mittels:
service nginx restart
ist die verschlüsselte Verbindung für die eingerichtete Seite aktiv und kann genutzt werden.
Weitere Informationen gibt es unter:
http://nginx.org/en/docs/http/configuring_https_servers.html