Unterabschnitte

Das Certs-Paket

Die Einleitung

Dieses Paket stellt Funktionen zur Verfügung um TLS-Zertifikate erstellen und verwalten zu können.

Die Funktionen

Das Certs-Paket beinhaltet keine weiteren externen Komponenten.

Die Voraussetzungen

Ein lauffähiger eisfair-Server ;-)

Die Installation

Das Certs-Paket wird über das Setup-Menü installiert. Wird eine ältere Paketversion vorgefunden, so wird diese deinstalliert bevor die neuen Programmdateien installiert werden.

Das Menü im Setup-Programm

Das Menü im Setup-Programm ist wie folgt aufgebaut:

Die Menüpunkte dürften selbsterklärend sein, da sie keinerlei weitere Eingaben erwarten. Aus diesem Grund wird auf deren Funktion nicht weiter eingegangen.

Die Änderung der Konfiguration

Die Konfiguration kann über den Menüpunkt 'Edit configuration' geändert werden. Standardmäßig wird der Editor aufgerufen, der in der Environment- Konfiguration über die Variable 'EDITOR' festgelegt wurde. Nachdem der Editor beendet wurde wird abgefragt, ob die Konfiguration aktiviert werden soll. Wird dies bestätigt, werden über ein Skript die Anpassungen umgehend wirksam gemacht.

Die Konfigurationsdatei

In der Konfigurationsdatei, die über das Menü zugänglich ist, sind folgende Parameter vorhanden; wer sie von Hand editieren will findet sie unter /etc/config.d/certs.

Die Parameter

START_CERTS

Für die Aktivierung des Certs-Programms muss dieser Parameter lediglich auf den Wert 'yes' gestellt werden. Die Einstellung 'no' deaktiviert das Certs-Programm.

Gültige Werte: yes, no

Standardeinstellung: START_CERTS='no'

CERTS_CA_HOME

In einem Netzwerk wählt man üblicherweise einen EINZIGEN Server aus, welcher als Zertifizierungstelle (Certificate Authority (CA)) fungieren soll, um alle benötigten, selbst signierten, Zertifikate zur Verfügung zu stellen. Durch Setzen des Wertes 'yes' wird dieser Server identifiziert und alle CA-spezifischen Funktionen aktiviert, der Wert 'no' sperrt diese.

Gültige Werte: yes, no

Standardeinstellung: CERTS_CA_HOME='no'

CERTS_HASH_ALGORITHM

Über diesen Parameter kann der standardmäßig zu verwendende Hash Algorithmus konfiguriert werden, welcher für das Signieren von Zertifikatsanforderungen verwendet werden soll. In der Vergangenheit wurde von OpenSSL standardmäßig `sha1' verwendet, welcher aber seit fast 10 Jahren als kompromittiert angesehen werden kann. Aus diesem Grund wird nun standardmäßig `sha384' verwendet. Aus Gründen der Kompatibilität zu älterer Software oder Geräten ist aber weiterhin die Auswahl von weniger sicheren Hashes möglich.

ACHTUNG
Es muss sicher gestellt werden, dass das Gerät auf welchem das Zertifikat verwendet werden soll, auch in der Lage ist den verwendeten Hash Algorithmus zu verwenden!


Gültige Werte: sha1, sha224, sha256, (sha384), sha512

Standardeinstellung: CERTS_HASH_ALGORITHM='sha384'

CERTS_RSA_KEYBITS

Über diesen Parameter kann die standardmäßig zu verwendende Größe des RSA-Schlüssels konfiguriert werden. Heutzutage wird ein Wert von 2048 Bit als sicher eingestuft. Aus Gründen der Kompatibilität zu älterer Software oder Geräten ist aber weiterhin die Auswahl von weniger Schlüssellängen möglich.

Gültige Werte: 1024, (2048), 4096, 8192

Standardeinstellung: CERTS_RSA_KEYBITS='2048'

CERTS_UNIQUE_SUBJECT (optionaler Parameter)

Optionaler Parameter: Über diesen Parameter kann festgelegt werden, ob der Betreff (Subject) eines Zertifikats eindeutig sein muss oder nicht. Die Einstellung 'no' erlaubt es, dass mehrere Zertifikate den gleichen Betreff haben dürfen. Dies erleichtert unter Umständen den Übergang von einem kurz vor dem Ablauf stehenden Zertifikat zum Folgezertifikat. Aus Gründen der Kompatibilität zu älteren OpenSSL-Versionen ist dieser Parameter standardmäßig auf 'yes' gesetzt.

Gültige Werte: yes, no

Standardeinstellung: CERTS_UNIQUE_SUBJECT='yes'

CERTS_WEBSERVER_NAME (optionaler Parameter)

Optionaler Parameter: Über diesen Parameter kann der standardmäßig verwendete Apache Webservername konfiguriert werden. Es muss ein vollständiger Domainname (FQDN) angegeben werden, z.B. Hostname und Domainname. Wird dieser Parameter nicht gesetzt, so wird der über den Parameter APACHE2_SERVER_NAME Name verwendet.

