StartSSL: Gratis-Zertifikat erstellen

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