Einführung / Konfiguration des FirstSpirit-Servers / Konfiguration des HTTPS-Servers / Vertrauenswürdiges Sicherheitszertifikat
Vertrauenswürdiges Sicherheitszertifikat installieren
Damit ein Sicherheitszertifikat als vertrauenswürdig angesehen wird, muss es von einer offiziellen Zertifizierungsstelle (CA), z. B. http://thawte.com, digital unterschrieben (signiert) werden. Um ein solches Sicherheitszertifikat zu erstellen, sind für FirstSpirit 2 Verfahren möglich: entweder über openssl (siehe http://www.openssl.org/) oder über das bei Java mitgelieferte keytool. Über openssl erstellte Zertifikate haben den Vorteil, von beliebigen anderen Webservern wie Apache, IIS, Tomcat und anderen verwendet werden zu können. Ein über keytool erstelltes Zertifikat kann ausschließlich für Java-basierte Webserver verwendet werden.
Erstellen eines Sicherheitszertifikats über keytool
Zunächst wird ein privater Schlüssel erstellt. Dazu ist folgender Befehl einzugeben, nachdem in das Installationsverzeichnis des FirstSpirit-Servers gewechselt wurde:
keytool -genkey -keystore conf/fs-keystore.jks -storepass mypass
-alias fs5.yourdomain.net -keyalg RSA -keysize 2048 -validity 3650
Mit „keysize“ wird die Schlüssellänge und mit „validity“ die Gültigkeit in Tagen angegeben. Bei der Abfrage nach dem Key-Password sollte das gleiche wie bei „–storepass“ angegeben werden. Bei der Abfrage nach „Vor- und Nachname“ bzw. "first and last name" muß der vollqualifizierte Hostname angegeben werden, wie er vom Client aus sichtbar ist, z. B. fs5.yourdomain.net.
Im nächsten Schritt muss eine Zertifizierungsanforderung erzeugt werden:
keytool -certreq -keystore conf/fs-keystore.jks -storepass
changeit -alias fs5.yourdomain.net -file request.csr
Die Datei „request.csr“ wird anschließend der Zertifizierungsstelle zugesendet. Das erhaltene Antwortzertifikat (public.pem) muss in den Zertifikatsspeicher importiert werden:
keytool -import -trustcacerts -keystore conf/fs-keystore.jks
-storepass changeit -alias fs5.yourdomain.net -file public.pem
Falls die Zertifizierungsstelle Zertifikate über eine Hierarchie herausgibt (certificate chain), müssen alle Zertifikate der Hierarchie entweder schon im Zertifikatsspeicher der Java-VM vorliegen oder in den Zertifikatsspeicher importiert werden, ansonsten wird von keytool die Fehlermeldung „Failed to establish chain from reply“ ausgegeben. Zum Importieren der Zertifikate der Hierarchie muss der Befehl für jede Datei aufgerufen und dabei bei „-alias“ z. B. immer der Dateiname angeben werden:
keytool -import -trustcacerts -keystore conf/fs-keystore.jks
-storepass changeit -alias chain_CA_1 Zertifikat1 -file chain_CA_1.pem
In einigen Fällen kann es vorkommen, dass die Zertifizierungsstellen Zertifikate versenden, die vom keytool nicht verstanden werden. Diese Zertifikate können mit OpenSSL umgewandelt werden, z. B.:
openssl x509 -in public.crt -out public.pem -outform PEM
Erstellen eines Sicherheitszertifikats über openssl
Zunächst den privaten Schlüssel erstellen:
openssl genrsa -out private.key 2048
Nun wird eine Zertifizierungsanforderung erstellt (request.csr), die anschließend an die Zertifizierungsstelle (CA) zum Signieren übergeben wird:
openssl req -new -key private.key -out request.csr
Die Zertifizierungsstelle liefert nun den öffentlichen signierten Schlüssel („Zertifikat“) zurück, meistens im PEM-Format als Textdatei (public.pem), die mit „-----BEGIN CERTIFICATE-----“ beginnt. Privater und signierter öffentlicher Schlüssel müssen nun in einem Zertifikatsspeicher im PKCS12-Format für den FirstSpirit-Webserver zusammengefaßt werden. Dazu zunächst in das Installationsverzeichnis des FirstSpirit-Servers wechseln und nachfolgendes Kommando zum Erstellen des Zertifikatsspeichers eingeben. Dabei wird nach einem zu wählenden Passwort für den Zertifikatsspeicher gefragt. Dieses Passwort wird gleich in die Webserver-Konfiguration eingetragen. Im Beispiel ist dort „changeit“ gewählt.
openssl pkcs12 -inkey private.key -in public.pem -export -out
conf/fs-keystore.p12 -caname root