Gültige Werte: vollständiger Domainname

Standardeinstellung: CERTS_WEBSERVER_NAME=

CERTS_CA_BUNDLE_URL (optionaler Parameter)

Optionaler Parameter: Über diesen Parameter kann der Name der CA-Bundle-Datei oder die vollständige URL zur CA-Bundle-Datei festgelegt werden, welche bei Verwendung des Menüpunktes 'Download ca certificate bundle' herunter geladen werden soll. Wird nur der Name der CA-Bundle-Datei angegeben, so wird standardmäßig folgende URL vorangestellt:
http://anduin.linuxfromscratch.org/files/BLFS/

Gültige Werte: Dateiname oder URL

Standardeinstellung: CERTS_CA_BUNDLE_URL=

Die folgenden sieben Parameter (CERTS_CA_..) werden nur verwendet, wenn dieser Server als Zertifizierungstelle (Certificate Authority (CA)) fungiert, d.h. der Parameter CERTS_CA_HOME='yes' gesetzt wurde.

CERTS_CA_CCODE

Über diesen Parameter kann man den bei der Erstellung eines CA-Zertifikats standardmäßig zu verwendenden, zweistelligen Länderkode festlegen.

Gültige Werte: zweistelliger Länderkode

Standardeinstellung: CERTS_CA_CCODE='DE'

CERTS_CA_STATE

Über diesen Parameter kann man den bei der Erstellung eines CA-Zertifikats standardmäßig zu verwendenden Namen des States oder der Provinz festlegen.

Gültige Werte: Name des States oder der Provinz

Standardeinstellung: CERTS_CA_STATE='Nordrhein Westfalen'

CERTS_CA_LOCALITY

Über diesen Parameter kann man den bei der Erstellung eines CA-Zertifikats standardmäßig zu verwendenden Ortsnamen festlegen.

Gültige Werte: Ortsname

Standardeinstellung: CERTS_CA_LOCALITY='Koeln'

CERTS_CA_ORGA_NAME

Über diesen Parameter kann man den bei der Erstellung eines CA-Zertifikats standardmäßig zu verwendenden Namen einer Organisation festlegen.

Gültige Werte: Name der Organisation

Standardeinstellung: CERTS_CA_ORGA_NAME='eisfair CA'

CERTS_CA_ORGA_UNIT

Über diesen Parameter kann man den bei der Erstellung eines CA-Zertifikats standardmäßig zu verwendenden Namen einer Organisationseinheit festlegen.

Gültige Werte: Name der Organisationseinheit

Standardeinstellung: CERTS_CA_ORGA_UNIT='My eisfair Certificate Authority'

CERTS_CA_ADMIN_NAME

Über diesen Parameter kann man den bei der Erstellung eines CA-Zertifikats standardmäßig zu verwendenden Namen des für die CA verantwortlichen Administrators festlegen.

Gültige Werte: Administratorname

Standardeinstellung: CERTS_CA_ADMIN_NAME='eisfair Administrator'

CERTS_CA_ADMIN_EMAIL

Über diesen Parameter kann man den bei der Erstellung eines CA-Zertifikats standardmäßig zu verwendende E-Mail-Adresse des für die CA verantwortlichen Administrators festlegen.

Gültige Werte: E-Mail-Adresse des Administrators

Standardeinstellung: CERTS_CA_ADMIN_EMAIL=

Die folgenden sechs Parameter (CERTS_CERT_..) werden bei der Erstellung von Zertifikatsanfragen heran gezogen.

CERTS_CERT_CCODE

Über diesen Parameter kann man den bei der Erstellung eines Zertifikats standardmäßig zu verwendenden, zweistelligen Länderkode festlegen.

Gültige Werte: zweistelliger Länderkode

Standardeinstellung: CERTS_CERT_CCODE='DE'

CERTS_CERT_STATE

Über diesen Parameter kann man den bei der Erstellung eines Zertifikats standardmäßig zu verwendenden Namen des States oder der Provinz festlegen.

Gültige Werte: Name des States oder der Provinz

Standardeinstellung: CERTS_CERT_STATE='Nordrhein Westfalen'

CERTS_CERT_LOCALITY

Über diesen Parameter kann man den bei der Erstellung eines Zertifikats standardmäßig zu verwendenden Ortsnamen festlegen.

Gültige Werte: Ortsname

Standardeinstellung: CERTS_CERT_LOCALITY='Koeln'

CERTS_CERT_ORGA_NAME

Über diesen Parameter kann man den bei der Erstellung eines Zertifikats standardmäßig zu verwendenden Namen einer Organisationseinheit festlegen.

Gültige Werte: Name der Organisationseinheit

Standardeinstellung: CERTS_CERT_ORGA_NAME='private'

CERTS_CERT_ORGA_UNIT

Über diesen Parameter kann man den bei der Erstellung eines Zertifikats standardmäßig zu verwendenden Namen einer Organisationseinheit festlegen.

Gültige Werte: Name der Organisationseinheit

Standardeinstellung: CERTS_CERT_ORGA_UNIT='eisfair'

CERTS_CERT_REQ_NAME

