PDF-iText7 Signatur Timestamp

Im vorherigen Artikel PDF-Signatur Timestamp habe ich Euch gezeigt, wie ein PDF-Dokument mit einem Zeitstempel versehen wird, zugleich haben wir das PDF-Dokument mit unserer eigenen digitalen Signatur versehen.

In diesem Artikel zeige ich Euch, wie Ihr die PDF-Signierung mit einem Java-Programm realisieren könnt. Wir nutzen hierfür das Programm bzw. Java-Bibliothek „iText 7“ und im Speziellen die Community-Version. Die Beschreibung zur Bibliothek ist auf der Anbieterseite „https://itextpdf.com/de/products/itext-7/itext-7-community“ zu finden, die neueste Version erreicht Ihr via GitHub-Bibliothek unter „https://github.com/itext/itext7“ – schaut in den „Release“-Bereich. Bitte beachtet, dass die Nutzung der Bibliothek und der damit entwickelten Programme unter der „GNU Affero General Public License Version 3“ steht!

Neben einiger iText7-Jar-Dateien benötigt Ihr noch zwei Bouncy Castle-Bibliotheken sowie zwei Jar-Dateien für den Logger, Ihr findet alle notwendigen Bibliotheken zusammen mit dem Programm i, GitHub-Archiv „https://github.com/java-crypto/Timestamping/tree/master/iText7_PDF-Signatur„.

Weiterhin braucht Ihr einen Keystore mit einem gültigen Zertifikat, entweder erstellt Ihr Euch einen eigenen Zertifikatespeicher oder Ihr nutzt den fertigen Keystore „Michael_Fehr.pfx“, welchen ich im o.g. GitHub-Archiv ebenfalls zum Download anbiete. Im Programm nutze ich meinen eigenen Keystore, bitte editiert ggfls. den Dateinamen, das Passwort sowie den Alias in den Zeilen 88-90.

Das Programm erzeugt zuerst eine Zwischendatei, bei der am Ende des PDF-Dokumentes eine leere Zeile eingefügt wird. Im zweiten Schritt wird auf diese neue Seite eine Signatur auf Basis des Zertifikates eingefügt und danach mit einem Zeitstempel versehen. Hier nun der Sourcecode und die wenigen Ausgabezeilen in der Konsole:

 

Hier noch zwei Screenshots aus einem PDF-Reader – zuerst die Signatur und dann das Ergebnis der Überprüfung:

Alle Quellcodes zu PDF-iText 7 Signatur Timestamp findet Ihr zum Download in meinem GitHub-Repository Timestamping, welches Ihr über diesen Link erreicht: https://github.com/java-crypto/Timestamping/tree/master/iText7_PDF-Signatur. Alle Programme sind unter Java 11 lauffähig (vermutlich auch unter Java 8) und wurden mit intelliJ IDEA entwickelt, welches für dieses Programm aber nicht notwendig ist.

Zur Nutzung der Programme benötigt Ihr diverse Bibliotheken – ladet Euch diese aus dem Unterordner „lib“ des oben genannten GitHub-Archives herunter und bindet Sie über Eure Entwicklungsumgebung ein.

Noch ein Wort zum Thema „Lizenz“: Das Programm steht unter unterschiedlichen Lizenzen, die Ihr bitte beachten solltet. Die wesentliche Lizenz für iText 7 ist eine „GNU Affero General Public License Version 3 Lizenz„.

Letzte Bearbeitung: 21.04.2020