S/MIME

Verwendung

Mit dem S/MIME-Modul können Sie Eingangsnachrichten im MIME-Format verschlüsseln, entschlüsseln, signieren sowie vorhandene Signaturen prüfen.

RSA PKCS 1.5, PSS und OAEP werden ebenso unterstützt wie öffentliche EC und RSA-Schlüssellängen von 2048 Bit.

Schlüssel und Zertifikate erstellen

Für die Verschlüsselung benötigen Sie Schlüssel, diese können Sie mit dem keytool von Java erstellen. Den Algorithmus, der zur Schlüsselerzeugung eingesetzt werden soll, geben Sie beim Erzeugen der Schlüssel an.

Für Informationen über den Aufruf von keytool, siehe SSL-Verbindung und Server-Authentifizierung konfigurieren.

Beispielaufruf Schlüssel erzeugen

keytool \
  -genkey \
  -dname "O=Virtimo, C=de" \
  -validity 365 \
  -keystore smime.keystore \
  -keypass inubit \
  -storepass inubit \
  -alias inubit \
  -keyalg RSA

Beispielaufruf Zertifikat erzeugen

keytool \
  -export \
  -keystore smime.keystore \
  -alias inubit \
  -file smime.cer

Modulvariablen des S/MIME Utility

Die folgende Tabelle enthält Variablen, die vom S/MIME Utility basierend auf der Eingangsnachricht gesetzt werden:

Modulvariable Wert

SMIMEEncryptionAlgorithm

Algorithmus, der für die Verschlüsselung des Nachrichteninhalts verwendet wurde.

SMIMEKeyEncryptionAlgorithm

Verschlüsselungsalgorithmus für Schlüssel, der benutzt wird, um symmetrische Schlüssel für die Verschlüsselung des Inhalts auszutauschen.

SMIMEisEncyrpted

Information, ob die Nachricht verschlüsselt ist (SMIMEisEncyrpted=true) oder nicht (SMIMEisEncyrpted=false).

SMIMEHashingAlgorithm

Für die Nachricht benutzter Signatur-Hash-Algorithmus

SMIMESignatureAlgorithm

Für die Nachricht benutzter Signaturalgorithmus

SMIMEisSigned

Information, ob die Nachricht signiert ist (SMIMEisSigned=true) oder nicht (SMIMEisSigned=false).

SMIMEVerifyCertData

Base64-kodiertes Zertifikat (DER), mit dem die Signatur geprüft wurde. Wird nur gesetzt, wenn die Option In Nachricht eingebettetes Zertifikat verwenden aktiv ist.

SMIMEAttachmentCount

Anzahl der Anhänge, die nach der Validierung der Anhänge in die Ausgabe übernommen wurden. Wird nur gesetzt, wenn ein Anhangstyp-Filter oder eine maximale Anzahl an Anhängen aktiv ist.

Dialogbeschreibungen S/MIME

Dialog S/MIME-Konfiguration

  • MIME verschlüsseln

    Ausgehende Nachrichten werden im S/MIME-Format verschlüsselt.

    Dafür müssen Sie als Sender den öffentlichen Schlüssel des Empfängers kennen. Diese Information hinterlegen Sie im folgenden Dialog.

  • MIME entschlüsseln

    Das Utility soll eingehende Nachrichten entschlüsseln. Dafür benötigen Sie den privaten Schlüssel des Empfängers.

    Diese Information hinterlegen Sie im nächsten Dialog.

  • MIME signieren

    Das Utility signiert die ausgehenden Nachrichten, das heißt, die Nachrichten werden mit einer verschlüsselten Prüfsumme versehen.

    Dafür benötigen Sie einen privaten Schlüssel, diese Information hinterlegen Sie im nächsten Dialog. Der Empfänger der Nachrichten muss den dazugehörigen öffentlichen Schlüssel besitzen, um die Korrektheit der Signatur prüfen zu können.

  • MIME-Signatur prüfen / Signierte Daten entpacken

    Ermöglicht/Überprüft die Korrektheit der Signaturen in der Eingangsnachricht, indem die Signaturen mit dem öffentlichen Schlüssel des Absenders verglichen werden. Diese Information hinterlegen Sie im nächsten Dialog. Ermöglicht ein Entpacken der Nachricht ohne vorherige Signaturprüfung sowie ein separates Kopieren der Nachrichten-Header.

Dialog S/MIME-Verschlüsselung

Wird bei Verwendung der Option MIME verschlüsseln angezeigt,