Über diesen Parameter kann man den Namen der Person eintragen, die standardmäßig als Zertifikatsanforderer agiert.

Gültige Werte: Names des Zertifikatsanforderers

Standardeinstellung: CERTS_CERT_REQ_NAME='cert Requestor'

CERTS_CERT_REQ_EMAIL

Über diesen Parameter kann man den bei der Erstellung eines Zertifikats standardmäßig zu verwendende E-Mail-Adresse des Erstellers einer Zertifikatsanfrage festlegen.

Gültige Werte: E-Mail-Adresse des Erstellers einer Zertifikatsanfrage

Standardeinstellung: CERTS_CERT_REQ_EMAIL=

CERTS_CRL_CRON

Wird dieser Parameter auf 'yes' gestellt, so werden automatisiert die Zertifikatswiderrufslisten (Certificate Revocation Lists (CRLs)) heruntergeladen, die Einstellung 'no' deaktiviert diese Funktion. Dabei findet eine automatische Aktualisierung zu dem in den CRL-Dateien angegebenen Aktualisierungszeitpunkt statt.
Über den Parameter CERTS_CRL_CRON_SCHEDULE wird dabei der Zeitintervall vorgegeben, in welchem eine Prüfung der erzeugten Aktualisierungsaufgaben durchgeführt wird.

Hinweis
Da diese Funktion exzessiven Gebrauch des at-Programms macht, ist es notwendig, dass in der base-Konfiguration der Parameter START_ATD='yes' gesetzt ist.


Gültige Werte: yes, no

Standardeinstellung: CERTS_CRL_CRON='yes'

CERTS_CRL_CRON_SCHEDULE

Über diesen Parameter wird festgelegt zu welchem Zeitpunkt bzw. in welchem Intervall eine automatisierte Prüfung der erzeugten CRL-Aktualisierungsaufgaben erfolgen soll. Da die CRL-Dateien selbst zu dem in den Dateien angegebenen Aktualisierungszeitpunkt herunter geladen werden, sollte diese Prüfung nicht häufiger als einmal pro Woche erfolgen. Dieser Parameter wird nur verwendet, wenn CERTS_CRL_CRON='yes' gesetzt wurde. Die fünf Teilparameter haben dabei folgende Bedeutung:

1 - Minuten, 2 - Stunden, 3 - Tag des Monats, 4 - Monat, 5 - Wochentag.

D.h. bei Verwendung der Standardeinstellung wird jeden Montag um 02:11h eine Aktualisierung durchgeführt. Wer Näheres über die verwendete Befehlssyntax erfahren möchte, sollte über eine Internet-Suchmaschine nach 'man' und 'crontab' suchen.

Gültige Werte: Crontab-spezifischer Parametereintrag

Standardeinstellung: CERTS_CRL_CRON_SCHEDULE='11 2 * * 1'

CERTS_LOG_COUNT

Über diesen Parameter wird eingestellt, wie viele Logdateien vorgehalten werden sollen. Wird dieser Wert überschritten, so wird die älteste Logdatei gelöscht.

Gültige Werte: Zahl

Standardeinstellung: CERTS_LOG_COUNT='6'

CERTS_LOG_INTERVAL

Dieser Parameter bestimmt in welchen Intervallen die Logdateien archiviert werden sollen. Zur Auswahl stehen die Schlüsselwörter `daily' - täglich, `weekly' - wöchentlich und `monthly - monatlich.

Gültige Werte: daily, weekly, monthly

Standardeinstellung: CERTS_LOG_INTERVAL='weekly'

Die Zertifikate

Allgemeine Anmerkungen zum Zertifikatsmenü

Das Menü zur Zertifikatsgenerierung fasst alle notwendigen Schritte zur Erstellung einer eigenen Zertifizierungsstelle (CA), einer Instanz zum Ausstellen und Signieren eigener Zertifikate, und dem Generierung eigener Server- oder Anwenderzertifikate zusammen.

Serverzertifikate werden, wie der Name vermuten lässt, zur eindeutigen Identifikation von Servern, die z.B. Web- oder E-Mail-Services anbieten, verwendet.
Anwenderzertifikate hingegen, dienen der eindeutigen Identifikation von Anwendern, um z.B. E-Mail zu signieren oder sich an einem Server anzumelden.

Beginnt ein Menüeintrag mit einem '==', so steht er für die gewählte Funktion nicht zur Verfügung. Wird ein Menüeintrag mit einem '>' markiert, so kennzeichnet dies üblicherweise den nächsten, auszuführenden Prozessschritt. Ein mit einem 'ઙ' markierter Menüpunkt hingegen kennzeichnet einen bereits abgeschlossenen Prozessschritt.

Erstellen einer eigenen Zertifizierungsstelle (CA)

Die Einleitung (CA)

