Server-Zertifikate mit StartSSL
Nachtrag 2017
Aus verschiedenen Gründen ist es nicht mehr sinnvoll Start-SSL Zertifikate zu nutzen. Es häufen sich die Meldungen, dass die Zertifikate dieses Ausstellers nicht mehr von allen Browsern akzeptiert werden. Außerdem ist inzwischen mit Letsencrypt ein offenes Projekt verfügbar, das kostenloese SSL-Zertifikate ausstellt. Für Mail-Zertifikate steht Comodo zur Verfügung.
Es ist nicht ganz leicht bei Comodo die neue Seite für Zertifikate zu finden. Am einfachsten geht es über https://www.secorio.com/de/faqs/smime-zertifikate/78-wieviel-kosten-email-zertifikate-fuer-privaten-gebrauch
Für die Absicherung von Internetverbindungen benötigt man Zertifikate. Für die Nutzung im Zusammenhang mit Mail gibt es eine Reihe von Anbietern (siehe http://www.debacher.de/ublog/2009/05/mail-zertifikate/), die kostenlose Zertifikate zum Signieren und Verschlüsseln anbieten. Etwas schwieriger ist die Situation beim Absichern von Webverbindungen per HTTPS. Oftmals greift man daher zu selbsterstellten Zertifikaten, die dann beim Besucher aber zu einer Warnung des Browsers führen (siehe http://linuxbu.ch/pdf6/kapitel06.pdf).
Mir ist bisher nur ein einziger Anbieter bekannt, der kostenlose Zertifikate auch für HTTPS ausstellt, die Zertifikate sind dann jeweils für ein Jahr gültig. Der Anbieter StartCom mit ihrem Angebot StartSSL.
Die Erstellung und Einbindung eines SSL Zertifikates erfolgt in mehreren Schritten.
1. Erstellen eines Accounts
Beim Aufruf von https://www.startssl.com landet man auf einer etwas unübersichtlichen Seite:
Der einfachste Weg zum Zertifikat führt über einen Klick auf Control Panel im Menü-Kasten links oben. Es erscheint die folgende Seite:
Hier wird einigermaßen deutlich, dass man zuerst einen Account anlegen muss. Der Account besteht dann aus einem Zertifikat, dass im Browser vorhanden sein muss. Es ist egal, ob man den Weg über Sign-up oder Express Lane wählt. Die folgende Beschreibung geht von Sign-up aus.
Die bereits vorgegebenen Einträge hat StartSSL über die Zuordnung der IP-Adresse vorgenommen. Die Daten sollten wahrheitsgemäß angegeben werden, vor allem die Mailadresse ist wichtig. Beim Abschicken des Formulares muss man noch einmal bestätigen, dass die Daten wirklich korrekt sind.
Danach landet man in einem recht übersichtlichen Fenster und kommt erst weiter, wenn man die notwendige Bestätigungsmail erhalten hat.
Der authentiction code kommt innerhalb weniger Minuten an die angegebene Mailadresse und kann dann mittels Copy & Paste in das Formular übertragen werden.
Danach muss dann noch ein privater Schlüssel erzeugt werden, mit dem man sich zukünftig bei StartSSL Authentifizieren kann.
Es bietet sich an die höchste Einstellung zu wählen.
Wenn der private Schlüssel erzeugt ist, dann muss er noch im Browser installiert werden.
Die Anleitung auf der letzten Seite beschreibt, wir man den eben erzeugte Schlüssel sichern kann, damit man auch bei einem Wechsel des Browsers noch Zugriff auf StartSSL behält. Ansonsten müsste man nämlich bis zum Ablauf von Schlüssel und Zertifikat warten, bevor man wieder Zugriff auf StartSSL bekommt.
Das so erzeugte und gespeicherte Zertifikat ist auch als S/MIME Zertifikat geeignet und kann in das Mailprogramm importiert werden.
2. Nachweis, dass man auf den Server Zugriff hat
Bevor man nun endgültig ein Zertifikat erstellen kann muss man nachweisen, dass man auf den zugehörigen Rechner Zugriff hat. Das geschieht, indem man eine Mail an eine der Systemadressen in Empfang nehmen kann. Dieser Schritt wird als Validierung bezeichnet.
Im Validations Wizard muss man zuerst auswählen, was man validieren möchte, hier den Domain Namen.
Die Domäne gibt man ohne irgendwelche Subdomains, wie z.B. www an.
Danach kann man dann eine von drei System-Mailadressen aussuchen, auf die man Zugriff hat.
Damit wird wieder eine Mail ausgelöst, in der ein Authentications Code zu finden ist.
Der per Mail übermittelte Code wird eingegeben, danach ist die Domain für 30 Tage validiert.
In dieser Zeit muss man es geschafft haben das Zertifikat für den betreffenden Server zu erstellen.
3. Erzeugen eines Schlüsselpaares
Das zu erzeugende Zertifikat muss mit einem Schlüssel abgesichert werden. Für das Erzeugen diese Schlüssels hat man zwei Möglichkeiten:
- Man lässt sich das Schlüsselpaar von StartSSL erzeugen
- Man benutzt openssl und erzeugt das Schlüsselpaar lokal
Die zweite Möglichkeit ist deutlich sicherer, da der private Schlüssel niemals aus der Hand gegeben werden sollte. Zumindest auf Linux-Rechnern ist das auch kein Problem:
openssl genrsa -out elearn-server.de.key 2048
erzeugt das Schlüsselpaar und
openssl req -new -key elearn-server.de.key -out elearn-server.de.csr
erzeugt daraus einen sogenannten Certificate Signing Request (CSR). Bei der Erstellung dieses CSR werden einige Daten abgefragt, die StartSSL aber bei der Erstellung des Zertifikates ignoriert. Es ist also gleichgültig, was man hier angibt.
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]:Deutschland Locality Name (eg, city) []:Reinbek Organization Name (eg, company) [Internet Widgits Pty Ltd]:Privat Organizational Unit Name (eg, section) []:Keller Common Name (e.g. server FQDN or YOUR name) []:elearn-server.de Email Address []:geheim@elearn-server.de
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:geheim An optional company name []:
Danach gibt es im aktuellen Verzeichnis die folgenden zwei Dateien:
- elearn-server.de.key
- elearn-server.de.csr
Den Inhalt der Datei elearn-server.de.csr benötigt man vollständig zur Eingabe bei StartSSL
-----BEGIN CERTIFICATE REQUEST----- MIIC+zCCAeMCAQAwgZ0xCzAJBgNVBAYTAkRFMRQwEgYDVQQIDAtEZXV0c2NobGFu ZDEQMA4GA1UEBwwHUmVpbmJlazEPMA0GA1UECgwGUHJpdmF0MQ8wDQYDVQQLDAZL ZWxsZXIxGTAXBgNVBAMMEGVsZWFybi1zZXJ2ZXIuZGUxKTAnBgkqhkiG9w0BCQEW Gmhhbm5lbG9yZUBlbGVhcm5tc2VydmVyLmRlMIIBIjANBgkqhkiG9w0BAQEFAAOC AQ8AMIIBCgKCAQEAwwHXgsb/QSFh+quYwvg4tarfLv6XEnTpk6ks/4V4HRxry+3a 7XiRb5WlWdn4LMlEgKeQtVoRLdeWSnXYNmiteWNlr+oc35yL6sf7/K3qPvuwc3HZ /0ro6o1Qo39oOX8mBNLLYus58J1Avj9i1MGTrxXTDt+CTk9yDL++JAW+wG5X4Z5e l6nqbJ/isyIn5HF5nC0VvLCoV3gpaEzB/7rvgzJ41j/vsgeKBY6EgRdktCdYu0VB m+TWDpjnXSmVFX29cc+tve4MrDDNXoE4gFnnYu8DNQdD0pE3yFzKZ2l6Xt9qouiM yZE+o5EmuHnw4jZ/D1PPO0onUpdk+lQkRFzzaQIDAQABoBgwFgYJKoZIhvcNAQkH MQkMB3V3ZTRsb2gwDQYJKoZIhvcNAQEFBQADggEBAKy8xsrvr0P6r3I3UeO+Jl9T 3l2EYoXEyPCPt9T/onsq6uY3FYxJtfi/6UpHIWya3qU+/6B/4A9fjyaaAujqXp/B 4gluHAcsgdEC1InyujfPd4ZMGHBRg4aD2VPIA+RFLEICmRsWm9m0S7yzqffpKx21 o+ApmEnYqAQktULydSI/XeEgAYIf/3fNXIqJ4FJPCLGxaekfo4WrWLEAW7fGc8Ua PLRbj8ifAKeTrR9Mk5SwNmtNz8IehyWfgg+AcUVGW2p1/cg2Rst1P1MVTecaJMwh 1pAYXlrnFqPRPjrovrrMvnOT8G1DCfpMZkmY1ZXw3CqVXwa374gCmb6tMt565gw= -----END CERTIFICATE REQUEST-----
4. Erzeugen des Zertifikates
Nun kann man endlich daran gehen das Zertifikat erzeugen zu lassen. Dazu klickt man auf Zertifikates Wizard bei StartSSL. Im ersten Schritt muss man hier auswählen, dass man ein Webserver-Zertifikat erstellen möchte.
Im nächsten Schritt geht es dann um den Schlüssel.
Wir übergehen die Erzeugung des privaten Schlüssels mit Skip und landen im Eingabefenster für den CSR. Hier kopieren wir den Inhalt der Datei elearn-server.de.csr hinein.
Nach den Klick auf Continue erhält man eine Mitteilung, dass alles korrekt verlaufen ist, die man erneut mit Continue bestätigen muss.
Nun kann man auswählen, für welche der bereits validierten Domains man den Schlüssel erzeugen möchte.
Im folgenden Formular wird nach einer Subdomain gefragt. Hier gibt man in der Regel WWW an, dann ist das Zertifikat sowohl für https://elearn-server.de, als auch für https://www.elearn-server.de gültig.
Nun startet endgültig die Erzeugung des Zertifikates.
Am Ende kann man sich dann das fertige Zertifikat aus dem Fenster heraus kopieren und in der lokalen Datei ssl.crt speichern.
Zusätzlich zu dieser Datei braucht man noch die beiden Dateien sub.class1.server.ca.pem und ca.pem, die auf der Seite verlinkt sind und die man am besten gleich mit herunterlädt.
Man hat jetzt also insgesamt folgende Dateien, die man für den Webserver benötigt:
- ca.pem
- sub.class1.server.ca.pem
- ssl.crt
- elern-server.de.key
5. Konfiguration des Apache Web-Servers
Im letzten Schritt müssen diese Zertifikate noch dem Webserver bekannt gemacht werden.
Auf der entsprechenden Hilfe-Seite von StartSSL finden sich die folgenden Zeilen:
LoadModule ssl_module modules/mod_ssl.so Listen 443 <VirtualHost _default_:443> DocumentRoot /home/httpd/private ErrorLog /usr/local/apache/logs/error_log TransferLog /usr/local/apache/logs/access_log SSLEngine on SSLProtocol all -SSLv2 SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM SSLCertificateFile /usr/local/apache/conf/ssl.crt SSLCertificateKeyFile /usr/local/apache/conf/elearn-server.key SSLCertificateChainFile /usr/local/apache/conf/sub.class1.server.ca.pem SSLCACertificateFile /usr/local/apache/conf/ca.pem SetEnvIf User-Agent ".*MSIE.*" nokeepalive ssl-unclean-shutdown CustomLog /usr/local/apache/logs/ssl_request_log "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b" </VirtualHost>
Hat man für sein Zertifikat eine Passphrase angegeben, so ist das für den Start des Webserver lästig. Man kann sie aber jederzeit wieder entfernen:
mv elearn-server.key elearn-server.key.org openssl rsa -in elearn-server.key.org -out elearn-server.key (bei diesem Schritt wird man natürlich nach der Passphrase gefragt)
Überprüfen kann man das Zertifikat dann mittels
https://www.ssllabs.com/ssltest/analyze.html?d=elearn-server.de