Problemen oplossen: handtekening- en tijdstempelfouten
Toepassingsgebied
Sectie met titel “Toepassingsgebied”Deze vermeldingen behandelen handtekeningfouten die worden opgeworpen via NextPDF\Exception\SignatureException en NextPDF\Security\Signature\Exception\SignatureLevelUnreachableException. Elke vermelding noemt de exacte factorymethode of klasse, zodat u de oorzaak op basis van het bericht en getContext() kunt bevestigen in plaats van afleiden.
Opmerking over formulering: de engine certificeert niet dat een handtekening geldig is of dat een document beschermd is. Hij rapporteert de fout die hij heeft gedetecteerd. Behandel elke oplossing als een stap om de gerapporteerde oorzaak weg te nemen.
Vermelding: PAdES-niveau “B-LT” of “B-LTA” kan niet worden geproduceerd
Sectie met titel “Vermelding: PAdES-niveau “B-LT” of “B-LTA” kan niet worden geproduceerd”- Symptoom.
SignatureExceptionmet een bericht dat eindigt opnextpdf/enterprise package is required for B-LT/B-LTA signatures. - Waarschijnlijke oorzaak. De provider voor langetermijnvalidatie ontbreekt. B-LT en B-LTA bevatten intrekkingsmateriaal en een archiveringstijdstempel, en die provider wordt geleverd in
nextpdf/enterprise. - Bewijs / diagnose. De factorymethode
SignatureException::ltvCapabilityMissing()produceert precies dit bericht.getContext()retourneertsignature_levelmet het niveau dat u hebt geprobeerd. - Oplossing.
- Installeer de provider door
composer require nextpdf/enterpriseuit te voeren. - Voer de ondertekenaanroep opnieuw uit.
- Als u de provider niet kunt installeren, vraag dan in plaats daarvan
B-BofB-Taan; die kan het core-pakket wel produceren.
- Installeer de provider door
- Gerelateerd. Exceptiereferentie.
Vermelding: handtekeningniveau is onbereikbaar en de aanroep wordt afgewezen
Sectie met titel “Vermelding: handtekeningniveau is onbereikbaar en de aanroep wordt afgewezen”- Symptoom.
SignatureLevelUnreachableExceptionmet een bericht in de vormPAdES level "<x>" is unreachable (highest achievable: "<y>"). - Waarschijnlijke oorzaak. Het gevraagde conformiteitsniveau vereist infrastructuur die op het moment van ondertekenen niet beschikbaar is, meestal een tijdstempelautoriteit voor B-T en hoger. De engine faalt veilig (fail closed): hij degradeert niet stilzwijgend en adverteert daarna geen hoger niveau.
- Bewijs / diagnose.
getContext()retourneertrequestedLevel,highestAchievableLevelenreason. Het veldreasonbenoemt de ontbrekende infrastructuur. Dit is de standaardinstelling voor fail-closed gedrag, geïntroduceerd om te voorkomen dat een document een niveau claimt waaraan het niet voldoet. - Oplossing.
- Lees het veld
reasonom de ontbrekende infrastructuur te identificeren. - Lever de ontbrekende component. Configureer bijvoorbeeld een tijdstempelautoriteit en voer de aanroep opnieuw uit.
- Om bewust een lager niveau te accepteren, geeft u
allowDegradation: truedoor aanPadesOrchestrator. De aanroep produceert danhighestAchievableLevelen rapporteert welk niveau is geproduceerd.
- Lees het veld
- Gerelateerd. Versleuteling en machtigingen.
Vermelding: de client voor de tijdstempelautoriteit is vereist maar ontbreekt
Sectie met titel “Vermelding: de client voor de tijdstempelautoriteit is vereist maar ontbreekt”- Symptoom.
SignatureExceptionmet een bericht dat eindigt opTSA client is required for level <x> but none was provided. - Waarschijnlijke oorzaak. Een aanvraag voor B-T, B-LT of B-LTA heeft een client voor een tijdstempelautoriteit nodig, maar de orchestrator heeft er geen.
- Bewijs / diagnose. De factorymethode
SignatureException::tsaRequired()produceert dit bericht;getContext()bevat het geprobeerdesignature_level. - Oplossing.
- Configureer een client voor een tijdstempelautoriteit en geef deze door aan de orchestrator.
- Voer de aanroep opnieuw uit.
- Om een niveau te produceren dat geen tijdstempel nodig heeft, vraagt u
B-Baan.
- Gerelateerd. Exceptiereferentie.
Vermelding: de endpoint-URL van de tijdstempelautoriteit is leeg
Sectie met titel “Vermelding: de endpoint-URL van de tijdstempelautoriteit is leeg”- Symptoom.
SignatureExceptionmet een bericht dat eindigt opTSA endpoint URL is empty. - Waarschijnlijke oorzaak. Een client voor een tijdstempelautoriteit is gemaakt met een lege endpoint-URL.
- Bewijs / diagnose. De factorymethode
SignatureException::tsaUrlEmpty()produceert dit bericht. Dit is een configuratiefout, geen netwerkstoring. - Oplossing.
- Stel een niet-lege endpoint-URL in op de client voor de tijdstempelautoriteit, zoals
https://timestamp.example.com/tsa. - Als het gevraagde niveau geen tijdstempeling vereist, verwijder dan in plaats daarvan de koppeling met de client voor de tijdstempelautoriteit.
- Voer de aanroep opnieuw uit.
- Stel een niet-lege endpoint-URL in op de client voor de tijdstempelautoriteit, zoals
- Gerelateerd. Exceptiereferentie.
Vermelding: de handtekening-placeholder ontbreekt in de buffer
Sectie met titel “Vermelding: de handtekening-placeholder ontbreekt in de buffer”- Symptoom.
SignatureExceptionmet een bericht dat eindigt opno /Contents <…> field found in PDF buffer (signature placeholder missing). - Waarschijnlijke oorzaak. De ondertekenfase ontving een buffer zonder gereserveerde handtekeningcontainer, waardoor er geen plek is om de handtekening te schrijven.
- Bewijs / diagnose. De factorymethode
SignatureException::signatureContentsNotFound()produceert dit bericht. - Oplossing.
- Zorg ervoor dat het handtekeningveld en de bijbehorende placeholder worden geschreven voordat de ondertekenfase wordt uitgevoerd.
- Voer de pijplijn opnieuw uit zodat de placeholder bestaat wanneer het ondertekenen begint.
- Gerelateerd. Exceptiereferentie.
Vermelding: intrekkingsstatus is onbekend (OCSP-responder weigerde)
Sectie met titel “Vermelding: intrekkingsstatus is onbekend (OCSP-responder weigerde)”- Symptoom.
SignatureExceptionmet een bericht dat eindigt opOCSP responder returned non-successful OCSPResponseStatus "<status>". - Waarschijnlijke oorzaak. De Online Certificate Status Protocol (OCSP)-responder retourneerde geen
successful-status en produceerde dus geen intrekkingsbewering. De engine volgt RFC 6960 §4.2.1, die hij in de broncode citeert: een gevulde response-body is alleen toegestaan voor de statussuccessful (0). De engine weigert een geweigerde response als positief vertrouwensresultaat te behandelen. - Bewijs / diagnose. De factorymethode
SignatureException::nonSuccessfulOcspResponseStatus()produceert dit bericht en noemt de gerapporteerde status, zoalstryLaterofinternalError. Een gereserveerde of onbekende statusbyte produceert in plaats daarvanSignatureException::reservedOcspResponseStatus(). - Oplossing.
- Identificeer de status in het bericht. Bij een tijdelijke status zoals
tryLaterkunt u het ophalen van de intrekking later opnieuw proberen. - Verifieer voor
unauthorizedofmalformedRequestde OCSP-aanvraag-URL en het certificaat dat de responder verwacht. - Onderdruk de fout niet om een B-LT- of B-LTA-artefact te verkrijgen; de intrekkingsbewering maakt deel uit van dat niveau.
- Identificeer de status in het bericht. Bij een tijdelijke status zoals
- Gerelateerd. Exceptiereferentie.
Vermelding: een vermelding in de certificaatketen kan niet worden gedecodeerd
Sectie met titel “Vermelding: een vermelding in de certificaatketen kan niet worden gedecodeerd”- Symptoom.
SignatureExceptionmet een bericht dat eindigt opfailed to base64-decode PEM body — input is not valid PEM. - Waarschijnlijke oorzaak. Een vermelding in de certificaatketen is geen geldige Privacy-Enhanced Mail (PEM), meestal door afkapping, een verdwaald teken of een binaire Distinguished Encoding Rules (DER)-blob die is aangeleverd waar PEM werd verwacht.
- Bewijs / diagnose. De factorymethode
SignatureException::pemDecodingFailed()produceert dit bericht tijdens het samenstellen van de keten. - Oplossing.
- Inspecteer elk certificaat in de keten op verdwaalde tekens of afkapping.
- Exporteer het betreffende certificaat opnieuw in PEM-indeling.
- Voer de ondertekenaanroep opnieuw uit.
- Gerelateerd. Versleuteling en machtigingen.
Vermelding: het type privésleutel komt niet overeen met het algoritme
Sectie met titel “Vermelding: het type privésleutel komt niet overeen met het algoritme”- Symptoom.
SignatureExceptionmet een bericht dat eindigt opexpected private key of type "<x>" for the configured algorithm but got "<y>". - Waarschijnlijke oorzaak. De geladen privésleutel komt niet overeen met het geconfigureerde handtekeningalgoritme, bijvoorbeeld wanneer een Rivest-Shamir-Adleman (RSA)-sleutel wordt gebruikt terwijl Elliptic Curve Digital Signature Algorithm (ECDSA) is geselecteerd.
- Bewijs / diagnose. De factorymethode
SignatureException::unexpectedKeyType()produceert dit bericht en noemt zowel de verwachte als de werkelijke sleutelklasse. - Oplossing.
- Verifieer dat het certificaat en het sleutelpaar overeenkomen met het algoritme dat u hebt geselecteerd.
- Wijzig de algoritmekeuze zodat deze overeenkomt met de sleutel, of laad de sleutel die overeenkomt met het algoritme.
- Voer de ondertekenaanroep opnieuw uit.
- Gerelateerd. Exceptiereferentie.
Vermelding: Ed25519-sleutel- of handtekeningmateriaal is misvormd
Sectie met titel “Vermelding: Ed25519-sleutel- of handtekeningmateriaal is misvormd”- Symptoom.
SignatureExceptionmet een staart die een Ed25519-lengtemismatch noemt — bijvoorbeeldEd25519 signature length <n> ≠ expected 64 bytes, ofEd25519 round-trip self-verify failed. - Waarschijnlijke oorzaak. De cryptografie-build van de runtime retourneerde sleutel- of handtekeningmateriaal met de verkeerde lengte, of een zojuist geproduceerde handtekening werd niet geverifieerd tegen zijn eigen openbare sleutel. De engine citeert RFC 8032 §3.4 in de broncode, die een losgekoppelde Ed25519-handtekening vastlegt op 64 bytes. De engine breekt af in plaats van materiaal uit te zenden dat hij niet zelf kan verifiëren.
- Bewijs / diagnose. De relevante factorymethodes zijn
SignatureException::ed25519SignatureMalformed(),::ed25519RoundTripVerifyFailed(),::ed25519KeyParseFailed(),::ed25519SeedInvalid(),::ed25519SecretKeyMalformed()en::ed25519PublicKeyInvalid(). Elk noemt de waargenomen lengte. - Oplossing.
- Installeer de libsodium PHP-extensie opnieuw; een uitgestripte of beschadigde build is de gedocumenteerde oorzaak van materiaal met de verkeerde lengte.
- Bevestig dat de sleutel een Ed25519-sleutel is en dat OpenSSL versie 1.1.1 of nieuwer is.
- Voer de ondertekenaanroep opnieuw uit.
- Gerelateerd. Exceptiereferentie.
Vermelding: de archiveringstijdstempel-dictionary is niet uitgeschreven
Sectie met titel “Vermelding: de archiveringstijdstempel-dictionary is niet uitgeschreven”- Symptoom.
SignatureExceptionmet een bericht dat eindigt opno /Type /DocTimeStamp dictionary was emitted into the PDF buffer. - Waarschijnlijke oorzaak. De B-LTA-archiveringslus liep, maar de documenttijdstempel-dictionary bereikte de buffer nooit. Het artefact zou een deels geschreven B-LTA zijn, dus de engine weigert het te retourneren.
- Bewijs / diagnose. De factorymethode
SignatureException::documentTimestampNotEmitted()produceert dit bericht. Deze postconditiefout wordt opgeworpen tijdens het finaliseren. - Oplossing.
- Behandel de uitvoer als verworpen; lever het gedeeltelijke artefact niet uit.
- Voer de B-LTA-pijplijn opnieuw uit met een bereikbare tijdstempelautoriteit.
- Als de fout zich blijft voordoen, leg dan
getContext()en de gekoppelde vorige exceptie vast voor een defectrapport.
- Gerelateerd. Exceptiereferentie.
Randgevallen en valkuilen
Sectie met titel “Randgevallen en valkuilen”- Deze factorymethodes stellen
cert_infoalleen in op een onderwerp of vingerafdruk wanneer die beschikbaar is; een leegcert_infois te verwachten bij mogelijkheid- en configuratiefouten. - Een aanvraag voor B-LT of B-LTA zonder een geconfigureerde Hypertext Transfer Protocol (HTTP)-client werpt
SignatureException::httpClientMissing()op; voor het ophalen van de intrekking is een PHP Standards Recommendation (PSR)-18-client nodig die aan de orchestrator wordt doorgegeven. - Een certificaat dat wordt ondersteund door een hardware security module (HSM) zonder ondertekenaarimplementatie werpt
SignatureException::hsmSignerMissing()op; koppel de ondertekenaar aan het certificaat vóór het ondertekenen.
Zie ook
Sectie met titel “Zie ook”Woordenlijst: PAdES-niveau · intrekkingsbewering