Dokumentation zur Prüfung von Zertifikatsketten
Warum?
An verschiedenen Stellen müssen API-Clients Zertifikatsketten der verwendeten Zertifikate prüfen. Dafür fehlen in der Dokumentation aktuell noch Beschreibungen und an einigen Stellen konkrete Vorgaben.
Referenzen & Notizen
- https://docs.fitko.de/fit-connect/docs/sending/encrypt#certificateValidation
- Ergebnisse können für SDKs nachgenutzt werden
- Prüfung sollen nicht selbst implementiert werden, sondern es sollen etablierte Bibliotheken genutzt werden.
Notwendige Schritte, die dokumentiert werden müssen
Hinweis: Wird von Bibliothek übernommen.
- Abruf des zur Destination gehörenden JSON Web Keys
- Überprüfung, dass der JSON Web Key für die Verschlüsselung geeignet ist ("keyops": ["wrap_key"])
- Überprüfung, dass der JWK eine Schlüssellänge von mind. 4096 Bit aufweist.
- Überprüfung, dass der öffentliche Schlüssel mit dem im JSON Web Key hinterlegten Zertifikat übereinstimmt (Attribute n und e)
- Überprüfung, dass das Zertifikat aktuell gültig ist (Gültigkeitszeitpung)
- Überprüfung, dass das Zertifikat der Verwaltungs-PKI entstammt, d.h Überprüfung der Zertifikats-Kette bis zum Wurzelzertifikat (BSI)
- Überprüfung, dass das Zertifikat aktuell gültig ist (mittels Validierungsdienst, gegen eine Certificate Revocation List (CRL) und/oder einen OCSP-Endpunkt mit signierten Antworten)
Akzeptanzkriterien
-
Alle Vorgaben aus bestehender Dokumentation, insbesondere die oben genannten Schritte werden beachtet. -
Es gibt Codebeispiele für alle der oben genannten Teilschritte. -
Es existiert ein Beispiel einer nicht erfolgreichen Zertifikatsvalidierung (ungültiges Zertifikat). -
An allen Stellen der API-Dokumentation (bspw. Signaturprüfung), wo eine Zertifikatsprüfung notwendig ist, wird auf die Notwendigkeit bzw. Empfehlung einer Zertifikatskettenprüfung durch die API-Client hingewiesen und auf den Detailartikel verwiesen.
Umsetzungsschritte
-
Identifizierung von geeigneten Bibliotheken zur Umsetzung -
Prüfung in Code umsetzen (Python, Java vgl. #119 (closed)) -
Dokumentation anhand des Codes inkl. Erklärung (ggf. als Code-Kommentare)
Edited by Marco Holz