Hardware Security Module (HSM) Unterstützung für private Schlüssel

Wenn der kontrollierte Zugriff auf das Dateisystem des Servers nicht als ausreichende Sicherheit angesehen wird, profitieren Sicherheitsmanager von der HSM-Unterstützung (Hardware Security Module) für private Schlüssel. Damit können sie sich gegenüber Zertifikaten und anderen Kryptographieoperationen authentifizieren, die ein HSM installiert oder angeschlossen haben. Dies gewährleistet sicherere private Schlüssel und Passwörter als die Speicherung von Zertifikaten und deren Schlüsseln und Passwörtern im Dateisystem des Servers.

Anforderungen

  • Konfigurierte E-Mail-Adressen zum Senden und Empfangen von E-Mails.

  • Nitrokey HSM USB-Karte für S/MIME:

    • Privater Schlüssel für die konfigurierte E-Mail, die auf der Karte gespeichert ist.

    • Zertifikat für die konfigurierte E-Mail, die auf der Karte gespeichert ist.

    • S/MIME-Unterstützung in OTRS konfiguriert.

  • Nitrokey Start USB-Karte für PGP:

    • Privater Schlüssel für die konfigurierte E-Mail, die auf der Karte gespeichert ist.

    • Konfigurierte PGP-Unterstützung in OTRS.

    • Öffentlicher PGP-Schlüssel in OTRS hinzugefügt.

  • Installation der OpenSC-Werkzeuge:

    opensc-tool
    opensc-explorer
    pkcs11-tool
    pkcs15-tool
    libp11
    

S/MIME

In diesem Abschnitt wird beschrieben, wie Sie die NitroKey HSM-Karte mit S/MIME verwenden können.

Vorbereitung

Um die NitroKey HSM-Karte mit OTRS zu verwenden, muss zunächst OpenSSL für die Arbeit mit libp11 konfiguriert werden. Obwohl es verschiedene Möglichkeiten gibt, dies zu tun, wird empfohlen, eine benutzerdefinierte Konfigurationsdatei zu erstellen und am Anfang die Hauptkonfigurationsdatei von OpenSSL einzubinden. Ein Beispiel für eine solche Konfigurationsdatei wird im Folgenden gezeigt:

openssl_conf = openssl_init

[openssl_init]
engines = engine_section

[engine_section]
pkcs11 = pkcs11_section

[pkcs11_section]
engine_id = pkcs11
dynamic_path = <libpkcs11_PATH>
MODULE_PATH = opensc-pkcs11.so
init = 0

[req]
distinguished_name = req_distinguished_name

[req_distinguished_name]

Dabei ist <libpkcs11_PATH> der Pfad zu dem von libp11 zur Verfügung gestellten Motormodul, wie zum Beispiel:

/usr/lib/ssl/engines/libpkcs11.so
/usr/local/lib/engines-1.1/libpkcs11.dylib
...

Abhängig von der Version, dem Betriebssystem und der Art der Installation kann dies in Ihrer Situation anders sein. Bitte schauen Sie in der Dokumentation von lib11 nach, um die richtigen Pfade für Ihre Installation zu finden.

Speichern Sie die Datei zum Beispiel in /etc/openssl/hsm.cnf und fügen Sie einen Link zu dieser Datei am Anfang der OpenSSL-Original-Konfigurationsdatei ein:

# OpenSSL example configuration file.
# This is mostly being used for generation of certificate requests.
#
# Note that you can include other files from the main configuration
# file using the .include directive.
# .include filename
.include /etc/openssl/hsm.cnf

Einstellungen

  1. Setzen Sie den richtigen Pfad und aktivieren Sie SMIME::PKCS15ToolBin. Wenn das pkcs15-tool korrekt installiert ist, kann der Pfad durch die Ausführung des Befehls which pkcs15-tool ermittelt werden. Das Ergebnis sollte kopiert und in die Einstellung eingefügt werden.

  2. Setzen Sie den richtigen Pfad und aktivieren Sie SMIME::HSMPrivatePath. Es wird empfohlen, ein neues Verzeichnis zu erstellen, das sich von SMIME::PrivatePath unterscheidet, um Verwechslungen und Überbleibsel zu vermeiden.

  3. Setzen Sie die richtige Seriennummer der HSM-Karte und die Benutzer-PIN in SMIME::HSMCard::PIN. Die aktuelle Seriennummer der Karte kann mit dem Konsolenbefehl Maint::SMIME::HSMCard::Check ermittelt werden. Die aktuelle Benutzer-PIN ist diejenige, die bei der Initialisierung verwendet wurde. Die Karten-Seriennummern für Beispielkarten können entfernt werden.

  4. Aktivieren Sie die Verwendung der HSM-Karte in der Einstellung SMIME::UseHSM.

