SDK: Nach Zertifikatwechsel im SSP stoppt die Verarbeitung von SETs/Destination-Signatures mit einem Zertifikatsfehler
Description of the bug:
Das Zertifikat im SSP ist abgelaufen und wurde durch ein neues ersetzt. Im Routingdienst hinterlegte Adressierungsinformationen sind nun mit einem abgelaufenen Zertifikat signiert und ein Abruf der Routinginformationen mit dem SDK führt zu einem Abbruch, da der JWKValidator einen Fehler meldet.
11:51:10.574 [main] INFO d.n.i.z.f.sender.FitconnectTests Teste PROD Eintrag
11:51:10.858 [main] INFO d.f.f.c.h.i.ApiRequestInterceptor Received response 200 for GET on https://routing-api-prod.fit-connect.fitko.net/v1/routes?leikaKey=99107009017000&ars=084265003128&offset=0&limit=100 in 282,6ms
11:51:10.992 [main] INFO d.f.f.c.h.i.ApiRequestInterceptor Received response 200 for GET on https://portal.auth-prod.fit-connect.fitko.net/.well-known/jwks.json in 121,8ms
11:51:11.005 [main] INFO d.f.f.c.v.DefaultValidationService Validating public key with x5c certificate chain checks
11:51:11.006 [main] ERROR d.f.f.jwkvalidator.x5c.X5CValidator JWK with id _2Cfrq7v0vr_hsF_eXWn58imhHqa_LjIBC4z72qwxAc-verify failed because certificate expired: NotAfter: Tue Mar 11 00:59:59 CET 2025
11:51:11.007 [main] ERROR d.f.f.jwkvalidator.JWKValidator JWK with id _2Cfrq7v0vr_hsF_eXWn58imhHqa_LjIBC4z72qwxAc-verify has an invalid X5C with error
Public signature key is invalid: Public signature key is not valid
Im Prinzip ist die Fehlermeldung des JWKValidators korrekt, da das Zertifikat heute nicht mehr gültig ist, jedoch zum Zeitpunkt der Signatur der Daten war das Zertifikat noch nicht abgelaufen.
Current behavior:
Versucht ein Onlinedienst einen Antrag an einen Zustellpunkt zuzustellen, den es über die Routing-API ermittelt und dessen Adressierungsinformationen mit einem in der Vergangenheit gültigen Zertifikat signiert wurden, wird die Zustellung wegen eines Zertifikatsfehlers abgebrochen. Ein Absenden von Anträgen ist somit nicht mehr möglich.
Expected behavior:
Eine Zustellung von Anträgen soll auch dann zuverlässig erfolgen, wenn die Adressierungsinformationen für die Zustellung mit einem zum entsprechenden Zeitpunkt gültigem Zertifikat signiert wurden, auch wenn dieser in der Vergangenheit liegt.
Environments:
STAGE, PROD
Additional Information:
Dependency / relationship to other issues:
Die SDKs nutzen den JWKValidator, um die Gültigkeit von Zertifikaten zu überprüfen. Damit eine Prüfung einer Signatur, die in der Vergangenheit, mit einem zu dem Zeitpunkt der Erstellung gültigem Zertifikat, erfolgreich ist, soll der JWKValidator eine neue Methode erhalten (#2971) . Diese neue Methode erlaubt es dem SDK, ein Prüfdatum mitzugeben, zu dem die Gültigkeit des Zertifikats geprüft werden soll.
Das SDK kann beispielsweise das Datum aus dem IAT der Destination-Signature oder des SETs entnehmen. Als Default wird der JWKValidator das aktuelle Datum nehmen, wenn kein Prüfdatum übergeben wird.
Responsible person / team:
Contact persons including contact details:
Screenshots / Logs / Requests:
11:51:10.574 [main] INFO d.n.i.z.f.sender.FitconnectTests Teste PROD Eintrag
11:51:10.858 [main] INFO d.f.f.c.h.i.ApiRequestInterceptor Received response 200 for GET on https://routing-api-prod.fit-connect.fitko.net/v1/routes?leikaKey=99107009017000&ars=084265003128&offset=0&limit=100 in 282,6ms
11:51:10.992 [main] INFO d.f.f.c.h.i.ApiRequestInterceptor Received response 200 for GET on https://portal.auth-prod.fit-connect.fitko.net/.well-known/jwks.json in 121,8ms
11:51:11.005 [main] INFO d.f.f.c.v.DefaultValidationService Validating public key with x5c certificate chain checks
11:51:11.006 [main] ERROR d.f.f.jwkvalidator.x5c.X5CValidator JWK with id _2Cfrq7v0vr_hsF_eXWn58imhHqa_LjIBC4z72qwxAc-verify failed because certificate expired: NotAfter: Tue Mar 11 00:59:59 CET 2025
11:51:11.007 [main] ERROR d.f.f.jwkvalidator.JWKValidator JWK with id _2Cfrq7v0vr_hsF_eXWn58imhHqa_LjIBC4z72qwxAc-verify has an invalid X5C with error
Public signature key is invalid: Public signature key is not valid
Checklist:
- Add Severity label
- Add team label
- Related/affected issues/stories/epics linked and explained in the bug issue
- Creation of an automated test
- Bugfix deployed on DEV
- Bugfix tested on DEV
- Bugfix deployed on TEST
- Bugfix tested on TEST (possibly also by the connection project itself)
- Successful fix reported to Team Operations (Teams channel)
- Bugfix deployed on STAGE
- Bugfix tested on STAGE if necessary
- Bugfix deployed on PROD
- Bugfix tested on PROD (possibly also by the connection project itself)
- Final communication by Team Operations if necessary
- Internal documentation was checked and updated if necessary
- External documentation has been checked and updated if necessary
- Updated changelog if necessary