Um eigene, selbst signierte Zertifikate erstellen und verwenden zu können, müssen als erstes ein Schlüssel und ein Zertifikat erstellt werden, welche zur Identifikation der eigenen Zertifizierungsstelle (CA) dienen. Das erstellte Zertifikat wird anschließend verwendet, um jedes weitere Server- bzw. Anwenderzertifikat zu signieren, d.h. zu bestätigen, dass es sich hierbei um ein gültiges Zertifikat im eigenen Netzwerk handelt. Diese Zertifikat dient NIEMALS selbst zur Identifikation eines Servers!

Um es später einem Webbrowser oder anderer Software, die eine verschlüsselte Verbindung zum eisfair-Server aufbauen möchte, zu ermöglichen, die erstellten Zertifikate prüfen zu können, ist es darüber hinaus erforderlich dieses CA-Zertifikat in die Zertifikatsspeicher der Geräte oder Programme zu importieren.

Ein CA-Zertifikat ist üblicherweise 10 Jahre lang gültig und kann während dieser Zeit verwendet werden um andere Zertifikate zu unterzeichnen. Das bei der Erstellung des CA-Schlüssels vergebene Kennwort ist an einem sicheren Ort aufzuheben, da es nur nach Eingabe dieses Kennwortes möglich ist ein anderes Zertifikat zu unterzeichnen.

Um ein CA-Zertifikat zu erstellen, sind die folgenden Schritte auszuführen. Wird einer dieser Schritte nicht erfolgreich abgeschlossen, so führt dies zwangsläufig zu einem Folgefehler bei den nachfolgenden Schritten.

1. Erstellen einer einmaligen Schlüsseldatei (KEY).
2. Erstellen und Signieren des eigenen CA-Zertifikats (CRT).
3. Kopieren der Zertifikatsdatei in den Zertifikatsordner.

Folgende Informationen gilt es vorab zusammen zu tragen, da diese im Laufe der CA-Zertifikatserstellung abgefragt werden:

1. Welches Kennwort soll zur Verschlüsselung des CA-Schlüssels verwendet werden? Dieses Kennwort wird benötigt, um eine Zertifikatsanfrage zu unterzeichnen und muss unbedingt geheim gehalten werden, da sonst Dritte in der Lage wären Zertifikate mit diesem CA-Zertifikat zu unterzeichnen!

2. Das Land, das Bundesland und der Ort in welchem die Zertifizierungstelle betrieben wird.
Beispiel: DE (Deutschland), Nordrhein Westfalen, Koeln

3. Die Organisation bzw. Organisationseinheit welche sich für die Zertifizierungsstelle verantwortlich zeichnet.
Beispiel: eisfair CA, My eisfair Certificate Authority

4. Der Name des Administrators der Zertifizierungsstelle (Dein Name?)
Beispiel: Tom Johnes

5. Optional die E-Mail-Adresse des Administrator, der kontaktiert werden soll wenn es Fragen zum CA-Zertifikat oder einem von dieser Zertifizierungsstelle unterzeichnetem Zertifikat gibt.
Beispiel: admin@local.lan

Die Zertifikatserstellung (CA)

1. Über setup ⇒ Service Administration ⇒ Certs service ⇒ Manage certificates startet man das Programm zur Zertifikatserstellung:

Abbildung: Zertifikatsmenü
Image certs-ca-01-1

2. Über den Menüpunkt '1' wählt man durch Auswahl von '1' die Funktion 'Certificate Authority (CA)' aus.

Abbildung: CA-Funktionsauswahl
Image certs-ca-01-2

3. Anschließend erstellt man über den Menüpunkt '3' einen neuen CA-Schlüssel mit der in der Überschrift des Menüabsatzes angezeigten Stärke von 2048 Bit (Durch Drücken von 'b' kann diese Einstellung bei Bedarf zuvor angepasst werde) und vergibt das in der Einleitung angesprochene Kennwort welches zukünftig beim Signieren von erstellten Zertifikaten eingegeben werden muss.

Abbildung: CA-Schlüssel erstellen - 1
Image certs-ca-03-1
Abbildung: CA-Schlüssel erstellen - 2
Image certs-ca-03-2

4. Nun wählt man den Menüpunkt '4' um das selbst signierte CA-Zertifikat zu erstellen. Alle für das Zertifikat entscheidenden Informationen, welche man anfangs zusammen getragen hat, werden nun eingegeben. Folgende Besonderheiten gilt es zu beachten:
- Die in eckigen Klammern angezeigten Standardwerte können durch Drücken der Enter-Taste übernommen werden.
- Optionaler Werte, wie z.B. die E-Mail-Adresse, können durch Eingabe von '.' übersprungen werden.
Abbildung: CA-Zertifikat erstellen - 1
Image certs-ca-04-1
Abbildung: CA-Zertifikat erstellen - 2
Image certs-ca-04-2

5. Über den Menüpunkt '5', wird im Anschluss das erzeugte CA-Zertifikat in das korrekte Serververzeichnis kopieren.

Abbildung: CA-Zertifikat kopieren - 1
Image certs-ca-05-1
Abbildung: CA-Zertifikat kopieren - 2
Image certs-ca-05-2

