Server-Zertifikate mit StartSSL

Aus Debacher-Wiki
Wechseln zu: Navigation, Suche

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:

Startssl1.png

Der einfachste Weg zum Zertifikat führt über einen Klick auf Control Panel im Menü-Kasten links oben. Es erscheint die folgende Seite:

Startssl2.png

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.

Startssl3.png

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.

Startssl4.png

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.

Startssl5.png

Es bietet sich an die höchste Einstellung zu wählen.

Startssl6.png

Wenn der private Schlüssel erzeugt ist, dann muss er noch im Browser installiert werden.

Startssl7.png

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.

Startssl8.png

Im Validations Wizard muss man zuerst auswählen, was man validieren möchte, hier den Domain Namen.

Startssl9.png

Die Domäne gibt man ohne irgendwelche Subdomains, wie z.B. www an.

Startssl10.png

Danach kann man dann eine von drei System-Mailadressen aussuchen, auf die man Zugriff hat.

Startssl11.png

Damit wird wieder eine Mail ausgelöst, in der ein Authentications Code zu finden ist.

Startssl12.png

Der per Mail übermittelte Code wird eingegeben, danach ist die Domain für 30 Tage validiert.

Startssl13.png

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:

  1. Man lässt sich das Schlüsselpaar von StartSSL erzeugen
  2. 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.

Startssl14.png

Im nächsten Schritt geht es dann um den Schlüssel.

Startssl15.png

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.

Startssl16.png

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.

Startssl17.png

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.

Startssl18.png

Nun startet endgültig die Erzeugung des Zertifikates.

Startssl20.png

Am Ende kann man sich dann das fertige Zertifikat aus dem Fenster heraus kopieren und in der lokalen Datei ssl.crt speichern.

Startssl21.png

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