FIT-Connect Tools
Ablage einiger Skripte rund um FIT-Connect. Speziell im Kontext von
- JWK (JSON Web Key) nach RFC 7517
- JWKS (JSON Web Key Sets) nach RFC 7517, Sektion 5
Usage
- Python 3.10
- Poetry für Abhängigkeiten.
Die Installation der Abhängigkeiten läuft dann mit
$ poetry install --no-root
pkcs12ToJwk.py
Skript: 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ü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.
createSelfSignedJwks.py
Skript: 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 Verwaltungs-PKI benötigt wird.
getPubAndPrivKeysFromJwk.py
Skript: 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"
createSelfSignedX5ChainFromJwk.sh
Skript: 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