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 []:webmaster@example.org
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