Diese Seite kann automatisch übersetzten Text enthalten.
Hinzufügen von Informationen zur langfristigen Validierung (PAdES-LTV) zu PDF-Signaturen in C# und VB.NET
Die langfristige Validierung (LTV) von PDF-Signaturen ermöglicht die Überprüfung digitaler Signaturen auch lange nach deren Erstellung. Ohne LTV kann eine digitale Signatur nicht mehr überprüft werden, sobald das Zertifikat des Unterzeichners abgelaufen ist oder die Widerrufsinformationen nicht mehr verfügbar sind. Das ist vor allem bei rechtlich oder finanziell relevanten PDF-Dokumenten inakzeptabel, die über Jahre hinweg vertrauenswürdig bleiben müssen.
Dieser Artikel besteht aus zwei Teilen: einem theoretischen und einem praktischen Abschnitt. Zuerst lernen Sie die Grundlagen von PAdES-LTV-Signaturen kennen. Anschließend erfahren Sie, wie Sie mit der Docotic.Pdf-Bibliothek LTV-Informationen in PDF-Signaturen mit C# einfügen. Die Bibliothek und einen kostenlosen, zeitlich begrenzten Lizenzschlüssel finden Sie auf der Seite Laden Sie die C# .NET PDF-Bibliothek herunter.
9.7.18373 15,244 bestanden NuGet-Downloads insgesamt 5,976,723PAdES – Fortschrittliche elektronische Signaturen für PDFs
Das Europäische Institut für Telekommunikationsnormen (ETSI) hat mehrere Standards für elektronische Signaturen veröffentlicht. Insbesondere definiert die Norm ETSI EN 319 142 den Standard für PDF Advanced Electronic Signatures (PAdES), der beschreibt, wie PDF-Signaturen den europäischen eIDAS-Vorschriften entsprechen können.
Der Kern von LTV-Signaturen besteht darin, prüfungsrelevante Informationen (Validation-Related Information, VRI) direkt in das PDF-Dokument einzubetten. So lassen sich Signaturen auch dann noch validieren, wenn die ursprüngliche Signierungsumgebung nicht mehr verfügbar ist.
Die Spezifikation ETSI EN 319 142-1 beschreibt vier Basisniveaus von PAdES-Signaturen: B-B, B-T, B-LT und B-LTA. Dieser Artikel konzentriert sich auf die Niveaus B-LT und B-LTA, da sie LTV-fähige Signaturen betreffen.
PAdES-B-B
Kurzfristige digitale PDF-Signaturen im Format ETSI.CAdES.detached
entsprechen diesem Niveau. Wie
Sie solche Signaturen erstellen, erfahren Sie im Artikel Signieren Sie PDF-Dokumente in C# und VB.NET.
PAdES-B-T
B-T-Signaturen müssen die Anforderungen von B-B erfüllen und zusätzlich einen Zeitstempel enthalten.
PAdES-B-LT
B-LT-Signaturen müssen dem B-T-Niveau entsprechen. Außerdem muss das PDF ein Document Security Store (DSS)-Wörterbuch mit folgenden Inhalten enthalten:
- Alle Zertifikate der Vertrauenskette
- Antworten des Online-Zertifikatsstatusprotokoll (OCSP)
- Zertifikatsperrlisten (CRLs)
Dieses Niveau entspricht den fortgeschrittenen elektronischen Signaturen.
PAdES-B-LTA
B-LTA-Signaturen müssen dem B-LT-Niveau entsprechen. Zusätzlich muss das PDF-Dokument eine Zeitstempel-Signatur und VRI für das Zertifikat des Zeitstempels enthalten.
Dieses Niveau entspricht den qualifizierten elektronischen Signaturen.
PAdES-Validierung
Eine Möglichkeit ist die Verwendung von Adobe Acrobat Pro oder Adobe Reader. Öffnen Sie das Signaturen-Bedienfeld und erweitern Sie eine digitale Signatur, um deren Status zu überprüfen. Wenn die Signatur gültig ist, erscheint entweder „Signatur unterstützt LTV“ oder „Signatur unterstützt LTV nicht und wird nach … ungültig“.
Eine weitere Möglichkeit ist die Nutzung des PAdES-Validators der Europäischen Kommission. Diese Methode eignet sich besonders gut für die Validierung eIDAS-konformer EU-Dokumente.
Es gibt auch den Signatures Conformance Checker der ETSI. Dieser Dienst richtet sich in erster Linie an Entwickler, die an Signier- oder Validierungswerkzeugen arbeiten.
Beachten Sie, dass diese Validatoren unterschiedliche Ergebnisse für dasselbe PDF-Dokument liefern können.
Erstellen von LTV-fähigen PDF-Signaturen in C# und VB.NET
Jetzt wird’s ernst: Zeit für etwas Code! Docotic.Pdf stellt die Methoden PdfDocument.AddLtvInfo zur Verfügung, um LTV-Informationen zu PDF-Signaturen hinzuzufügen. Um B-LTA-Signaturen zu erzeugen, benötigen Sie außerdem PdfDocument.TimestampAndSave, um PDF-Dokumente mit Zeitstempel zu speichern.
So erstellen Sie PAdES-B-LT-Signaturen in C#
Das Erstellen von B-LT-Signaturen erfolgt in drei Schritten:
- Eine B-T-Signatur erstellen und das Dokument speichern.
- Öffnen des signierten Dokuments und Hinzufügen von LTV-Informationen.
- Inkrementelles Speichern des finalen Dokuments.
Hier ist der C#-Code zur Erstellung von B-LT-Signaturen. Das vollständige Beispielprojekt LTV-fähige PDF-Signatur erstellen ist auf GitHub verfügbar:
// 1. Eine PAdES-B-T-Signatur erstellen
using var step1 = new MemoryStream();
using (var pdf = new PdfDocument())
{
var options = new PdfSigningOptions(..)
{
DigestAlgorithm = PdfDigestAlgorithm.Sha256,
Format = PdfSignatureFormat.CadesDetached,
};
options.Timestamp.AuthorityUrl = new Uri("http://timestamp.digicert.com");
pdf.SignAndSave(options, step1);
}
// 2. Öffnen des signierten Dokuments und Hinzufügen von LTV-Informationen
using (var pdf = new PdfDocument(step1))
{
pdf.AddLtvInfo();
// 3. Inkrementelles Speichern des finalen Dokuments
var incrementalOptions = new PdfSaveOptions()
{
WriteIncrementally = true,
};
pdf.Save("b-lt.pdf", incrementalOptions);
}
Einige wichtige Punkte sollten Sie beachten: Sie können PdfSigningOptions
mit einem
PKCS#12-Zertifikat (.pfx oder .p12) oder mit einem externen Signierer
erstellen. Unabhängig von der Methode muss für die PAdES-Konformität die Format
-Eigenschaft auf
PdfSignatureFormat.CadesDetached
gesetzt werden.
Im Codebeispiel wird http://timestamp.digicert.com
verwendet, aber Sie können auch eine andere
Zeitstempelbehörde (TSA) nutzen. Hier sind einige beliebte Alternativen:
http://timestamp.comodoca.com/rfc3161
http://timestamp.sectigo.com
http://timestamp.entrust.net/TSS/RFC3161sha2TS
http://rfc3161timestamp.globalsign.com/advanced
Um den ETSI-Spezifikationen zu entsprechen, sollten Sie eine eIDAS-zugelassene TSA verwenden. Eine passende finden Sie über den EU/EWR Trusted List Browser.
Das Zwischenspeichern des Dokuments nach dem ersten Schritt ist zwingend erforderlich. Sie müssen das Dokument signieren und speichern, bevor Sie LTV-Informationen hinzufügen. Es gibt jedoch eine Ausnahme von dieser Regel, die ich im Abschnitt PDF mit LTV zertifizieren weiter unten erläutere.
Die Zeile WriteIncrementally = true
im dritten Schritt ermöglicht das inkrementelle Speichern.
Inkrementelle Änderungen machen digitale Signaturen nicht ungültig. PDF-Dateien sollten beim
Hinzufügen von LTV-Informationen immer inkrementell gespeichert werden.
So erstellen Sie PAdES-B-LTA-Signaturen in C#
Generating B-LTA signatures is similar, except for step three. You should:
- Eine B-T-Signatur erstellen und das Dokument speichern.
- Öffnen des signierten Dokuments und Hinzufügen von LTV-Informationen.
- Speichern Sie das endgültige Dokument inkrementell mit einer Dokument-Zeitstempelsignatur.
Dieses Codebeispiel zeigt, wie man B-LTA-Signaturen in C# erstellt:
var timestampAuthorityUrl = new Uri("http://timestamp.digicert.com");
// 1. Eine PAdES-B-T-Signatur erstellen
using var step1 = new MemoryStream();
using (var pdf = new PdfDocument())
{
var options = new PdfSigningOptions(..)
{
DigestAlgorithm = PdfDigestAlgorithm.Sha256,
Format = PdfSignatureFormat.CadesDetached,
};
options.Timestamp.AuthorityUrl = timestampAuthorityUrl;
pdf.SignAndSave(options, step1);
}
// 2. Öffnen des signierten Dokuments und Hinzufügen von LTV-Informationen
using (var pdf = new PdfDocument(step1))
{
pdf.AddLtvInfo();
// 3. Speichern Sie das endgültige Dokument inkrementell mit einer Dokument-Zeitstempelsignatur
var timestampOptions = new PdfSignatureTimestampOptions
{
AuthorityUrl = timestampAuthorityUrl,
};
var incrementalOptions = new PdfSaveOptions()
{
WriteIncrementally = true,
};
pdf.TimestampAndSave(timestampOptions, "b-lta.pdf", incrementalOptions);
}
Das endgültige b-lta.pdf
-Dokument enthält zwei Signaturen – die Hauptsignatur aus Schritt eins
und die Zeitstempel-Signatur aus Schritt drei. Möglicherweise bemerken Sie, dass Adobe Acrobat für
beide Signaturen die Meldung „Signatur unterstützt LTV“ anzeigt. Wie ist es möglich, dass die
Zeitstempel-Signatur LTV-fähig ist, obwohl sie nach dem Aufruf von AddLtvInfo
erstellt wurde?
Der Schlüssel liegt darin, denselben
TSA
sowohl für den Signatur-Zeitstempel als auch für den Dokument-Zeitstempel zu verwenden. Die Methode
AddLtvInfo
fügt
VRI
für das Zeitstempel-Zertifikat hinzu. Der Dokument-Zeitstempel verwendet dann dasselbe Zertifikat
und nutzt die zugehörigen Daten wieder.
Sie können nicht denselben TSA für den Dokument-Zeitstempel verwenden? Ich werde diesen Fall im Abschnitt Konvertierung von PAdES-B-T zu B-LTA behandeln.
LTV-Informationen zu bestehenden PDF-Signaturen in C# und VB.NET hinzufügen
Bisher habe ich LTV-fähige Signaturen von Grund auf neu erstellt. Oft ist es jedoch notwendig, bestehende PAdES-B-T-Signaturen zu bearbeiten – zum Beispiel, um sie in B-LT oder B-LTA zu konvertieren oder um LTV-Daten zu aktualisieren.
Wie in den vorherigen Beispielen müssen Sie:
- Öffnen des signierten Dokuments und Hinzufügen von LTV-Informationen.
- Speichern Sie das endgültige Dokument inkrementell, mit oder ohne Dokument-Zeitstempelsignatur.
Hier sind die entsprechenden Codeausschnitte:
So konvertieren Sie PAdES-B-T-Signaturen in B-LT in C#
using var pdf = new PdfDocument("b-t.pdf");
pdf.AddLtvInfo();
var incrementalOptions = new PdfSaveOptions()
{
WriteIncrementally = true,
};
pdf.Save("b-lt.pdf", incrementalOptions);
So konvertieren Sie PAdES-B-T-Signaturen in B-LTA in C#
using var pdf = new PdfDocument("b-t.pdf");
pdf.AddLtvInfo();
var timestampOptions = new PdfSignatureTimestampOptions
{
AuthorityUrl = new Uri("http://timestamp.digicert.com"),
};
var incrementalOptions = new PdfSaveOptions()
{
WriteIncrementally = true,
};
pdf.TimestampAndSave(timestampOptions, "b-lta.pdf", incrementalOptions);
Laden Sie das vollständige Beispielprojekt LTV-Informationen zu vorhandenen Signaturen hinzufügen. auf GitHub herunter.
LTV-Informationen zu einer Zeitstempel-Signatur hinzufügen
Vorhandene B-T-Signaturen könnten einen beliebigen TSA verwenden, der sich von dem im Beispiel unterscheidet. In solchen Fällen zeigt Adobe Acrobat bei der Dokument-Zeitstempel-Signatur die Meldung „Signatur unterstützt LTV nicht“ an.
Wie kann man sie LTV-fähig machen? Sie müssen LTV-Informationen zur Zeitstempel-Signatur hinzufügen:
var timestampOptions = new PdfSignatureTimestampOptions
{
AuthorityUrl = new Uri("http://timestamp.digicert.com"),
};
var incrementalOptions = new PdfSaveOptions()
{
WriteIncrementally = true,
};
using var intermediate = new MemoryStream();
using (var pdf = new PdfDocument("b-t.pdf"))
{
pdf.AddLtvInfo();
pdf.TimestampAndSave(timestampOptions, intermediate, incrementalOptions);
}
// LTV-Informationen zur Dokument-Zeitstempel-Signatur hinzufügen
using (var pdf = new PdfDocument(intermediate))
{
pdf.AddLtvInfo();
pdf.TimestampAndSave(timestampOptions, "b-lta.pdf", incrementalOptions);
}
PDF mit LTV in C# und VB.NET zertifizieren
Digitale Signaturen in zertifizierten PDF-Dokumenten lassen keine Änderungen zu. PDF-Reader-Anwendungen zeigen solche Signaturen mit einem speziellen Symbol und einer Beschriftung „Zertifiziert von“ an.
Jegliche Änderungen an einem zertifizierten PDF machen die Signatur ungültig – das bedeutet, Sie können keine LTV-Informationen hinzufügen, ohne die Zertifizierung zu zerstören.
Docotic.Pdf bietet die Möglichkeit, zertifizierte PDF-Dokumente mit LTV zu erzeugen. Verwenden Sie die Überladung AddLtvInfo(PdfSigningOptions), um LTV-Daten während des Signierens hinzuzufügen. Dieses Codebeispiel demonstriert, wie man ein PDF mit einer B-LT-Signatur in C# zertifiziert:
using var pdf = new PdfDocument();
var options = new PdfSigningOptions(..)
{
DigestAlgorithm = PdfDigestAlgorithm.Sha256,
Format = PdfSignatureFormat.CadesDetached,
Type = PdfSignatureType.AuthorNoChanges,
};
options.Timestamp.AuthorityUrl = new Uri("http://timestamp.digicert.com");
pdf.AddLtvInfo(options);
pdf.SignAndSave(options, "certified-b-lt.pdf");
Erkunden Sie das Beispiel PDF mit LTV-Signaturen zertifizieren auf GitHub.
Stand Juni 2025 unterstützt Adobe Acrobat zertifizierte PDF-Dokumente mit B-LT-Signaturen, betrachtet aber B-LTA-Signaturen in solchen Dokumenten als ungültig.
Abschluss
Sie können LTV-Informationen zu PDF-Signaturen hinzufügen, um gesetzliche Konformität und langfristiges Vertrauen zu gewährleisten. Der PAdES-Standard definiert die Regeln und Konformitätsstufen für PDF-Signaturen.
Es wird empfohlen, mindestens PAdES-B-T-Signaturen zu verwenden. Diese können ohne Verlust der Gültigkeit in fortgeschrittene elektronische Signaturen (B-LT) oder qualifizierte elektronische Signaturen (B-LTA) umgewandelt werden.
Verwenden Sie die Docotic.Pdf-Bibliothek, um LTV-Informationen zu PDF-Signaturen in .NET-Anwendungen hinzuzufügen – sogar zertifizierte PDF-Dokumente sind möglich.
Entdecken Sie Codebeispiele für digitale Signaturen in PDF auf GitHub. Weitere Informationen finden Sie in verwandten Artikeln:
- Signieren Sie PDF-Dokumente in C# und VB.NET
- Überprüfen Sie die PDF-Signatur in C# und VB.NET
- PDF-Dokumente mit USB-Token und HSM-Geräten in C# und VB.NET signieren
Häufig gestellte Fragen
Wie vermeide ich die Meldung „Signaturgültigkeit ist unbekannt“ in Adobe Acrobat?
Adobe Acrobat zeigt diese Warnung, wenn es das Zertifikat des Unterzeichners nicht überprüfen kann. Gründe dafür sind: fehlendes, nicht vertrauenswürdiges, selbstsigniertes, widerrufenes, abgelaufenes oder noch nicht gültiges Zertifikat.
Besorgen Sie sich das richtige Zertifikat, um die Warnung zu vermeiden oder erstellen Sie EU-konforme (eIDAS) Dokumente.
Alternativ können Sie Zertifikate manuell unter „Vertrauenswürdige Zertifikate“ in Adobe Acrobat
hinzufügen: Menü > Voreinstellungen > Signaturen > Identitäten und vertrauenswürdige Zertifikate
Wenn Sie ein Zertifikat für zertifizierte Dokumente vertrauen müssen, stellen Sie sicher, dass die entsprechende Berechtigung aktiviert ist:
Wie überprüfe ich, ob eine PDF-Signatur LTV-fähig ist?
Verwenden Sie Adobe Reader oder den PAdES-Validator der Europäischen Kommission. Weitere Details finden Sie im Abschnitt PAdES-Validierung.
Warum zeigt Adobe Acrobat „Signatur unterstützt LTV nicht“ an?
Adobe Acrobat prüft Widerrufsinformationen im Rahmen der Signaturvalidierung. Wenn hierfür Daten heruntergeladen werden müssen, gilt die Signatur als nicht LTV-fähig.
Wie mache ich eine PDF-Signatur ETSI-konform?
Folgen Sie den Anforderungen an PDF-Fortgeschrittene Elektronische Signaturen. Verwenden Sie Zertifikate von Anbietern aus den Vertrauenslisten der EU (EUTL).
Wie erreiche ich den Hinweis „Signatur unterstützt LTV“ in Adobe Reader?
Zunächst muss die Signatur mindestens dem PAdES-B-T-Level entsprechen. Dann müssen LTV-Informationen hinzugefügt werden: alle Zertifikate der Vertrauenskette, OCSP und CRLs .
Die Abschnitte LTV-fähige PDF-Signatur erstellen und LTV-Informationen zu vorhandenen PDF-Signaturen hinzufügen erklären, wie das in C# und VB.NET funktioniert.
Wie aktiviere ich LTV für eine Zeitstempel-Signatur?
Der Prozess ist ähnlich wie bei regulären Signaturen. Sie müssen LTV-Daten im DSS -Wörterbuch der Dokument-Zeitstempel-Signatur hinterlegen.
Siehe Codebeispiel im Abschnitt LTV-Informationen zur Dokument-Zeitstempel-Signatur hinzufügen.
Ist es möglich, LTV und Zeitstempel in einem Vorgang durchzuführen?
Ja! Siehe Codebeispiel im Abschnitt Wie man PAdES-B-T-Signaturen zu B-LTA konvertiert.
Wie erstelle ich eine digitale Signatur mit LTV in C#?
Verwenden Sie die Docotic.Pdf-Bibliothek. Informationen zum Erstellen fortgeschrittener elektronischer Signaturen finden Sie in den Codebeispielen im Abschnitt Erstellen einer PAdES-B-LT-Signatur. Informationen zum Erstellen qualifizierter elektronischer Signaturen finden Sie im Abschnitt Erstellen einer PAdES-B-LTA-Signatur.
Wie aktiviere ich LTV für eine Signatur, wenn „keine Änderungen erlaubt“ sind?
Für zertifizierte Dokumente verlangt Adobe Acrobat, dass alle LTV-Daten bereits im ursprünglich signierten Dokument enthalten sind. Lesen Sie den Abschnitt PDF mit LTV zertifizieren für weitere Details.
Wie aktiviere ich die Langzeitvalidierung (LTV) beim externen Signieren von PDFs?
Verwenden Sie die Docotic.Pdf-Bibliothek, um PDF-Dokumente mit LTV mithilfe von USB-Token, Smartcards oder Cloud-basierten HSMs zu signieren. Lesen Sie den Artikel PDF-Dokumente mit USB-Token und HSM-Geräten in C# und VB.NET signieren und den Abschnitt So erstellen Sie eine PAdES-B-LT-Signatur.
Wie signiere ich ein PDF mit mehreren Signaturen und aktiviere LTV?
Kombinieren Sie die Beispiele Unterschreiben Sie ein PDF-Formular durch mehrere Personen und LTV-Informationen zu vorhandenen Signaturen hinzufügen..