Zertifikat erstellen
Zuerst erstellen wir das Verzeichnis wo unser Zertifikat für die Domain mail.mindfab.net liegen soll.root@xx: cd /etc/nginxNun erstellen wir uns als erstes einen private Key.
root@xx: mkdir -p ssl/ssl.mindfab.net
root@xx: cd ssl/ssl.mindfab.net
root@xx:/etc/nginx/ssl/ssl.mindfab.net# openssl genrsa -des3 -out ssl.mindfab.net.key 2048
Generating RSA private key, 2048 bit long modulus
.................................+++
..........+++
e is 65537 (0x10001)
Enter pass phrase for ssl.mindfab.net.key:
Verifying - Enter pass phrase for ssl.mindfab.net.key:
Als nächstes erzeugen wir ein CSR (Certificate Signing Request). Hierbei ist es wichtig das der später zu verwendende Domain Name (https://ssl.mindfab.net) unter Common Name eingetragen wird.
root@xx# openssl req -new -key ssl.mindfab.net.key -out ssl.mindfab.net.csrAls nächstes soll das Passwort von dem Private Key entfernt werden damit nginx ohne Passwort Eingabe automatisiert starten kann.
Enter pass phrase for ssl.mindfab.net.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Saxony
Locality Name (eg, city) []:Dresden
Organization Name (eg, company) [Internet Widgits Pty Ltd]:MINDFAB.NET
Organizational Unit Name (eg, section) []:IT
Common Name (e.g. server FQDN or YOUR name) []:ssl.mindfab.net
Email Address []:admin@mindfab.net
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
root@xx# cp ssl.mindfab.net.key ssl.mindfab.net.key.bakNun sollten wir folgende Dateien in unserem Verzeichnis haben.
root@xx# openssl rsa -in ssl.mindfab.net.key.bak -out ssl.mindfab.net.key
Enter pass phrase for ssl.mindfab.net.key.bak:
writing RSA key
root@xx# ls -lSchliesslich müssen wir das Zertifikat noch selbst signieren...
-rw-r--r-- 1 root root 1062 Aug 10 17:05 ssl.mindfab.net.csr
-rw-r--r-- 1 root root 1679 Aug 10 17:11 ssl.mindfab.net.key
-rw-r--r-- 1 root root 1751 Aug 10 17:10 ssl.mindfab.net.key.bak
openssl x509 -req -days 365 -in ssl.mindfab.net.csr -signkey ssl.mindfab.net.key -out ssl.mindfab.net.crt
Signature okJetzt müssen wir noch nginx so konfigurieren das er unser Zertifikat verwendet. Wir passen daher unsere nginx Konfiguration entsprechend an.
subject=/C=DE/ST=Saxony/L=Dresden/O=MINDFAB.NET/OU=IT/CN=ssl.mindfab.net/emailAddress=admin@mindfab.net
Getting Private key
vim /etc/nginx/conf.d/default.confNun starten wir den nginx Daemon neu und testen unsere Konfiguration.
## 192.168.100.12 -> ssl.mindfab.net ##
upstream sslmindfabnet {
server 192.168.100.12:80;
}
## Start https://ssl.mindfab.net ##
server {
listen 443;
ssl on;
server_name ssl.mindfab.net;
# SSL cert files #
ssl_certificate /etc/nginx/ssl/ssl.mindfab.net/ssl.mindfab.net.crt;
ssl_certificate_key /etc/nginx/ssl/ssl.mindfab.net/ssl.mindfab.net.key;
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers RC4:HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
keepalive_timeout 60;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
access_log /var/log/nginx/ssl-ssl.mindfab.net.access.log;
error_log /var/log/nginx/ssl-ssl.mindfab.net.error.log;
## send request back to ssl.mindfab.net ##
location / {
proxy_pass http://sslmindfabnet;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Accept-Encoding "";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Front-End-Https on;
}
}
## End ssl.mindfab.net ##
service nginx reload
openssl s_client -connect ssl.mindfab.net:443
Referenzen
- http://www.cyberciti.biz/faq/howto-linux-unix-setup-nginx-ssl-proxy/
Keine Kommentare:
Kommentar veröffentlichen