Überprüfung der Umgebung

Führen Sie den Konsolenbefehl Maint::SMIME::HSMCard::Check aus. Die Ausgabe sollte wie folgt aussehen:

Reading HSM card information...
+-----------------+--------------------+
| Label | SmartCard-HSM                |
| Serial number   | DENK0100003        |
| Manufacturer ID | www.CardContact.de |
| User PIN        | Verified           |
+-----------------+--------------------+
Checking OpenSSL engines...
+--------------------------------+-------------+
| Dynamic engine loading support | Available   |
| pkcs11 engine                  | Available   |
| Intel RDRAND engine            | Available   |
+--------------------------------+-------------+
Done

Es ist wichtig, dass die User-PIN verifiziert ist und dass die pkcs11 Engine verfügbar ist. Wenn eine andere aufgefuehrte Engine nicht verfügbar ist, bedeutet dies nicht unbedingt ein Problem.

Importieren von HSM-Kartenzertifikaten und -Schlüsseln

Während das Signieren und Entschlüsseln der Nachrichten auf der HSM-Karte erfolgt, muss OTRS dennoch bestimmte Informationen von der HSM-Karte importieren. Die öffentlichen Zertifikate müssen von der Karte in das Dateisystem kopiert werden. Dies kann über die übliche SMIME::CertPath-Einstellung erfolgen.

Es muss eine Unterdatei mit einigen Metadaten des privaten Schlüssels erzeugt und in dem Pfad abgelegt werden, der in der Einstellung SMIME::HSMPrivatePath festgelegt wurde. Diese Metadaten umfassen die Seriennummer der HSM-Karte, die Schlüssel-ID, das Label, den Hash, den Modulus usw.

Um diese Aufgabe zu erfüllen, wurde ein neuer Maint::SMIME::HSMCard::Sync Konsolenbefehl erstellt. Die Ausgabe sollte wie folgt aussehen:

Syncronizing certificates and private keys metadata...
  Reading HSM card information... OK
  Reading HSM card objects... OK
  Processing HSM certificates and keys...
  ID 'a1b2e3d4'... OK
  ID 'f5d6e7c8'... OK
Done.

Verwendung

Die HSM-Karte sollte nun einsatzbereit sein und die Verwendung sollte für die Benutzer transparent sein, z. B. beim Erstellen eines neuen E-Mail-Tickets.

Stellen Sie sicher, dass Sie eine Queue verwenden, bei der die Systemadresse über ein Zertifikat und einen privaten Schlüssel im HSM-Modul verfügt, und wählen Sie im Feld Sicherheitsoptionen die Option, die E-Mail mit S/MIME zu signieren. Das Absenden des Formulars kann etwas langsamer sein, da die HSM-Karte entsperrt werden muss und der Vorgang durchgeführt werden muss.

PGP

In diesem Abschnitt wird beschrieben, wie Sie die NitroKey HSM-Karte mit PGP verwenden können.

Einstellungen

Es ist erforderlich, die Kartenbenutzer-PIN als das gespeicherte Schlüsselpasswort in der Einstellung PGP::Key::Password festzulegen. Wenn z. B. die Schlüssel-ID 11223344 und die Kartenbenutzer-PIN 123456 ist, erstellen Sie einen neuen Eintrag in der Einstellung und geben Sie im ersten Teil 11223344 und dann 123456 als Wert ein.

So erhalten Sie die Schlüssel-ID:

  1. Öffnen Sie das Modul PGP-Schlüssel im Administrator-Interface.

  2. Überprüfen Sie die ID des Schlüssels in der Spalte Schlüssel.

Bemerkung

Wenn das System bereits konfiguriert ist und mit diesem bestehenden Schlüssel arbeitet, sollte die Einstellung bereits einen Eintrag für die ID enthalten. In diesem Fall sollte das Schlüsselpasswort bereits festgelegt sein, muss aber noch ausgetauscht werden, damit die Kartenbenutzer-PIN korrekt funktioniert.

Verwendung

Die Verwendung sollte nun für die Benutzer transparent sein, z. B. beim Erstellen eines neuen E-Mail-Tickets. Stellen Sie sicher, dass Sie eine Queue verwenden, bei der die Systemadresse ein öffentliches und privates Schlüsselpaar in der verschlüsselten Karte hat, und wählen Sie im Feld „Sicherheitsoptionen“, dass die E-Mail mit PGP signiert werden soll.

Nach oben scrollen