Dieser Dialog bietet folgende Optionen:

  • Verschlüsselungsalgorithmus

    Wählen Sie den Verschlüsselungsalgorithmus aus der Drop-down-Liste.

    Um den Verschlüsselungsalgorithmus über die Moduleigenschaften zu setzen, verwenden Sie die Variable smime.encryption.algo. Setzen Sie dort den Namen des Algorithmus gemäß nachfolgender Bezeichnungen.

  • Algorithmus zur Verschlüsselung von Schlüsseln

    Wenn kein Verschlüsselungsalgorithmus ausgewählt ist, wird der im Zertifikat gesetzte Verschlüsselungsalgorithmus für Schlüssel (Key-Encryption-Algorithm) berücksichtigt.

    Sie können den Algorithmus zur Verschlüsselung von Schlüsseln auch über die Moduleigenschaft smime.key.encryption.algo setzen. Ist die Moduleigenschaft gesetzt, hat sie Vorrang gegenüber dem in diesem Dialog konfigurierten Wert.

  • Hashing Algorithmus

    Wenn Sie den Algorithmus zur Verschlüsselung von Schlüsseln RSAES-OAEP ausgewählt haben, können Sie einen Hashing Algorithmus aus der Drop-Down-Liste auswählen.

    SHA-1 ist standardmäßig ausgewählt.

    Sie können den Hashing Algorithmus mit der Moduleigenschaft smime.rsaoaep.hash.algo aktivieren oder deaktivieren.

  • Key-Wrap-Algorithmus

    Wenn Sie den Verschlüsselungsalgorithmus für Schlüssel ECDH ausgewählt haben, müssen Sie den Key-Wrap-Algorithmus aus der Dropdown-Liste auswählen. Dieser Algorithmus verschlüsselt und sichert die kryptographischen Schlüssel beim Speichern oder bei der Übertragung mittels eines weiteren Schlüssels wie AES-Schlüssel Wrap ab.

    AES128_WRAP ist standardmäßig ausgewählt.

  • Key Derivation Function

    Wenn Sie den Verschlüsselungsalgorithmus für Schlüssel ECDH ausgewählt haben, müssen Sie Key Derivation Function aus der Dropdown-Liste auswählen. Diese Funktion erzeugt die kryptographischen Schlüssel aus Inputs und wird benutzt, um den Schlüssel zu erzeugen und den passwortbasierten Schlüssel, wie KDF, abzuleiten.

    ECDH_SHA256KDF ist standardmäßig ausgewählt.

  • Zertifikat des Empfängers hinzufügen

    Klicken Sie auf Hinzufügen, um die Zertifikatsdatei hinzuzufügen.

  • Daten des Zertifikats

    Dieses Fenster zeigt ein bereits hinzugefügtes Zertifikat an.

Dialog S/MIME-Entschlüsselung

Wird bei Verwendung der Option MIME entschlüsseln angezeigt.

In INUBIT wird intern Bouncy Castle verwendet, um Nachrichten automatisch mit dem passenden Entschlüsselungsalgorithmus zu entschlüsseln.

Privaten Schlüssel hinzufügen

Klicken Sie auf Hinzufügen, um den privaten Schlüssel im JKS-Format hinzuzufügen.

Öffentliche Daten des Schlüssels

Dieses Fenster zeigt bereits hinzugefügte private Schlüssel an.

Dialog S/MIME-Signierung

Wird bei Verwendung der Option MIME signieren angezeigt.

Dieser Dialog bietet folgende Optionen:

  • Hashing Algorithmus

    Wählen Sie den Hashing Algorithmus aus der Drop-down-Liste.

  • Signaturalgorithmus

    Wenn kein Signaturalgorithmus ausgewählt ist, wird der im Zertifikat konfigurierte Signaturalgorithmus berücksichtigt.

    Sie können den Signaturalgorithmus auch über die Moduleigenschaft smime.signature.algo setzen. Ist die Moduleigenschaft gesetzt, hat sie Vorrang gegenüber dem in diesem Dialog konfigurierten Wert.

  • Privaten Schlüssel hinzufügen

    Klicken Sie auf Hinzufügen, um den privaten Schlüssel im JKS-Format hinzuzufügen.

  • Öffentliche Daten des Schlüssels

    Dieses Fenster zeigt einen bereits hinzugefügten privaten Schlüssel an.

Dialog S/MIME-Signatur überprüfen / Signierte Daten entpacken

Wird bei Verwendung der Option MIME-Signatur überprüfen / Signierte Daten entpacken angezeigt. In diesem Dialog legen Sie fest, ob die Signatur geprüft wird, welche Daten weitergeleitet werden und welches Zertifikat für die Prüfung verwendet wird.

Signaturüberprüfung aktivieren

Wenn aktiviert, wird die Korrektheit der Signaturen in der Eingangsnachricht überprüft, indem die Signaturen mit dem öffentlichen Schlüssel des Absenders validiert werden. Schlägt die Prüfung fehl, bricht das Modul mit einer Fehlermeldung ab.

Signierte Daten entpacken

Wenn aktiviert, werden die signierten Nutzdaten aus der Nachricht entnommen und nur diese weitergeleitet. Ist zusätzlich Signaturüberprüfung aktivieren ausgewählt, werden die Nutzdaten erst nach erfolgreicher Prüfung entnommen. Inhalte, die außerhalb des signierten Bereichs der Nachricht stehen, werden dabei nicht übernommen.

