Artikel ist deprecated: Siehe neu Let’s encrypt
———————————————————————
Wenn man seinen eigenen Web-Server betreibt, möchte man meist auch über https (SSL/TLS) gesicherte Verbindungen aufbauen. Es gibt dabei mehrere Varianten, wie man vorgehen kann. Folgendes Tutorial zeigt schön auf, welche es gibt und wann welche Variante Sinn macht:
https://workaround.org/ispmail/wheezy/tlsifying-your-server
Ich habe mich für die dritte Variante „Kostenloses Zertifikat von StartSSL“ entschieden. Das Zertifikat kostet nichts und sollte von den meisten Browsern als vertrauenswürdig anerkannt werden:
- Erstelle key File
openssl genrsa -des3 -out aa.ddd.ch.key 4096
Wenn man keine Passphrase-Abfrage möchte (siehe Passphrase bei Apache Start), kann man -des3 weglassen
openssl genrsa -out aa.ddd.ch.key 4096
- Erstelle ein CSR (certificate signing request) File aus dem erstellen Key File:
openssl req -new -key aa.ddd.ch.key -out aa.ddd.ch.csr
Die gestellten Fragen alle beantworten. Wichtig ist „Common Name“. Hier muss der fully-qualified (z.B aa.ddd.ch) host name eingetragen werden, über welchen der server im Internet verfügbar sein soll.
StartSSL
Das Zertifikat lassen wir bei http://www.startssl.com ausstellen.
- Ein Konto bei StartSSL Konto eröffnen. Wenn das erledigt ist, bekommt man ein persönliches Zertifikat, welches auf dem Browser installiert wird. Darüber lässt sich dann das persönliche Konto bei StartSSL administrieren.
- Wenn man denn nun ein Konto bei StartSSL hat, muss über den „Validation Wizard“ die e-mail Adresse (z.B. postmaster@ddd.ch) sowie die Domäne (z.B. ddd.ch) validiert werden.
- Anschliessend kann über den „Certificates Wizard“ ein „Web Server SSL/TLS certificate“ erstellt werden.
- Wir benutzen unser eigenes CSR-File und überspringen die Möglichkeit eines bei StartSSL zu generieren.
- Wähle nun die domain und füge den Inhalt des oben erstellten CSR Files in die Textbox ein.
- Nun Bestellung abschliessen. Wenn alles gut geht, stellt nun StartSSL ein Zertifikat per Mail aus.
- Das Zertifikat kann dann nach
/etc/ssl/certs/aa.ddd.ch.pem
kopiert werden.
Installation auf Apache
StartSSL beschreibt auch schön, wie man das Zeritifkat unter Apache installiert: http://www.startssl.com/?app=21
Die vorher erstellten Zertifikate auf den Server kopiern und dem Apachen in der Virtual-Host Section eintragen.
Das Zertifikat sub.class1.server.ca.pem kann man von StartSSL unter http://www.startssl.com/certs/sub.class1.server.ca.pem herunterladen.
SSLCertificateFile /etc/ssl/certs/aa.ddd.ch.pem SSLCertificateKeyFile /etc/ssl/private/aa.ddd.ch.key SSLCertificateChainFile /etc/ssl/certs/sub.class1.server.ca.pem
Passphrase bei Apache-Start
Beim Start von Apache wird nun Passphrase abgefragt:
sudo service apache2 restart * Restarting web server apache2 Apache needs to decrypt your SSL Keys for aa.ddd.ch:443 (RSA) Please enter passphrase: [ OK ]
Das erhöht zwar die Sicherheit, ist aber auch etwas mühsam. Es gibt zwei Varianten das zu vereinfachen:
Einsatz von SSLPassPhraseDialog
Mittels Script kann das Passphrase dem Apachen übermittelt werden. Natürlich muss das Passphrase in diesem Moment im Script stehen.
Siehe
- http://httpd.apache.org/docs/current/mod/mod_ssl.html#sslpassphrasedialog
- http://www.linuxquestions.org/questions/linux-server-73/apache-requires-ssl-passphrase-671559/
- https://wiki.apache.org/httpd/RemoveSSLCertPassPhrase
Passphrase entfernen
Passphrase kann nachträglich auch aus dem key entfernt werden:
cd /etc/ssl/private
openssl rsa -in aa.ddd.ch.key -out aa.ddd.ch.key.nopass
rm /etc/ssl/private/aa.ddd.ch.key
mv /etc/ssl/private/aa.ddd.ch.key.nopass /etc/ssl/private/aa.ddd.ch.key
chmod go= /etc/ssl/private/aa.ddd.ch.key