Zum Hauptinhalt springen

Erstellen von JSON Web Keys für Testzwecke

FIT-Connect verwendet zur Übertragung von Antragsdaten und Metadaten eine Ende-zu-Ende-Verschlüsselung. Diese ist auf Basis des Standards JSON Web Encryption (JWE) unter Verwendung von Schlüsseln gemäß des Standards JSON Web Keys (JWK) umgesetzt. In der Testumgebung können hierzu selbstgenerierte Zertifikate im JWK-Format genutzt werden. Im Folgenden soll die Erstellung von JWKs mithilfe eines zu diesem Zweck bereitgestellten Skriptes unter Windows und Linux erläutert werden.

Hinweis

Das Tool, das hier beschrieben wird, ist nur für Testzwecke! Um JWKs für die Nutzung mit der FIT-Connect API zu erstellen, nutzen Sie bitte das Tool, das im Artikel Zertifikatsbeantragung beschrieben wird.

Voraussetzungen

Die Ausführung des Skriptes setzt eine installierte Version von Python voraus. Zum Nachinstallieren von benötigten Paketen wird das Paketverwaltungsprogramm pip benötigt. Bei Versionen vor 3.4 ist ggf. noch eine manuelle Installation erforderlich.

Windows

Eine Anleitung zur Installation und Einrichtung unter Windows finden Sie unter Installationsanleitung Python Windows.

Linux

Der Ablauf und die Befehle zur Installation und Einrichtung von Python unter Linux unterscheiden sich je nach verwendeter Distribution.

Debian / Ubuntu

Installationsanleitung Python Ubuntu

Installation von pip

$ sudo apt install python3-pip

Fedora

Installationsanleitung Python Fedora

$ sudo yum -y install python-pip

Arch Linux

Unter Arch kann die Installation von pip übersprungen werden und direkt die Installation von poetry durchgeführt werden:

$ sudo pacman -S python-poetry

Herunterladen der FIT-Connect Tools

Laden Sie die FIT-Connect-Tools als Zip-Datei herunter und entpacken Sie sie an einem Ort Ihrer Wahl (Alternativ: Klonen Sie unser Git-Repository: git clone https://git.fitko.de/fit-connect/fit-connect-tools.git).

Navigieren Sie anschließend zum Verzeichnis in dem Sie die Tools entpackt haben und öffnen Sie dort unter Windows eine PowerShell bzw. unter Linux ein Terminal. Alternativ können Sie auch innerhalb der PowerShell oder des Terminals zum Verzeichnis navigieren.

Erforderliche Python-Pakete installieren

Um das Skript zur Erstellung von JSON Web Keys auszuführen, werden zusätzliche Python Pakete benötigt. Diese lassen sich jedoch sehr einfach mithilfe von pip und poetry nachinstallieren. Dazu kann unter Windows die PowerShell sowie Terminal unter Linux verwendet werden.

$ pip3 install poetry
$ poetry install

Ausführung des Skripts

Mit dem folgenden Befehl kann das Python-Skript zur Erstellung der JSON Web Keys ausgeführt werden.

$ poetry run python3 createSelfSignedJwks.py

In der Konsole wird dann im Erfolgsfall der Speicherort der Schlüssel ausgegeben:

🔒 Wrote JWK representation of encryption public key (key_use=wrapKey) to C:\Users\username\AppData\Local\Temp\tmpx8gi90tq\publicKey_encryption.jwk.json
🔒 Wrote JWK representation of signature validation public key (key_use=verify) to C:\Users\username\AppData\Local\Temp\tmpx8gi90tq\publicKey_signature_verification.jwk.json
Please upload these keys when creating a destination in the self service portal.

🔒 Wrote JWKS of Public Keys to C:\Users\username\AppData\Local\Temp\tmpx8gi90tq\set-public-keys.json
This key set can be used to update (rotate) keys via the Submission-API (PUT /destinations/{{destinationID}})

🔒 Wrote JWK representation of decryption private key (key_use=unwrapKey) to C:\Users\username\AppData\Local\Temp\tmpx8gi90tq\privateKey_decryption.jwk.json
🔒 Wrote JWK representation of signing private key (key_use=sign) to C:\Users\username\AppData\Local\Temp\tmpx8gi90tq\privateKey_signing.jwk.json
These keys can be used to sign and decrypt in your client application.

Die nun erzeugten Dateien publicKey_encryption.jwk.json (öffentlicher Verschlüsselungschlüssel) und publicKey_signature_verification.jwk.json (öffenticher Signaturschlüssel) müssen anschließend im Self-Service-Portal hochgeladen werden.

Die Dateien privateKey_decryption.jwk.json (geheimer Entschlüsselungsschlüssel) und privateKey_signing.jwk.json (geheimer Signaturschlüssel) können in der an FIT-Connect angebundenen Software zur Entschlüsselung von Einreichungen und zur Signatur von Security-Event-Tokens genutzt werden.