Ist diese Option deaktiviert, wird die Eingangsnachricht nach erfolgreicher Prüfung unverändert weitergeleitet.

Zusätzliche Header kopieren

Wenn aktiviert, werden die Nachrichten-Header zusätzlich mit kopiert. Diese Option ist nur verfügbar, wenn Signierte Daten entpacken ausgewählt ist.

Validierung der Anhänge

Mit der Validierung der Anhänge legen Sie fest, welche Anhänge aus dem signierten Bereich einer Nachricht übernommen werden und wie viele Anhänge eine Nachricht enthalten darf. Die Optionen sind nur verfügbar, wenn Signierte Daten entpacken ausgewählt ist.

Als Anhang gilt jeder Nachrichtenteil, der einen Dateinamen besitzt oder als Anhang (Content-Disposition: attachment) gekennzeichnet ist.

Erlaubter Anhangstyp

Content-Type der Anhänge, die in die Ausgabe übernommen werden, z. B. application/pdf. Sie können einen Wert aus der Liste auswählen oder einen eigenen Wert eingeben. Mehrere Typen trennen Sie durch Kommas, z. B. application/pdf, application/xml. Ein Typ trifft auch zu, wenn der Content-Type eines Anhangs mit ihm beginnt, z. B. erfasst image/ alle Bildformate.

Anhänge, die keinem der Typen entsprechen, werden aus der Ausgabe entfernt. Entspricht kein Anhang den angegebenen Typen, bricht das Modul mit einer Fehlermeldung ab.

Standardwert ist */*, damit werden alle Anhangstypen übernommen.

Maximal erlaubte Anhänge

Maximale Anzahl an Anhängen, die eine Nachricht enthalten darf. Gezählt werden die Anhänge, die dem erlaubten Anhangstyp entsprechen. Enthält die Nachricht mehr Anhänge, bricht das Modul mit einer Fehlermeldung ab.

Unbegrenzt

Wenn aktiviert, ist die Anzahl der Anhänge nicht begrenzt und das Feld Maximal erlaubte Anhänge ist deaktiviert. Diese Option ist standardmäßig aktiviert.

Die Anzahl der übernommenen Anhänge wird in der Modulvariable SMIMEAttachmentCount ausgegeben. Die ursprünglichen MIME-Header, die Message-ID und die MIME-Boundaries der Nachricht bleiben dabei erhalten.

Sie können die Validierung der Anhänge auch über die Moduleigenschaften smime.attachments.type.filter, smime.attachments.max und smime.unlimited.attachments konfigurieren.

Öffentliches Zertifikat des Senders

In diesem Bereich legen Sie fest, mit welchem Zertifikat die Signatur geprüft wird. Dafür stehen folgende Optionen zur Verfügung:

Statische Zertifikatsdaten verwenden

Die Signatur wird mit einem Zertifikat geprüft, das Sie im Modul hinterlegen. Diese Option ist bei neuen Modulen standardmäßig ausgewählt.

Klicken Sie auf Hinzufügen, um das Zertifikat des Signierenden hinzuzufügen. Unterstützt werden einzelne X.509-Zertifikate im PEM- oder DER-Format, Java KeyStores (JKS) sowie PKCS#7-Dateien (.p7b, .p7c, .p7s). Enthält eine PKCS#7-Datei eine Zertifikatskette, wird automatisch das Zertifikat des Unterzeichners verwendet. Ein bereits hinzugefügtes Zertifikat wird überschrieben.

Das Feld Daten des Zertifikats zeigt das hinzugefügte Zertifikat an.

Sie können das Zertifikat auch über die Moduleigenschaft smime.certificate.data als Base64-kodierten Wert übergeben. Dort werden ebenfalls einzelne Zertifikate und PKCS#7-Strukturen mit Zertifikatsketten unterstützt.

Aus dem Credentials Manager auswählen

Die Signatur wird mit einem Zertifikat geprüft, das im Credentials Manager hinterlegt ist. Wählen Sie dafür den Alias des Zertifikats aus.

In Nachricht eingebettetes Zertifikat verwenden

Die Signatur wird mit dem Zertifikat geprüft, das der Absender in der signierten Nachricht mitsendet. Sie müssen dafür kein Zertifikat im Modul hinterlegen.

Das verwendete Zertifikat wird in der Modulvariable SMIMEVerifyCertData ausgegeben.

Bei dieser Option wird das eingebettete Zertifikat nicht gegen ein vertrauenswürdiges Zertifikat oder eine Zertifizierungsstelle geprüft. Eine erfolgreiche Prüfung bestätigt nur, dass die Nachricht nach dem Signieren nicht verändert wurde, aber nicht die Identität des Absenders. Prüfen Sie das Zertifikat aus SMIMEVerifyCertData im weiteren Workflow, wenn Sie den Absender authentifizieren müssen.


Keywords: