Erste Schritte mit X.509-Zertifikaten
Wenn Sie noch nicht mit der Verwaltung von X.509-Zertifikaten vertraut sind, die für die Transport Layer Security (TLS) erforderlich sind, finden Sie auf dieser Seite einige grundlegende Informationen. Sie dient als Kurzanleitung, die den grundlegenden Arbeitsablauf und die erforderlichen Schritte zur Erstellung selbstsignierter Zertifikate für TLS vorstellt.
X.509-Zertifikate sind digitale Dokumente, die zur Überprüfung und Bestätigung der Identität von Servern oder Websites dienen. Sie sind zwingend erforderlich, um eine sichere Netzwerkkommunikation zwischen Servern bzw. zwischen Servern und Websites über die Transport Layer Security (TLS) zu ermöglichen.
Die Zertifikate sind Voraussetzung, wenn Sie MERLIC auf Remote-Systemen mit einer sicheren Verbindung nutzen möchten. Sie gewährleisten eine verschlüsselte Verbindung zwischen den MERLIC-Diensten, beispielsweise zwischen dem MERLIC Frontend und MERLIC RTE.
Um eine sichere Kommunikation mit der Transport Layer Security (TLS) zwischen MERLIC-Diensten zu ermöglichen, müssen Sie auf allen Host-Rechnern ein Serverzertifikat sowie für alle Clients, die auf den Server zugreifen, das entsprechende CA-Zertifikat bereitstellen.
CA-Zertifikate und Serverzertifikate
CA-Zertifikate sind Zertifikate, die in der Regel von einer vertrauenswürdigen Zertifizierungsstelle (Certificate Authority, CA), wie beispielsweise Let's Encrypt, ausgestellt werden. Sie dienen dazu, andere Zertifikate, wie beispielsweise Serverzertifikate, zu signieren. Ein CA-Zertifikat enthält Informationen über die jeweilige Zertifizierungsstelle. CA-Zertifikate weltweit anerkannter Zertifizierungsstellen sind standardmäßig im Betriebssystem enthalten. Unter Umständen stellt auch Ihr Unternehmen ein unternehmensspezifisches CA-Zertifikat bereit, das als Stamm-CA-Zertifikat dient und von Ihrer IT-Abteilung auf allen Rechnern in Ihrem lokalen Netzwerk verteilt wird.
Serverzertifikate dienen der Identifizierung eines bestimmten Host-Rechners. Sie können über eine Zertifikatssignierungsanforderung (Certificate Signing Request, CSR) angefordert werden und werden von einer Zertifizierungsstelle unter Verwendung ihres privaten CA-Schlüssels ausgestellt und signiert. Serverzertifikate müssen zusammen mit einem privaten Server-Schlüssel auf dem Host-Rechner bereitgestellt werden.
Zertifikate für MERLIC
Wenn Sie MERLIC für die Remote-Nutzung mit Transport Layer Security (TLS) einrichten möchten, müssen Sie auf dem Host-Rechner, auf dem MERLIC-Dienste wie MERLIC RTE oder MERLIC Creator ausgeführt werden, ein Serverzertifikat bereitstellen. Auf allen Client-Rechnern, die auf den Host-Rechner zugreifen sollen, muss zudem das CA-Zertifikat bereitgestellt werden, mit dem das Serverzertifikat signiert wurde. Das bedeutet, dass Sie das CA-Zertifikat auf allen Client-Rechnern bereitstellen müssen, auf denen das MERLIC Frontend oder MERLIC RTE Setup läuft und von denen aus eine Verbindung zu MERLIC RTE oder MERLIC Creator hergestellt werden soll, die auf dem Host-Rechner laufen.
Die Zertifizierungsstelle ist unter Berücksichtigung der vorgesehenen Client-Benutzer auszuwählen.
Lokale Tests oder ausgewählte Clients
Wenn Sie die Kontrolle über alle Rechner haben, auf denen die Clients laufen und die eine Verbindung zum MERLIC-Dienst herstellen müssen, können Sie ein eigenes CA-Zertifikat erstellen und es zu den vertrauenswürdigen Zertifikaten auf diesen Client-Rechnern hinzufügen. In diesem Fall übernehmen Sie die Rolle der Zertifizierungsstelle. Dies ist für Testzwecke praktisch, da Sie alles selbst durchführen können.
Lokales Unternehmensnetzwerk
Soll der MERLIC-Dienst in Ihrem lokalen Unternehmensnetzwerk laufen, können Sie das Stamm-CA-Zertifikat Ihres Unternehmens verwenden, um das Serverzertifikat zu signieren. Senden Sie dazu eine Zertifikatssignierungsanforderung (Certificate Signing Request, CSR) an Ihre IT-Abteilung und bitten Sie diese, die CSR mit dem Stamm-CA-Zertifikat zu signieren. Wenn Ihr Unternehmen einen automatisierten Prozess zur Ausstellung von Zertifikaten verwendet, beispielsweise ACME (Automatic Certificate Management Environment), können Sie diesen Prozess nutzen, um das Serverzertifikat anzufordern. Dieses Zertifikat sollte von allen von Ihrer IT-Abteilung bereitgestellten Rechnern als vertrauenswürdig eingestuft werden. Der MERLIC-Dienst ist dann für alle internen Benutzer zugänglich.
Externes Netzwerk
Wenn der MERLIC-Dienst für irgendeine Art von größerem Netzwerk zugänglich gemacht werden soll, kann nicht davon ausgegangen werden, dass die Clients einer anderen Zertifizierungsstelle (Certificate Authority, CA) als den weltweit anerkannten CAs vertrauen. Daher wird empfohlen, ein Serverzertifikat von einer weltweit anerkannten CA anzufordern. Das Serverzertifikat wird anschließend von der ausgewählten CA signiert und ausgestellt. Die entsprechenden CA-Zertifikate sind bereits standardmäßig vorhanden, sodass Sie diese nicht selbst hinzufügen müssen.
Es wird empfohlen, bei der Bereitstellung von MERLIC in einem größeren Netzwerk einen Reverseproxy zu verwenden. Der MERLIC Directory Agent und der Reverseproxy kommunizieren über eine lokale TCP-Verbindung oder einen Unix-Domain-Socket per HTTP im Klartext. Das Serverzertifikat muss dann im Reverseproxy konfiguriert werden, der den MERLIC-Dienst für das Netzwerk zugänglich macht.
Grundlegender Arbeitsablauf zur Erstellung von Zertifikaten
Zertifikate und die dazugehörigen privaten Schlüssel können mithilfe der OpenSSL-Kommandozeilenfunktion über die Kommandozeile generiert werden. Stellen Sie grundsätzlich sicher, dass das Serverzertifikat, der private Serverschlüssel und das dazugehörige CA-Zertifikat auf den jeweiligen Systemen vorhanden sind.
In der folgenden Anleitung finden Sie alle Informationen, die Sie benötigen, um die Zertifikate selbst zu erstellen, beispielsweise zu Testzwecken.
Beachten Sie, dass alle auf dieser Seite gezeigten OpenSSL-Befehle OpenSSL 3 oder höher erfordern.
Die OpenSSL-Kommandozeilenschnittstelle (Command Line Interface, CLI) ist unter Windows verfügbar, allerdings benötigen Sie für die Installation wahrscheinlich Administratorberechtigungen. Alternativ können Sie das Zertifikat und den Schlüssel auch auf einem Linux-System erstellen und unter Windows verwenden.
Ein CA-Zertifikat bereitstellen
Wenn Sie Serverzertifikate verwenden möchten, die von einer vertrauenswürdigen Zertifizierungsstelle signiert wurden, sind diese Schritte nicht erforderlich. In der Regel ist das entsprechende CA-Zertifikat bereits auf den Client-Rechnern vorhanden.
- Erstellen Sie einen privaten CA-Schlüssel und anschließend ein CA-Zertifikat.
- Fügen Sie das CA-Zertifikat zu den Clients hinzu.
Das Serverzertifikat bereitstellen
Wenn Sie Serverzertifikate verwenden möchten, die von einer vertrauenswürdigen Zertifizierungsstelle signiert wurden, wird die CSR an die Zertifizierungsstelle gesendet.
- Erstellen Sie einen privaten Server-Schlüssel und eine Zertifikatssignierungsanforderung (CSR) für ein Serverzertifikat.
- Signieren Sie die CSR mit dem CA-Schlüssel, um das Serverzertifikat auszustellen.
- Fügen Sie den Server-Schlüssel und das Serverzertifikat dem Host-Rechner hinzu.
Die Transport Layer Security (TLS) für MERLIC aktivieren
Aktivieren Sie in der Konfigurationsdatei des MERLIC Directory Agents den Netzwerkzugriff und geben Sie den Speicherort des Serverzertifikats und des privaten Server-Schlüssels an. Weitere Informationen finden Sie unter Den Directory Agent für Remote-Verbindungen konfigurieren.
Ein CA-Zertifikat bereitstellen
Ein CA-Zertifikat und einen privaten CA-Schlüssel erstellen
Um ein CA-Zertifikat selbst zu erstellen, können Sie die OpenSSL-Kommandozeilenfunktion verwenden. In diesem Fall übernehmen Sie die Rolle der Zertifizierungsstelle (CA) und verwenden OpenSSL, um einen privaten CA-Schlüssel und ein CA-Zertifikat zu erstellen, das mit Ihrem CA-Schlüssel signiert ist.
Das folgende Beispiel zeigt, wie Sie ein CA-Zertifikat und eine private Schlüsseldatei erstellen. Die Befehle funktionieren in OpenSSL 3 oder höher.
- Öffnen Sie eine Eingabeaufforderung und geben Sie den folgenden Befehl ein:Kopieren
openssl req -new -x509 -nodes -days 365 -newkey rsa:2048 -keyout ca.key -out ca.crtMit diesem Befehl werden ein CA-Zertifikat mit dem Namen „ca.crt“ sowie eine neue, zugehörige private Schlüsseldatei mit dem Namen „ca.key“ erstellt. Dabei wird der RSA-Algorithmus mit einer Schlüssellänge von 2048 Bit verwendet. Das Zertifikat ist 365 Tage lang gültig. Sie können auch andere Dateinamen verwenden, um den Zweck und die Herkunft des Zertifikats deutlicher zu machen.
- Geben Sie bei Aufforderung einige Informationen zur Identifizierung der Zertifizierungsstelle ein. Diese Metadaten werden dem Benutzer am Ende angezeigt. Mozilla Firefox zeigt beispielsweise einen Tooltip mit der Aufschrift „Verifiziert von“ und dem Namen der Zertifizierungsstelle an. Diese Informationen werden den Metadaten des CA-Zertifikats entnommen.
Im Gegensatz zum CA-Zertifikat, das an die Clients verteilt werden muss, ist der private CA-Schlüssel geschützt aufzubewahren. Er sollte niemals an Dritte weitergegeben werden. Er enthält den Schlüssel zum Signieren von Zertifikaten im Namen der Zertifizierungsstelle.
Das CA-Zertifikat muss nur einmal erstellt und verteilt werden, solange es gültig ist. Solange Sie im Besitz des privaten CA-Schlüssels sind, können Sie mit demselben CA-Zertifikat eine beliebige Anzahl von Serverzertifikaten für verschiedene Hostnamen, Domains usw. signieren.
Das CA-Zertifikat zu den Clients hinzufügen
Jeder Client-Computer, der auf den Server zugreifen soll, muss mit dem CA-Zertifikat ausgestattet werden. Dies erfolgt in der Regel, indem Sie das CA-Zertifikat in den Zertifikatsspeicher des Betriebssystems oder des Browsers importieren.
Beachten Sie, dass dies andere Clients nicht daran hindert, auf den Server zuzugreifen. Clients können die Zertifikatsüberprüfung jederzeit überspringen. Serverzertifikate ermöglichen es dem Client lediglich, den Server zu authentifizieren.
Windows
Unter Windows können Sie die Datei über PowerShell importieren.
Import-Certificate -FilePath "C:\path\to\ca.crt" -CertStoreLocation Cert:\CurrentUser\Root
Es ist auch möglich, die CA-Zertifikatsdatei doppelt zu klicken, um das Zertifikat über die grafische Benutzeroberfläche, den Assistenten für den Zertifikatimport (Certificate Import Wizard) von Windows, zu installieren. Stellen Sie in diesem Fall sicher, dass das Zertifikat in die Liste der vertrauenswürdigen Stammzertifizierungsstellen aufgenommen wird. Dies können Sie im Zertifikatsmanager von Windows überprüfen.
Linux
Unter Linux müssen Sie die CA-Zertifikatsdatei in den entsprechenden Systemzertifikatsspeicher kopieren. Möglicherweise möchten Sie die Datei umbenennen, um ihre Herkunft und ihren Zweck deutlicher zu machen.
Kopieren Sie die CA-Zertifikatsdatei beispielsweise unter Ubuntu nach „/usr/local/share/ca-certificates“ und aktualisieren Sie anschließend den Systemzertifikatsspeicher mit dem folgenden Befehl:
sudo update-ca-certificates
Browser
In einigen Fällen kann es außerdem erforderlich sein, das CA-Zertifikat in den Browser zu importieren. Browser verfügen in der Regel über einen eigenen Zertifikatsspeicher. Importieren Sie Ihr CA-Zertifikat über die Einstellungen des Browsers in die vertrauenswürdigen Zertifikate:
- Mozilla Firefox: Einstellungen > Datenschutz & Sicherheit > Verbindungs- und Softwaresicherheit > Zertifikate > Zertifikate verwalten > Zertifizierungsstellen > Importieren
- Google Chrome™: Einstellungen > Datenschutz & Sicherheit > Sicherheit > Zertifikate verwalten > Benutzerdefiniert/Von Ihnen installiert > Vertrauenswürdige Zertifikate > Importieren
- Microsoft Edge: Einstellungen > Datenschutz, Suche und Services > Sicherheit > Zertifikate verwalten > Benutzerdefiniert/Von Ihnen installiert > Vertrauenswürdige Zertifikate > Importieren
Wenn Sie die oben genannte Importoption nicht finden können, suchen Sie in den Browsereinstellungen nach dem Zertifikatsspeicher.
Benutzerdefinierte(s) Zertifikatsverzeichnis oder -datei
Wenn der Systemzertifikatsspeicher auf dem Client nicht verwendet werden kann, können Sie die Umgebungsvariablen „SSL_CERT_DIR“ oder „SSL_CERT_FILE“ nutzen, um das CA-Zertifikat auf Ihren Clients alternativ hinzuzufügen.
|
Umgebungsvariable |
Beschreibung |
|---|---|
|
SSL_CERT_DIR |
Mit dieser Variablen kann ein anderes Standardverzeichnis für CA-Zertifikate festgelegt werden. Sie können mehrere Verzeichnisse angeben, die durch einen Doppelpunkt (Linux) oder ein Semikolon (Windows) voneinander getrennt sind. Nachdem Sie das CA-Zertifikat in eines der angegebenen Verzeichnisse verschoben haben, müssen Sie dessen Inhalt mit dem folgenden OpenSSL-Befehl hashen: Kopieren
Dieser Befehl muss jedes Mal ausgeführt werden, wenn sich das Zertifikat im Verzeichnis ändert. Er erstellt einen Symlink, der auf das Zertifikat verweist. So kann OpenSSL das CA-Zertifikat bei der Überprüfung eines Serverzertifikats schnell finden. |
|
SSL_CERT_FILE |
Mit dieser Variablen kann eine bestimmte CA-Zertifikatsdatei festgelegt werden, die zur Überprüfung des Serverzertifikats verwendet werden soll. |
Ein Serverzertifikat erstellen
Eine Zertifikatssignierungsanforderung (CSR) und einen privaten Server-Schlüssel erstellen
Um ein Serverzertifikat zu erstellen, müssen Sie zunächst eine Zertifikatssignierungsanforderung (Certificate Signing Request, CSR) sowie einen privaten Server-Schlüssel für das Serverzertifikat erstellen. Anschließend wird die CSR von der ausgewählten Zertifizierungsstelle (Certificate Authority, CA) überprüft und signiert. In der Regel wird die CSR vom Serverbetreiber erstellt.
Das folgende Beispiel zeigt, wie Sie eine CSR und den entsprechenden privaten Server-Schlüssel erstellen. Die Befehle funktionieren in OpenSSL 3 oder höher.
openssl req -new -subj "/C=DE/CN=merlic-server" -addext "subjectAltName = IP:127.0.0.1, DNS:localhost, DNS:merlic-server" -newkey rsa:2048 -nodes -keyout server.key -out server.csr
Mit diesem Befehl werden eine private Server-Schlüsseldatei namens „server.key“ und eine Zertifikatssignierungsanforderung (CSR) namens „server.csr“ erstellt. Bei der CSR-Datei handelt es sich lediglich um eine Zwischendatei. Sobald die CSR von der Zertifizierungsstelle signiert wurde, wird sie nicht mehr benötigt.
Achten Sie darauf, die Kommandozeilenbefehle entsprechend dem gewünschten Server anzupassen. Sie können die Subject-Option „‑subj“ auch weglassen, um interaktiv zur Eingabe weiterer Zertifikatsmetadaten aufgefordert zu werden.
- C: legt den Ländercode fest. In unserem Beispiel ist er auf Deutschland gesetzt („C=DE“).
- CN: legt den Hostnamen des vorgesehenen Servers fest. In unserem Beispiel wird der Hostname „merlic-server“ verwendet.
- subjectAltName: Legt einen oder mehrere „Subject Alternative Names“ (SANs) fest, für die das Zertifikat gültig sein soll. Hierbei kann es sich um IP-Adressen („IP:“) oder Domain-Namen („DNS:“ ) handeln. Es muss mindestens ein SAN angegeben werden, für das das Zertifikat gültig sein soll. Einer der SANs muss mit dem Host- oder Domain-Namen übereinstimmen, der für den Zugriff auf den Server verwendet wird. Für lokale Tests ist es sinnvoll, 127.0.0.1 und „localhost“ anzugeben.
Der private Server-Schlüssel sollte sicher aufbewahrt werden. Er sollte niemals an Dritte weitergegeben werden. Dies gilt auch für die Zertifizierungsstelle, da diese lediglich die CSR benötigt.
Die CSR mit dem CA-Schlüssel signieren
Das endgültige Serverzertifikat wird durch das Signieren der CSR mit dem CA-Schlüssel erstellt. Wenn Sie die Rolle der Zertifizierungsstelle innehaben, können Sie die CSR mit Ihrem privaten CA-Schlüssel selbst signieren.
Das folgende Beispiel zeigt, wie Sie eine CSR mit Ihrem CA-Schlüssel signieren. Die Befehle funktionieren in OpenSSL 3 oder höher.
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 90 -sha256 -copy_extensions copyall
Der Befehl verwendet die CSR-Datei „server.csr“ und den privaten CA-Schlüssel „ca.key“ als Eingabe und erstellt das Serverzertifikat „server.crt“. Das Serverzertifikat ist 90 Tage lang gültig. Die Option „‑copy_extensions copyall“ stellt sicher, dass die SANs aus der CSR übernommen werden.
Wenn Sie ein von einer vertrauenswürdigen Zertifizierungsstelle signiertes Serverzertifikat wünschen, müssen Sie dieser die CSR-Datei übermitteln. Die Zertifizierungsstelle überprüft die CSR, bestätigt Ihre Identität und sendet Ihnen das signierte Serverzertifikat zu.
Das resultierende Serverzertifikat „server.crt“ kann dann in Verbindung mit dem privaten Schlüssel „server.key“ für den Serverbetrieb verwendet werden.
Das Serverzertifikat und den privaten Server-Schlüssel zu den Host-Rechnern hinzufügen
Das Serverzertifikat und der zugehörige private Server-Schlüssel müssen auf dem Host-Rechner vorhanden sein, für den das Zertifikat erstellt wurde. Der Pfad zu beiden Dateien muss in der Konfigurationsdatei des MERLIC Directory Agents angegeben werden, wenn MERLIC für Remote-Verbindungen über die Transport Layer Security (TLS) eingerichtet wird. Weitere Informationen finden Sie unter Den Directory Agent für Remote-Verbindungen konfigurieren.