6. Damit ein Webbrowser bzw. Klientenrechner die von dieser Zertifizierungsstelle erzeugten Zertifikatsdateien überprüfen kann, sendet man sich das CA-Zertifikat bei Bedarf über die E-Mail-Funktion, welche im Hauptmenü durch Drücken von 'e' aufgerufen wird, zu und kopiert es anschließend auf den gewünschten Klientenrechner.
Beim Import des CA-Zertifikats in den Zertifikatsspeicher des gewünschten Webbrowsers gilt es final noch die angezeigten Verwendungszwecke zu bestätigen.

Abbildung: CA-Zertifikat versenden - 1
Image certs-ca-06-1
Abbildung: CA-Zertifikat versenden - 2
Image certs-ca-06-2

Erstellen eines Serverzertifikates (CERT)

Die Einleitung (CERT)

Wie zuvor bereits geschrieben, identifiziert ein Serverzertifikat einen einzelnen Server, jedoch nicht die einzelnen Services, wie z.B. einen Web- oder E-Mail-Services, auf einem Server. Deshalb reicht es üblicherweise aus ein einziges Zertifikat auszustellen, auf welches dann entsprechend den Anforderungen referenziert wird.

Um ein Zertifikat zu erstellen, ist eine immer gleiche Abfolge von Schritten auszuführen. Wird einer dieser Schritte nicht erfolgreich abgeschlossen, so führt dies zwangsläufig zu einem Folgefehler bei den nachfolgenden Schritten.

Die auszuführenden Schritte lauten wie folgt:

1. Erstellen einer einmaligen Schlüsseldatei (KEY).
2. Erstellen einer Zertifikatsanforderung (CSR).
3. Signieren der Zertifikatsanforderung mit dem CA-Zertifikat (CRT).
4. Erstellen der Diffie-Hellman Parameter.
5. Erstellen einer vollständigen Zertifikatsdatei und das Kopieren der Datei in den Zertifikatsordner.

Am Beispiel der Zertifikatserstellung für einen eisfair-Server, auf dem ein Web- und E-Mail-Server installiert sind, sollen die notwendigen Schritte nun veranschaulicht werden.

Folgende Informationen gilt es vorab zusammen zu tragen, da diese bei der Zertifikatserstellung abgefragt werden:

1. Wie lautet das ursprünglich festgelegte Kennwort des CA-Zertifikates? Diese wird benötigt, um eine Zertifikatsanfrage zu unterzeichnen und muss unbedingt geheim gehalten werden, da sonst Dritte in der Lage wären eigene Zertifikate mit diesem CA-Zertifikat zu unterzeichnen!

2. Das Land, das Bundesland und der Ort in welchem der Server betrieben wird.
Beispiel: DE (Deutschland), Nordrhein Westfalen, Koeln

3. Die Organisation bzw. Organisationseinheit welche sich für den eisfair-Server verantwortlich zeichnet.
Beispiel: privat, eisfair-Server

4. Der DNS-Name bzw. die DNS-Namen über welche auf den eisfair-Server zugegriffen werden soll. Dies ist üblicherweise der Name den ich z.B. in die Adresszeile des Webbrowsers eingebe. Beispiel: mein-eisfair.local.lan

5. Optional die E-Mail-Adresse des Administrator, der kontaktiert werden soll wenn es Fragen zum Zertifikat zu klären gilt. Beispiel: postmaster@local.lan

Die Zertifikatserstellung (CERT)

1. Über setup ⇒ Service Administration ⇒ Certs service ⇒ Manage certificates startet man das Programm zur Zertifikatserstellung:

Abbildung: Zertifikatsmenü
Image certs-cert-02-1

2. Über den Menüpunkt '2' wählt man durch Drücken von 'n' aus, dass ein neues Zertifikat erstellt werden soll und gibt anschließend den primären DNS-Namen als Zertifikatsnamen ein. Dies hat den Vorteil, dass man das Zertifikat später jederzeit dem richtigen Server zuordnen kann.

Abbildung: Zertifikatsnamen setzen
Image certs-cert-02-1

3. Nun erstellt man über den Menüpunkt '10' und durch Drücken von 'n', einen neuen Schlüssel mit der in der Überschrift des Menüabsatzes angezeigten Stärke von 2048 Bit (Durch Drücken von 'b' kann diese Einstellung bei Bedarf zuvor angepasst werde). Der standardmäßig verwendete Dateiname sollte möglichst beibehalten werden.

Abbildung: Schlüssel erstellen - 1
Image certs-cert-10-1
Abbildung: Schlüssel erstellen - 2
Image certs-cert-10-2

4. Anschließend wählt man den Menüpunkt '11' um eine Zertifikatsanforderung zu erstellen. Alle für das Zertifikat entscheidenden Informationen, welche man anfangs zusammen getragen hat, werden nun eingegeben. Folgende Besonderheiten gilt es zu beachten:

- Die in eckigen Klammern angezeigten Standardwerte können durch Drücken der Enter-Taste übernommen werden.
- Optionaler Werte, wie z.B. die E-Mail-Adresse, können durch Eingabe von '.' übersprungen werden.
- Will man ein Client-Zertifikat erstellen, um es z.B. zur Identifikationen seiner persönlichen Identität oder zum Signieren von VBA-Makros zu verwenden, so muss man dies bei der Abfrage des 'Common Name' durch das Voranstellen von 'USER:' kennzeichnen.

