Keine Werbung mögen? Gehen Werbefrei Heute

PDF-Signaturverifikation Was Entwicklern bekannt ist

Veröffentlicht am

Viele Entwickler stoßen auf signierte PDF-Dateien, ohne zu wissen, was die kryptographische Signatur tatsächlich garantiert. Hier finden Sie alles, was Sie wissen müssen, um ein PDF-Signatur-Prüfen korrekt durchzuführen.

PDF-Signaturverifikation: Was Entwicklern bekannt ist 1
ANZEIGE Entfernen?

Viele Entwickler haben mit signierten PDFs gearbeitet – einem signierten Vertrag, einem zertifizierten Bankauszug, einem staatlichen Formular. Doch „signiert“ bedeutet je nachdem, wer es fragt, etwas anderes. Der visuelle Zeichnung in der Signaturbox und der kryptografische Signatur, die im Datei-Format eingebettet ist, sind zwei völlig unterschiedliche Dinge. Nur einer von beiden garantiert tatsächlich etwas.

Dieser Leitfaden erklärt, wie digitale PDF-Signaturen funktionieren, was die verschiedenen Gültigkeitszustände bedeuten und wie diese programmatisch überprüft werden können.

Die Signatur, die Sie sehen, im Vergleich zur Signatur, die wichtig ist

Wenn jemand einen PDF mit einem Zeichnungs- oder Bildstempel „signiert“, legt er ein Bild einer Signatur auf die Seite. Es sieht offiziell aus, aber bietet keine Sicherheitsgarantie. Jeder kann das Bild an ein anderes Dokument kopieren.

Eine digitale Signatur ist anders. Sie ist ein kryptografisches Artefakt, das direkt in die PDF-Struktur eingebettet ist – unabhängig von jeglichen visuellen Elementen. Wenn ein Dokument digital signiert wird:

  1. Wird ein Hash des Dokumentinhalts berechnet.
  2. Dieser Hash wird mit dem privaten Schlüssel des Signierers verschlüsselt.
  3. Der verschlüsselte Hash (die Signatur) wird im PDF gespeichert, zusammen mit dem Zertifikatskette des Signierers.

Wenn die Signatur überprüft wird, wird sie mit dem öffentlichen Schlüssel aus dem Zertifikat entschlüsselt, der Hash des aktuellen Dokumentinhalts neu berechnet und mit dem ursprünglichen verglichen. Wenn sie übereinstimmt, wurde das Dokument seit der Signatur nicht geändert. Wenn sie nicht übereinstimmt – oder das Zertifikat nicht vertraut ist – ist die Signatur ungültig.

Die vier Gültigkeitszustände der Signatur

Nicht jede digitale Signatur ist gleich. Wenn Sie ein PDF-Verifikations-Prüfen durchführen, werden Sie einen der vier Zustände sehen:

SignaturzustandWas es bedeutetWas zu tun ist
GültigHash stimmt überein, Zertifikatskette ist vertrauenswürdig, Zertifikat war zum Zeitpunkt der Signatur aktivVertrauen Sie der Signatur – überprüfen Sie die Identität des Signierers gegenüber dem erwarteten Zertifikat
UngültigDer Dokumentinhalt wurde nach der Signatur geändert oder die Signaturdaten sind beschädigtLehnen Sie das Dokument ab; es wurde verändert oder ist falsch formatiert
UnbekanntDie Signaturstruktur ist intakt, aber das Zertifikat kann nicht verifiziert werden (unvertrauenswürdige Wurzel, fehlende OCSP usw.)Das Signaturvertrauen ist nicht möglich – fordern Sie eine erneute Signatur oder erhalten das vertrauenswürdige Wurzelzertifikat
RevokiertDas Zertifikat war zum Zeitpunkt der Ausstellung gültig, wurde aber später vom CA (z. B. durch Schlüsselverlust) widerrufenLehnen Sie es ab, es sei denn, die LTV-Daten belegen, dass das Zertifikat vor der Revokation gültig war

Der „Unbekannte“ Zustand verblödelt die meisten Entwickler. Ein strukturell korrektes, aber selbstsigniertes oder interne Unternehmenszertifikat zeigt in den meisten Tools als „Unbekannt“ an, da diese Tools den Aussteller nicht erreichen können. Bei internen Dokumentenprozessen können Sie explizit das Wurzelzertifikat vertrauen; bei Dokumenten von externen Parteien ist „Unbekannt“ nicht akzeptabel.

Langfristige Validierung (LTV): Warum Zeitstempel wichtig sind

Zertifikate verfallen. Wenn jemand ein Dokument vor fünf Jahren signiert hat und das Zertifikat seitdem abgelaufen ist, ist die Signatur dann noch gültig?

Es hängt von der Langfristigen Validierung (LTV) ab. Wenn LTV eingebettet ist, enthält das PDF:

  • Ein vom Zeitstempel-Autorität (TSA) ausgestelltes vertrauenswürdiges Zeitstempel
  • OCSP-Antworten oder CRL-Daten, die den Zertifikatzustand zum Zeitpunkt der Signatur bestätigen

