FIT-Connect Tools
Ablage für Tools und Dokumentation rund um FIT-Connect
Zur Verwaltung von Abhängigkeiten wird Poetry verwendet, dass vor der Nutzung der Skripte installiert werden muss.
Nach der Installation von Poetry können die nötigen Abhängigkeiten wie folgt installiert werden:
$ poetry install --no-root
pkcs12ToJwk.py
Beantragte Zertifikate aus der DOI-CA liegen zunächst als p12-Keystore (PKCS12) vor. Um die darin enthaltenen Zertifikate für die Hinterlegung im Self-Service-Portal/Zustelldienst nutzbar zu machen, müssen aus diesem Keystore entsprechende JSON Web Keys abgeleitet werden. Das Passwort für den Keystore wird aus der Umgebungsvariable "PKCS12_CONTAINER_PASS" gelesen. Sollte diese nicht gesetzt sein wird nach einem manuellen input gefragt.
Verwendung:
$ poetry run python ./pkcs12ToJwk.py -i "path/to/p12_file" -o "path/to/output_dir" --environment prod
Beispielaufruf:
$ poetry run python pkcs12ToJwk.py -i "Certificates/GRP_FITKO_Testzertifikat_FIT-Connect.p12" --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
In der Testumgebung können zu Testzwecken selbst-signierte Zertifikate genutzt werden. Das Script createSelfSignedJwks.py
erstellt zu diesem Zweck JSON Web Keys ohne dass ein Zertifikat aus der Verwaltungs-PKI benötigt wird.
Eine Erläuterung zum Skript createSelfSignedJwks.py
findet sich unter https://docs.fitko.de/fit-connect/docs/details/jwk-creation.
createPubAndPrivKeysFromJwk.py
Dieses skript erlaubt aus einem JWK den Publik und Private key zu extrahieren. Diese werden als .pem abgespeichert. Das Skript brauch als eingabe einen JWK (kein set!) und optional ein Verzeichnis für die Ausgabe. Es eignet sich dieses Skript über createSelfSignedX5cChainFromJwk.sh aufzurufen.
Verwendung:
$ python getPubAndPrivKeysFromJwk.py -i "path/to/jwk" -o "path/to/output_dir"
createSelfSignedX5cChainFromJwk.sh
Dieses Skript erweitert den ersten JWK in einem JWK set um eine x5c chain mit einem selbst signierten zertifikat. Um dieses Skript nutzen zu können müssen openssl, jq und sed installiert und von der Kommandozeile mittels "openssl" aufrufbar sein. Auch muss python mittels "python" aufgerufen werden können. Als eingabe wird ein pfad zu einem JWK set 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" Dieses Skript erstellt mehrere Dateien und ruft unter anderem das python skript "getPubAndPrivKeysFromJwk.py" auf.
Ausgabedateien:
- den extrahierten ersten JWK aus dem set
- den privaten schlüssel des JWKs im .pem format
- den öffentlichen schlüssel des JWKs im .pem format
- das selbst signierte Zertifikat im .pem format
- das JWK set mit hinzugefügter x5c chain
- das JWK set mit hinzugefügter x5c chain im base64 format
Verwendung:
$ ./createSelfSignedX5ChainFromJwk.sh "path/to/jwk_set.json" "path/to/output_dir"
Development
Adding license information
The reuse
tool is somewhat smart about filetypes but its nevertheless useful to check the resulting
comments / .license files for sanity.
pipx install reuse
reuse addheader -c "FIT-Connect contributors" -y 2022 -l EUPL-1.2 -y $(date '+%Y') FILENAME