Beispiel:
USER: My name is Tom Jones
USER: Tom Jones VBA-Signing

- Will man ein Server-Zertifikat erstellen, so können bei der Abfrage des 'Common Name', dem Standardnamen des eisfair-Servers, auf Wunsch mehrere Namen, durch Komma getrennt, eingegeben werden. Durch Voranstellen von 'DNS:' kennzeichnet man dabei einen DNS-Namen, durch Voranstellen von 'IP:' eine IP-Adresse. Auf diese Weise ist es möglich den eisfair-Server über verschiedene Namen anzusprechen. Wer ganz sicher gehen will, dass DNS-Namen bzw. IP-Adressen korrekt erkannt werden, verwendet die beschriebenen Präfixe, ansonsten wird versucht die Eingaben automatisch zuzuordnen, was unter Umständen zu Fehlern führen kann. Voraussetzung hierfür ist es natürlich, dass der verwendete DNS-Server die Namen auch korrekt auflöst;-)

Beispiel:
DNS:mein-eisfair.local.lan,DNS:mail.local.lan,IP:192.168.6.1

Abbildung: Zertifikatsanforderung erstellen - 1
Image certs-cert-11-1
Abbildung: Zertifikatsanforderung erstellen - 2
Image certs-cert-11-2

5. Danach wählt man den Menüpunkt '12' aus, um die zuvor erstellte Zertifikatsanforderung zu unterzeichnen, d.h. zu bestätigen, dass dies ein gültiges Zertifikat im eigenen kleinen Netzwerk ist.

Abbildung: Zertifikat erstellen - 1
Image certs-cert-12-1

Falls man aufgefordert werden sollte die Zertifikatsdatenbank zu aktualisieren sollte man dies bestätigen, um sicher zu stellen, dass diese den korrekten Status (gültig, abgelaufen, widerrufen) aller bisher generierten Zertifikate enthält. Hier muss zum ersten Mal das geheime Kennwort des CA-Schlüssels eingegeben werden!

Abbildung: Zertifikat erstellen - 2
Image certs-cert-12-2

Im Anschluss werden die wichtigsten Details der Zertifikatsanfrage am Bildschirm angezeigt. Dazu gehören der verwendete Schlüsseltyp, dessen Stärke (z.B. 2048 Bit), die Adress- und Verwendungsdaten, sowie der bzw. die DNS-Namen (Common Name) des Servers. Da im Beispiel nur ein DNS-Name eingegeben wurde, wird logischerweise auch nur ein Name angezeigt.

Abbildung: Zertifikat erstellen - 3
Image certs-cert-12-3
Abbildung: Zertifikat erstellen - 4
Image certs-cert-12-4
Abbildung: Zertifikat erstellen - 5
Image certs-cert-12-5

6. Nachdem die Zertifikatsanforderung unterschrieben wurde, folgt nun die Generierung der Diffie-Hellmann Parameter, welche für den sicheren Schlüsselaustausch beim Zugriff auf einen Dienst benötigt werden, indem man den Menüpunkt '13' anwählt.

Abbildung: Diffie-Hellman-Parameter erzeugen - 1
Image certs-cert-13-1
Abbildung: Diffie-Hellman-Parameter erzeugen - 2
Image certs-cert-13-2

7. Über den Menüpunkt '14', werden im Anschluss die zuvor erzeugten Zertifikatskomponenten in ein gemeinsame Zertifikatsdatei zusammengeführt und in das korrekte Serververzeichnis kopieren.

Abbildung: Zertifikat kopieren - 1
Image certs-cert-14-1
Abbildung: Zertifikat kopieren - 2
Image certs-cert-14-2

8. Da viele Webbrowser Zertifikatsdateien nicht im PEM-Format importieren können wird nun über den Menüpunkt '15' eine Zertifikatsdatei im PKSC#12-Format erzeugt und mittels eines Export-Kennwortes gesichert.
Die Zertifikatsdateien kann man sich bei Bedarf über die E-Mail-Funktion, welche im Hauptmenü durch Drücken von 'e' aufgerufen werden kann, zusenden und dann auf den gewünschten Klientenrechner kopieren. Beim Import in den Zertifikatsspeicher des gewünschten Webbrowsers muss das beim Export festgelegte Kennwort eingegeben werden.

Abbildung: PKSC#12-Zertifikat erzeugen - 1
Image certs-cert-15-1
Abbildung: PKSC#12-Zertifikat erzeugen - 2
Image certs-cert-15-2

9. Damit Web- und E-Mail-Server nun das erzeugte Zertifikat verwenden können, müssen abschließend, durch Aufruf des Menüpunktes '16', symbolische Links angelegt werden, die auf die Zertifikatsdatei verweisen.
Der Apache2-Webserver sucht z.B. standardmäßig nach einer Zertifikatsdatei mit dem Namen 'apache.pem', der Exim E-Mail-Server hingegen verwendet standardmäßig die Dateinamen, 'imapd.pem', 'ipop3d.pem' und exim.pem' um eine Zertifikatsdatei zu laden, abhängig von dem angesprochenen Programmmodul.

Abbildung: Symbolische Links erzeugen - 1
Image certs-cert-16-1

Durch Auswahl der Unterpunkte '1' bzw. '3' kann man dann die benötigten symbolischen Links anlegen. Zur Bestätigung wird anschließend der Verweis auf die Zertifikatsdatei hinter den entsprechenden Dateinamen angezeigt (-> mein-eisfair.local.lan).

Abbildung: Symbolische Links erzeugen - 2
Image certs-cert-16-2

Ein Zertifikat widerrufen

Will man ein Zertifikat widerrufen, so geht man wie folgt vor.
ACHTUNG
Einmal widerrufende Zertifikate kann und sollte man normalerweise nicht wieder reaktivieren.


1 Über den Menüpunkt 1 wählt man den Key-Typ 1 'Certificate Authority (CA)' aus.
2 Über den Menüpunkt 7 'revoke a certificate' ruft man die Widerrufsfunktion auf.
3 Aus der angezeigten Liste der vorhandenen Zertifikate wählt man das zu widerrufende Zertifikat, durch Eingabe der vorangestellten Ziffer, aus.
4 Aus der angezeigten Liste der Widerrufsgründe wählt man den zu verwendenden Grund für den Widerruf aus.
5 Den Widerruf des Zertifikats muss man nun noch durch Eingabe des CA-Schlüssel Kennwortes bestätigen.
6 Danach wird man gefragt, ob auch gleich die Widerrufsliste aktualisiert werden soll. Beantwortet man die Abfrage 'Update revocation list' mit 'yes', so wird nach erneuter Eingabe des CA-Schlüssel Kennwortes die Widerrufsliste aktualisiert.

Die Widerrufsliste aktualisieren

Will man die Liste der widerrufenden Zertifikate aktualisieren, so geht man wie folgt vor:

1 Über den Menüpunkt 1 wählt man den Key-Typ 1 'Certificate Authority (CA)' aus.
2 Über den Menüpunkt 8 'update revocation list' ruft man die Funktion zur Aktualisierung der Widerrufsliste auf.
3 Danach wird man gefragt, ob die Widerrufsliste wirklich aktualisiert werden soll. Beantwortet man die Abfrage 'Update revocation list' mit 'Y'es, so wird man noch nach der gewünschten Gültigkeitsdauer der CRL und dem CA-Schlüssel Kennwort gefragt. Wurden diese eingegeben, so wird die Widerrufsliste aktualisiert.

Ein Zertifikat aktualisieren

Einmal im Jahr kommt der Zeitpunkt, dass z.B. das Mail-Paket ein auslaufendes SSL-Zertifikat meldet. Spätestens dann überlegt man, wie man dieses im Vorjahr aktualisiert hat.

In dieser Beschreibung wird davon ausgegangen, dass ein Mail-Paket auf dem Server mit dem Hostnamen 'florence' läuft und dessen Mail-Domainname 'mail.nightingale.de' lautet. Folgende Schritte müssen hierfür durchgeführt werden:

1 Erst einmal schaut man sich den Inhalt des aktuellen Zertifikates an, um sich bewusst zu machen, welche Informationen in der Datei enthalten sind bzw. mit welchen das existierende Zertifikat beantragt wurde. Hierzu gibt man an der Konsole folgenden Befehl ein und notiert sich die Bildschirmausgaben (man kann diese natürlich auch in eine Datei schreiben lassen).

openssl x509 -in /usr/local/ssl/certs/mail.nightingale.de.pem
             -noout -text

2 Dann ruft man im Setup-Menü die folgenden Menüpunkte auf um in die Zertifikatsverwaltung zu gelangen:

-> Service administration
   -> Certs Service
      -> Manage certificates

2.1 Dort angelangt wählt man den Menüpunkt 1 (change/set key type) und selektiert Punkt 2 (Client/server certificate).

2.2 Anschließend wählt man den Menüpunk 2 (change/set certificate name) und gibt den Domainnamen des Servers ein, für den ein Zertifikat erneuert werden soll:

Eingabe: mail.nightingale.de

2.3 Im folgenden Schritt wählt man über den Menüpunkt '10', 'select existing key' aus und selektiert aus der angezeigten Schlüsselliste die Datei 'florence.key'.

2.4 Nach diesen Vorbereitungen muss nun der vom Vorjahr bereits existierende Zertifikatsanforderung mit dem CA-Schlüssel signiert werden. Hierzu wählt man den Punkt 12 (sign certificate request with CA key) und folgt den Bildschirmausgaben. Nun gilt es nur noch eine Entscheidung zu treffen, ob man ein Server- (Server usage) oder ein Anwenderzertifikat für z.B. S/MIME (Client usage) erstellen möchte und schon hat ein ein aktualisiertes Zertifikat erstellt.