Mit LTV können Sie nachweisen, dass das Zertifikat zum Zeitpunkt der Signatur gültig war – selbst nach Ablauf. Ohne LTV können Sie nur die Signatur gegen den aktuellen Zertifikatzustand überprüfen, was nach Ablauf oder Ausschaltung des OCSP-Responder nicht mehr möglich ist.

Für Verträge oder regulierten Dokumente mit langfristigen Aufbewahrungspflichten (7+ Jahre in vielen Rechtsgebieten) ist LTV nicht optional. Prüfen Sie immer auf LTV, wenn Sie Signaturverifikationsworkflows erstellen.

Programmatische Prüfung von PDF-Signaturen

Mit Python und pypdf

Der pypdf bibliothek bietet Zugriff auf PDF-Signaturfelder und deren unterliegende Metadaten. Hier ist ein minimaler Beispiel, um zu überprüfen, ob ein PDF digitale Signatur besitzt und deren Zustand zu lesen:

import sys
from pypdf import PdfReader

def check_pdf_signatures(path: str) -> None:
    reader = PdfReader(path)

    sig_fields = [
        name for name, field in (reader.get_fields() or {}).items()
        if field.get("/FT") == "/Sig"
    ]

    if not sig_fields:
        print("No digital signature fields found.")
        return

    print(f"Found {len(sig_fields)} signature field(s):")
    for name in sig_fields:
        sig_obj = reader.get_fields()[name]
        sig_dict = sig_obj.get("/V")
        if not sig_dict:
            print(f"  {name}: field present but unsigned")
            continue

        signer_name = sig_dict.get("/Name", "Unknown")
        signing_time = sig_dict.get("/M", "No timestamp")
        reason       = sig_dict.get("/Reason", "")
        location     = sig_dict.get("/Location", "")

        print(f"  {name}:")
        print(f"    Signer:   {signer_name}")
        print(f"    Time:     {signing_time}")
        if reason:
            print(f"    Reason:   {reason}")
        if location:
            print(f"    Location: {location}")

if __name__ == "__main__":
    check_pdf_signatures(sys.argv[1])

Dies liest die Signaturmetadaten direkt aus der PDF-Struktur. Für eine vollständige kryptografische Verifikation – die Hash-Prüfung und die Validierung der Zertifikatskette – verwenden Sie pyhanko oder endesive, beide von denen die PKCS#7-Verifikationsschicht umhüllt ist.

Mit qpdf an der Kommandozeile

Für schnelle Prüfung an der Kommandozeile ohne Python-Umgebung:

# Show encryption and signature info
qpdf --show-encryption input.pdf

# Full JSON output with signature details
qpdf --json input.pdf | python3 -m json.tool | grep -A 20 '"sig"'

qpdf ist nützlich in CI-Pipelines oder Shell-Skripten, wo die Einrichtung eines Python-Virtualenv unnötig aufwändig ist.

Häufige Prüfscenarien

Kundenverträge – Prüfen Sie sowohl den Gültigkeitszustand als auch den Zertifikatsemitter. Eine gültige Signatur aus einem unvertrauenswürdigen Wurzelzertifikat (selbstsigniertes Zertifikat) bietet keine externe Sicherheit. Sie vertrauen dem, der den Schlüssel generiert hat.

Regierung und regulatorische Dokumente – Diese verwenden typischerweise national vertrauenswürdige Zertifikatsbehörden. Stellen Sie sicher, dass die Zertifikatskette auf das erwartete Wurzel-Zertifikat abzielt, nicht nur, dass die Signatur als „gültig“ angezeigt wird.

Bankauszüge und Rechnungen – Viele werden in Batch mit Dokumentsignaturzertifikaten signiert, die einer Organisation ausgestellt wurden. Der Signierername spiegelt die Institution wider, nicht einen einzelnen Mitarbeiter.

Verifikation ohne Code zu schreiben

Wenn Sie schnell ein Dokument prüfen möchten, ohne eine Entwicklungsumgebung einzurichten, ist der IO Tools PDF-Signatur-Prüfer eine Lösung, mit der Sie eine Datei hochladen und sofort die Signaturdetails sehen können – nützlich für ein- oder mehrfache Prüfungen oder zum Testen von Beispieldateien vor der Einführung eines Produktionspipelines.

Möchten Sie werbefrei genießen? Werde noch heute werbefrei

Erweiterungen installieren

IO-Tools zu Ihrem Lieblingsbrowser hinzufügen für sofortigen Zugriff und schnellere Suche

Zu Chrome-Erweiterung Zu Kantenerweiterung Zu Firefox-Erweiterung Zu Opera-Erweiterung

Die Anzeigetafel ist eingetroffen!

Anzeigetafel ist eine unterhaltsame Möglichkeit, Ihre Spiele zu verfolgen. Alle Daten werden in Ihrem Browser gespeichert. Weitere Funktionen folgen in Kürze!

ANZEIGE Entfernen?
ANZEIGE Entfernen?
ANZEIGE Entfernen?

Nachrichtenecke mit technischen Highlights

Beteiligen Sie sich

Helfen Sie uns, weiterhin wertvolle kostenlose Tools bereitzustellen

Kauf mir einen Kaffee
ANZEIGE Entfernen?