Skip to content
Snippets Groups Projects

FIT-Connect Tools

Ablage einiger Skripte rund um FIT-Connect. Speziell im Kontext von

Usage

  • initialisiere die Git-Submodules:
$ git pull --ff-only
$ git submodule update --init --recursive
  • Python 3.10
  • Poetry für Abhängigkeiten.

Die Installation der Abhängigkeiten läuft dann mit

$ poetry install --no-root

Skript: pkcs12ToJwk.py

Beantragte Zertifikate aus der DOI-CA liegen zunächst als *.p12 Keystore (Format: PKCS12) vor. Um die enthaltenen Zertifikate für das Self-Service-Portal / Zustelldienst nutzbar zu machen, muss ein JWK abgeleitet werden.

Das Passwort für den Keystore wird aus der Umgebungsvariable PKCS12_CONTAINER_PASS gelesen. Sollte diese nicht gesetzt sein, wird das Passwort interaktiv abgefragt.

Example:

$ poetry run python pkcs12ToJwk.py -i "path/to/p12_file" -o "path/to/output_dir" --environment prod
Please enter the password for p12 keystore: ****************
Info: KeyUsage: Digital Signature, Non Repudiation, Key Encipherment
🔒 Wrote JWK representation of encryption public key (key_use=wrapKey) to publicKey_encryption.jwk.json
🔒 Wrote JWK representation of signature validation public key (key_use=verify) to publicKey_signature_verification.jwk.json
Please upload these keys when creating a destination in the self service portal.

🔒 Wrote JWK representation of decryption private key (key_use=unwrapKey) to privateKey_decryption.jwk.json
🔒 Wrote JWK representation of signing private key (key_use=sign) to 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üsselungsschlüssel) und publicKey_signature_verification.jwk.json (öffentlicher 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.

Skript: createSelfSignedJwks.py

In der Testumgebung können zu Testzwecken selbst-signierte Zertifikate genutzt werden. Das Skript erstellt zu diesem Zweck JWKS, ohne dass ein Zertifikat aus der Verwaltung-PKI benötigt wird.

Skript: getPubAndPrivKeysFromJwk.py

Erzeugt einen öffentlichen und einen privaten Schlüssel aus einem JWK. Diese werden als .pem abgespeichert.

Example:

$ poetry run python getPubAndPrivKeysFromJwk.py -i "path/to/jwk" -o "path/to/output_dir"

Skript: createSelfSignedX5ChainFromJwk.sh

Erweitert den ersten JWK in einem JWKS um eine Zertifikatskette (Attribut x5c) mit einem selbst-signierten Zertifikat. Um dieses Skript nutzen zu können müssen python, openssl, jq und sed installiert per CLI aufrufbar sein.

Als Eingabe wird ein Pfad zu einem JWKS und ein Pfad für die Ausgabedateien erwartet. Optional kann auch ein subject für das Zertifikat als drittes argument angegeben werden. Default: "/C=DE/O=TEST-PKI/CN=TEST-PCA20"

Ausgabedateien:

  • Ersten JWK aus dem JWKS
  • Privaten Schlüssel des JWKs im Format .pem
  • Öffentlichen Schlüssel des JWKs im Format .pem
  • Selbst-signiertes Zertifikat im Format .pem
  • JWKS mit Zertifikatskette (Attribut x5c)
  • JWKS mit Zertifikatskette (Attribut x5c) im Format Base64

Example:

$ ./createSelfSignedX5ChainFromJwk.sh "path/to/jwks.json" "path/to/output_dir"

Development

To do a dependency update:

$ poetry update

To check for outdated dependencies:

$ poetry run pip list -o