-> The certificate /usr/local/ssl/newcerts/mail.nightingale.de.crt
   has already been signed, proceed anyway (y/N):

   Eingabe: y (yes)

   Eingabe: Enter

   -> Using configuration from /usr/local/ssl/openssl.cnf
      Enter pass phrase for /usr/local/ssl/private/ca.key:

      Eingabe: geheimes CA Kennwort

      Check that the request matches the signature
      Signature ok
      The Subject's Distinguished Name is as follows
      countryName           :PRINTABLE:'DE'
      stateOrProvinceName   :PRINTABLE:'Nordrhein Westfalen'
      localityName          :PRINTABLE:'Duesseldorf'
      organizationName      :PRINTABLE:'Guru Mail Admin'
      organizationalUnitName:PRINTABLE:'My Email Services'
      commonName            :PRINTABLE:'mail.nightingale.de'

      Certificate is to be certified until Oct 26 19:52:11 2007 GMT (365 days)
      Sign the certificate? [y/n]:

      Eingabe: y (yes)

      1 out of 1 certificate requests certified, commit? [y/n]

      Eingabe: y (yes)

      Write out database with 1 new entries
      Data Base Updated
      /usr/local/ssl/newcerts/mail.nightingale.de.crt: OK

2.5 Nach der erfolgreichen Unterzeichnung des Zertifikates muss noch über den Menüpunkt 13 ein 'Diffie-Hellman Parameter' generiert werden, falls dieser nicht schon existiert.

2.6 Abschließend wird das Zertifikat mittels des Menüpunktes 14 in eine .pem-Datei umgewandelt, in das Zertifikatsverzeichnis kopiert und die Hashwerte aktualisiert:

-> create .pem certificate and copy it to /usr/local/ssl/certs - done.
   -> The certificate /usr/local/ssl/certs/mail.nightingale.de.pem does
      already exist, proceed anyway (y/N)

      Eingabe: y (yes)

Verschiedenes

Der Abruf eines Server-Zertifikates

Will man die E-Mail-Übermittlung von und zu seinem Provider über ein TLS-Zertifikat absichern, so muss man sich dieses zuvor von dessen Mail-Server herunterladen und auf seinem eigenen Mail-Server installieren. Am Beispiel einiger bekannter E-Mail-Provider soll dies exemplarisch verdeutlicht werden. Der aufgeführte Befehl wird bei POP3-Servern verwendet, bei IMAP-Servern muss an Stelle von 995 der Port 993 angegeben werden.

web.de:     openssl s_client -connect pop3.web.de:995 -showcerts
gmx.net:    openssl s_client -connect pop.gmx.net:995 -showcerts
Aus den angezeigten Informationen wird der Datenblock, welcher durch '—–BEGIN CERTIFICATE—–' und '—–END CERTIFICATE—–' gekapselt ist, markiert und in eine Datei mit z.B. dem Namen 'web.de-pop3.pem' kopiert. Die Datei muss dann im Verzeichnis /usr/local/ssl/certs abgelegt werden.

Beispiel:

-----BEGIN CERTIFICATE-----
MII[...]
-----END CERTIFICATE-----

Für alle Zertifikate muss ein Hash-Schlüssel durch Aufruf von '/var/install/bin/certs-update-hashes' (Menüpunkt: 1 - certificate folder) angelegt werden.

Die Liste der Zertifikatswiderrufslisten anpassen

Soll eine weitere Zertifikatswiderrufsliste (CRL) automatisch heruntergeladen werden, so muss deren URL zur Datei /usr/local/ssl/certs-update-crl-lists hinzugefügt werden. Danach kann man über den Menüpunkt 'Download revocation list(s)' das Herunterladen der CRLs anstoßen. Automatisiert geschieht dies wenn CERTS_CRL_CRON='yes' gesetzt und ein Intervall über den Parameter CERTS_CRL_CRON_SCHEDULE definiert wurde.

Die PKI-Policy erstellen bzw. anpassen

Standardmäßig wird im Verzeichnis /usr/local/ssl/web die Datei x509policy.html angelegt, welche, bei einem installiertem Apache2-Paket, über die folgende URL abgerufen werden kann und auf welche in jedem selbst erstelltem Zertifikat referenziert wird:
http://APACHE2_SERVER_NAME/certs/x509policy.html
Diese Datei enthält erste Hinweise für das Erstellen einer eigenen PKI-Policy, welches es bei Bedarf zu erstellen gilt.

Den Inhalt von Zertifikaten anzeigen

Über verschiedenste Befehle kann man sich Informationen aus den Zertifikaten anzeigen lassen:

Zertifikat in Textform ausgeben:

openssl x509 -in gmx.net-pop3.pem -noout -text
Zertifikat-Betreff ausgeben:
openssl x509 -in gmx.net-pop3.pem -noout -subject
Zertifikat-Aussteller ausgeben:
openssl x509 -in gmx.net-pop3.pem -noout -issuer
Zertifikat-Laufzeit ausgeben:
openssl x509 -in gmx.net-pop3.pem -noout -dates
MD5-Fingerprint ausgeben:
openssl x509 -in gmx.net-pop3.pem -noout -fingerprint -md5