Sorun giderme: imza ve zaman damgası hataları
Kapsam
“Kapsam” başlıklı bölümBu kayıtlar, NextPDF\Exception\SignatureException ve NextPDF\Security\Signature\Exception\SignatureLevelUnreachableException üzerinden bildirilen imza hatalarını kapsar. Her kayıt, tam fabrika yöntemini veya sınıfı belirtir; böylece nedeni çıkarımla tahmin etmek yerine iletiden ve getContext() çıktısından doğrulayabilirsiniz.
Terim kullanımı notu: motor, bir imzanın geçerli olduğunu veya bir belgenin korunduğunu onaylamaz. Yalnızca algıladığı hatayı bildirir. Her çözümü, bildirilen nedeni ortadan kaldırmaya yönelik bir adım olarak değerlendirin.
Kayıt: PAdES seviyesi “B-LT” veya “B-LTA” üretilemiyor
“Kayıt: PAdES seviyesi “B-LT” veya “B-LTA” üretilemiyor” başlıklı bölüm- Belirti.
SignatureException; ileti sonunextpdf/enterprise package is required for B-LT/B-LTA signatures. - Olası neden. Uzun vadeli doğrulama yeteneği sağlayıcısı eksik. B-LT ve B-LTA, iptal materyalini ve bir arşiv zaman damgasını gömer; bu sağlayıcı ise
nextpdf/enterpriseile dağıtılır. - Kanıt / tanılama.
SignatureException::ltvCapabilityMissing()fabrikası tam olarak bu iletiyi üretir.getContext(), denediğiniz seviyeye ayarlanmışsignature_leveldöndürür. - Çözüm.
- Sağlayıcıyı kurmak için
composer require nextpdf/enterprisekomutunu çalıştırın. - İmzalama çağrısını yeniden çalıştırın.
- Sağlayıcıyı kuramıyorsanız, bunun yerine core paketinin üretebildiği
B-BveyaB-Tisteyin.
- Sağlayıcıyı kurmak için
- İlgili. İstisna başvurusu.
Kayıt: imza seviyesine erişilemiyor ve çağrı reddediliyor
“Kayıt: imza seviyesine erişilemiyor ve çağrı reddediliyor” başlıklı bölüm- Belirti.
SignatureLevelUnreachableException; iletisi şu biçimdedir:PAdES level "<x>" is unreachable (highest achievable: "<y>"). - Olası neden. İstenen uyumluluk seviyesi, imzalama anında mevcut olmayan bir altyapı gerektirir; bu çoğunlukla B-T ve üzeri için bir zaman damgası yetkilisidir. Motor güvenli biçimde başarısız olur: sessizce daha düşük bir seviyeye geçip ardından daha yüksek seviyeyi bildirmez.
- Kanıt / tanılama.
getContext(),requestedLevel,highestAchievableLevelvereasondöndürür.reasonalanı altyapı eksikliğini tanımlar. Bu, karşılayamadığı bir seviyeyi öne süren bir belgeyi önlemek için getirilen, güvenli biçimde başarısız olan varsayılan davranıştır. - Çözüm.
- Eksik altyapıyı tanımlamak için
reasonalanını okuyun. - Eksik bileşeni sağlayın. Örneğin bir zaman damgası yetkilisi yapılandırın ve çağrıyı yeniden çalıştırın.
- Daha düşük bir seviyeyi bilerek kabul etmek için
allowDegradation: truedeğeriniPadesOrchestratorbileşenine geçirin. Çağrı bu durumdahighestAchievableLevelüretir ve ürettiği seviyeyi bildirir.
- Eksik altyapıyı tanımlamak için
- İlgili. Şifreleme ve izinler.
Kayıt: zaman damgası yetkilisi istemcisi gerekli ancak eksik
“Kayıt: zaman damgası yetkilisi istemcisi gerekli ancak eksik” başlıklı bölüm- Belirti.
SignatureException; ileti sonuTSA client is required for level <x> but none was provided. - Olası neden. Bir B-T, B-LT veya B-LTA isteği bir zaman damgası yetkilisi istemcisi gerektirir, ancak düzenleyicide böyle bir istemci yoktur.
- Kanıt / tanılama.
SignatureException::tsaRequired()fabrikası bu iletiyi üretir;getContext(), denenensignature_leveldeğerini taşır. - Çözüm.
- Bir zaman damgası yetkilisi istemcisi yapılandırın ve düzenleyiciye geçirin.
- Çağrıyı yeniden çalıştırın.
- Zaman damgası gerektirmeyen bir seviye üretmek için
B-Bisteyin.
- İlgili. İstisna başvurusu.
Kayıt: zaman damgası yetkilisi uç nokta URL’si boş
“Kayıt: zaman damgası yetkilisi uç nokta URL’si boş” başlıklı bölüm- Belirti.
SignatureException; ileti sonuTSA endpoint URL is empty. - Olası neden. Zaman damgası yetkilisi istemcisi boş bir uç nokta URL’siyle oluşturuldu.
- Kanıt / tanılama.
SignatureException::tsaUrlEmpty()fabrikası bu iletiyi üretir. Bu, bir ağ hatası değil, bir yapılandırma kusurudur. - Çözüm.
- Zaman damgası yetkilisi istemcisine, örneğin
https://timestamp.example.com/tsagibi boş olmayan bir uç nokta URL’si ayarlayın. - İstenen seviye zaman damgalama gerektirmiyorsa, bunun yerine zaman damgası yetkilisi istemcisinin bağlantısını kaldırın.
- Çağrıyı yeniden çalıştırın.
- Zaman damgası yetkilisi istemcisine, örneğin
- İlgili. İstisna başvurusu.
Kayıt: imza yer tutucusu arabellekte eksik
“Kayıt: imza yer tutucusu arabellekte eksik” başlıklı bölüm- Belirti.
SignatureException; ileti sonuno /Contents <…> field found in PDF buffer (signature placeholder missing). - Olası neden. İmzalama aşaması, ayrılmış imza kapsayıcısı bulunmayan bir arabellek aldı; bu nedenle imzayı yazabileceği bir yer yok.
- Kanıt / tanılama.
SignatureException::signatureContentsNotFound()fabrikası bu iletiyi üretir. - Çözüm.
- İmza alanının ve yer tutucusunun, imzalama aşaması çalışmadan önce yazıldığından emin olun.
- İmzalama başladığında yer tutucu var olacak şekilde işlem hattını yeniden çalıştırın.
- İlgili. İstisna başvurusu.
Kayıt: iptal durumu bilinmiyor (OCSP yanıtlayıcısı reddetti)
“Kayıt: iptal durumu bilinmiyor (OCSP yanıtlayıcısı reddetti)” başlıklı bölüm- Belirti.
SignatureException; ileti sonuOCSP responder returned non-successful OCSPResponseStatus "<status>". - Olası neden. Çevrimiçi Sertifika Durumu Protokolü (OCSP) yanıtlayıcısı
successfuldurumu döndürmedi; bu nedenle herhangi bir iptal beyanı üretmedi. Motor, kaynakta alıntıladığı RFC 6960 §4.2.1 kuralını izler: dolu bir yanıt gövdesine yalnızcasuccessful (0)durumu için izin verilir. Motor, reddedilen bir yanıtı güven açısından olumlu bir sonuç olarak ele almayı reddeder. - Kanıt / tanılama.
SignatureException::nonSuccessfulOcspResponseStatus()fabrikası bu iletiyi üretir ve bildirilen durumu, örneğintryLaterveyainternalErrordeğerini adlandırır. Ayrılmış veya bilinmeyen bir durum baytı söz konusuysa bunun yerineSignatureException::reservedOcspResponseStatus()üretir. - Çözüm.
- İletideki durumu tanımlayın.
tryLatergibi geçici bir durum için iptal getirme işlemini daha sonra yeniden deneyin. - Şu durumlar için —
unauthorizedveyamalformedRequest— OCSP istek URL’sini ve yanıtlayıcının beklediği sertifikayı doğrulayın. - Bir B-LT veya B-LTA yapıtı elde etme hatasını bastırmayın; iptal beyanı o seviyenin bir parçasıdır.
- İletideki durumu tanımlayın.
- İlgili. İstisna başvurusu.
Kayıt: sertifika zinciri girişi çözülemiyor
“Kayıt: sertifika zinciri girişi çözülemiyor” başlıklı bölüm- Belirti.
SignatureException; ileti sonufailed to base64-decode PEM body — input is not valid PEM. - Olası neden. Bir sertifika zinciri girişi geçerli Privacy-Enhanced Mail (PEM) değildir; bu genellikle kısaltma, başıboş bir karakter veya PEM beklenen yerde sağlanan ikili bir Distinguished Encoding Rules (DER) blobu nedeniyle olur.
- Kanıt / tanılama.
SignatureException::pemDecodingFailed()fabrikası bu iletiyi zincir oluşturma sırasında üretir. - Çözüm.
- Her zincir sertifikasını başıboş karakterler veya kısalma açısından inceleyin.
- Etkilenen sertifikayı PEM biçiminde yeniden dışa aktarın.
- İmzalama çağrısını yeniden çalıştırın.
- İlgili. Şifreleme ve izinler.
Kayıt: özel anahtar türü algoritmayla eşleşmiyor
“Kayıt: özel anahtar türü algoritmayla eşleşmiyor” başlıklı bölüm- Belirti.
SignatureException; ileti sonuexpected private key of type "<x>" for the configured algorithm but got "<y>". - Olası neden. Yüklenen özel anahtar, yapılandırılmış imza algoritmasıyla eşleşmiyor; örneğin Elliptic Curve Digital Signature Algorithm (ECDSA) seçiliyken bir Rivest-Shamir-Adleman (RSA) anahtarı kullanılmış olabilir.
- Kanıt / tanılama.
SignatureException::unexpectedKeyType()fabrikası bu iletiyi üretir ve hem beklenen hem de gerçek anahtar sınıfını adlandırır. - Çözüm.
- Sertifikanın ve anahtar çiftinin seçtiğiniz algoritmayla eşleştiğini doğrulayın.
- Algoritma seçimini anahtarla eşleşecek şekilde değiştirin veya algoritmayla eşleşen anahtarı yükleyin.
- İmzalama çağrısını yeniden çalıştırın.
- İlgili. İstisna başvurusu.
Kayıt: Ed25519 anahtarı veya imza materyali bozuk
“Kayıt: Ed25519 anahtarı veya imza materyali bozuk” başlıklı bölüm- Belirti. Bir Ed25519 uzunluk uyuşmazlığını adlandıran bir ileti sonuyla
SignatureException— örneğinEd25519 signature length <n> ≠ expected 64 bytesya daEd25519 round-trip self-verify failed. - Olası neden. Çalışma zamanı kriptografi yapısı yanlış uzunlukta anahtar veya imza materyali döndürdü ya da yeni üretilen bir imza kendi açık anahtarına göre doğrulanamadı. Motor, kaynakta RFC 8032 §3.4 kuralını alıntılar; bu kural, ayrık bir Ed25519 imzasını 64 baytta sabitler. Motor, kendi kendine doğrulayamadığı materyali yaymak yerine işlemi iptal eder.
- Kanıt / tanılama. İlgili fabrikalar şunlardır:
SignatureException::ed25519SignatureMalformed(),::ed25519RoundTripVerifyFailed(),::ed25519KeyParseFailed(),::ed25519SeedInvalid(),::ed25519SecretKeyMalformed()ve::ed25519PublicKeyInvalid(). Her biri gözlemlenen uzunluğu adlandırır. - Çözüm.
- libsodium PHP uzantısını yeniden kurun; soyulmuş veya bozuk bir yapı, yanlış uzunluktaki materyalin belgelenen nedenidir.
- Anahtarın bir Ed25519 anahtarı olduğunu ve OpenSSL’in 1.1.1 veya daha yeni olduğunu doğrulayın.
- İmzalama çağrısını yeniden çalıştırın.
- İlgili. İstisna başvurusu.
Kayıt: arşiv zaman damgası sözlüğü yayılmadı
“Kayıt: arşiv zaman damgası sözlüğü yayılmadı” başlıklı bölüm- Belirti.
SignatureException; ileti sonuno /Type /DocTimeStamp dictionary was emitted into the PDF buffer. - Olası neden. B-LTA arşivleme döngüsü çalıştı, ancak belge zaman damgası sözlüğü arabelleğe hiç ulaşmadı. Yapıt yarım yazılmış bir B-LTA olacağından, motor onu döndürmeyi reddeder.
- Kanıt / tanılama.
SignatureException::documentTimestampNotEmitted()fabrikası bu iletiyi üretir. Bu son koşul hatası, sonlandırma anında bildirilir. - Çözüm.
- Çıktıyı atılmış olarak değerlendirin; kısmi yapıtı dağıtmayın.
- Erişilebilir bir zaman damgası yetkilisiyle B-LTA işlem hattını yeniden çalıştırın.
- Hata yinelenirse, bir kusur raporu için
getContext()çıktısını ve zincirlenmiş önceki istisnayı yakalayın.
- İlgili. İstisna başvurusu.
Uç durumlar ve dikkat edilmesi gerekenler
“Uç durumlar ve dikkat edilmesi gerekenler” başlıklı bölüm- Bu fabrikalar,
cert_infodeğerini yalnızca bir konu veya parmak izi mevcut olduğunda ayarlar; yetenek ve yapılandırma hataları için boş bircert_infobeklenir. - Yapılandırılmış bir Hypertext Transfer Protocol (HTTP) istemcisi olmadan yapılan bir B-LT veya B-LTA isteği
SignatureException::httpClientMissing()bildirir; iptal getirme işlemi, düzenleyiciye geçirilen bir PHP Standards Recommendation (PSR)-18 istemcisi gerektirir. - İmzalayıcı uygulaması olmayan, donanım güvenlik modülü (HSM) tarafından desteklenen bir sertifika
SignatureException::hsmSignerMissing()bildirir; imzalamadan önce imzalayıcıyı sertifikaya bağlayın.
Ayrıca bkz.
“Ayrıca bkz.” başlıklı bölümSözlük: PAdES seviyesi · iptal beyanı