Kostenloses digitales Signieren von Dokumenten unter Linux – eine Unmöglichkeit?

Zuerst veröffentlicht am 1. Dezember 2019 • Zuletzt verändert am 27. September 2026 • 6 Min. Lesezeit • 1.105 Wörter
Die ganze Geschichte begann, als ich versuchte, ein LibreOffice-Dokument zu unterschreiben.
Kostenloses digitales Signieren von Dokumenten unter Linux – eine Unmöglichkeit?
Bild von Michael Jeltsch

UPDATE: Nach dem Upgrade auf Ubuntu 26 kann PDF Studio Pro 2024 Dokumente nicht mehr mit einem „missbräuchlich verwendeten“ Let’s Encrypt-Zertifikat signieren, was höchstwahrscheinlich auf strengere Sicherheitsvorkehrungen in neueren Java-Versionen zurückzuführen ist. Es erscheint folgende Fehlermeldung:

JCE Provider does not support SHA hash algorithm

Sobald ich herausgefunden habe, wie sich das beheben lässt, werde ich diesen Beitrag erneut aktualisieren. Der Support des Anbieters hat so gut wie keine Ahnung, was hier vor sich geht. Ich habe das Gefühl, dass die E-Mails von denen mittlerweile von einer KI statt von echten Menschen verfasst werden.


Wenn man den Informationen im Internet Glauben schenkt, ist die Dokumentensignatur in LibreOffice integriert. Ich muss noch die Person finden, der es gelungen ist, ein LibreOffice-Dokument digital zu signieren. Diese Erfahrung zeigt, dass sich die meisten Menschen trotz Edward Snowden  nicht proaktiv um Sicherheit und Datenschutz kümmern. Debian hat scdaemon aus dem gnupg2-Paket entfernt, und wie üblich muss man ein Befehlszeilen-Ninja sein, um das Problem zu beheben. Der scdaemon bietet Smartcard-Unterstützung (die ich zwar nicht habe, aber ohne den scdaemon weigert sich der Kleopatra-Schlüsselmanager zu laufen). Ich verwende die Standardinstallation von Ubuntu 18.04, und es war eine ziemliche Odyssee, ein Dokument signieren zu lassen. Tatsächlich habe ich immer noch keine zufriedenstellende Methode dafür gefunden. Wie auch immer man es macht, irgendetwas stimmt nicht. Ubuntu 19.10 hat zumindest den Aufruf des Schlüsselmanagers aus LibreOffice behoben, und ich kann SeaHorse über den Dialog zur Dokumentensignatur aufrufen, aber ich habe immer noch keine Ahnung, wie ich meine GPG-Schlüssel für LibreOffice sichtbar machen kann. Hat das jemand herausgefunden? Bis mir jemand zeigt, wie man mit LibreOffice signiert, nutze ich die sehr gute, aber proprietäre Software PDFStudio  , um meine GPG-Schlüssel zu importieren und meine PDF-Dateien zu signieren.

Anbieter von elektronischen Unterschriftendiensten (DocuSign, HelloSign)

Was macht man also, wenn man z. B. eine PDF-Datei signieren muss und keine Möglichkeit hat oder kein Abonnement für einen Zertifikatsdienst zur Dokumentensignatur wie DocuSign  abschließen möchte? Selbst beim Budget-Tarif von DocuSign kostet eine einzelne digitale Signatur $2. DocuSign bietet eine 30-tägige kostenlose Testphase an, aber ich weiß nicht, ob die Zertifikate, die man während der Testphase erstellt, nach Ablauf der Testphase weiterhin gültig sind. HelloSign  , mittlerweile im Besitz von DropBox, bietet ebenfalls eine kostenlose Stufe an (mit der man 3 Dokumente pro Monat signieren kann) und fügt beim Signieren eine unsichtbare Signatur ein (die aus irgendeinem seltsamen Grund ungültig war, als ich sie getestet habe, obwohl HelloSign auf der Liste der von Adobe zugelassenen Zertifikatsaussteller steht).

Selbstsignierte Zertifikate, CAcert und StartSSL

Technisch gesehen kann man eigene Signaturen erstellen (selbstsignierte Zertifikate), doch wenn solche PDF-Dateien mit dem Acrobat Reader angezeigt werden, wird die Signatur als ungültig markiert und die Tatsache der Selbstsignierung wird angezeigt. Früher gab es CAcert  , aber meines Wissens nach haben alle Browser die CAcert-Zertifikate entfernt, und dasselbe gilt wahrscheinlich auch für den Acrobat Reader. StartSSL hat früher kostenlose Zertifikate ausgegeben, aber diese gibt es nicht mehr (das Unternehmen stand wegen seiner eigenen Sicherheitsprobleme unter erheblichem Druck).

Unterstützung durch PDF-Viewer

Interessanterweise ignorieren viele PDF-Viewer die Signatur ohnehin (z. B. zeigt der in Firefox integrierte PDF-Viewer gar nichts an). Andere PDF-Viewer zeigen die Signatur zwar an, weisen aber NICHT darauf hin, dass sie nicht vertrauenswürdig ist (z. B. der PDF-Viewer des Chrome-Browsers und der Standard-PDF-Viewer von Ubuntu, Evince). Da du keine Ahnung hast, welchen Viewer dein Zielpublikum zur Anzeige deiner signierten PDF-Datei verwenden wird, befindest du dich ohnehin in einer schwierigen Lage (selbst wenn du einen Dokumentensignaturdienst abonnierst).

Let’s Encrypt

Um das Vertrauen in die Signatur zu erhöhen, kann man ein Let’s Encrypt  -Zertifikat zum Signieren verwenden. Diese Signatur bescheinigt, dass der Autor des Dokuments die Kontrolle über eine bestimmte Website hat (in meinem Fall https://jeltsch.org ). Das ist mehr als ein selbstsigniertes Zertifikat (und wenn die Website als vertrauenswürdig gilt, ist dies wohl auch bedeutsamer als der Kauf eines Abonnements bei DocuSign), doch das zweckentfremdete Letsencrypt-Zertifikat wird von Adobe nicht als vertrauenswürdig eingestuft, da das Letsencrypt-Projekt offensichtlich nie für die Dokumentensignatur gedacht war („Die Identität des Unterzeichners ist unbekannt, da sie nicht in Ihrer Liste vertrauenswürdiger Zertifikate enthalten ist und keines ihrer übergeordneten Zertifikate ein vertrauenswürdiges Zertifikat ist“). Die maximale Gültigkeitsdauer eines solchen Zertifikats beträgt jedoch 3 Monate; danach wird es ungültig. Es kann zwar weiterhin verwendet werden, es wird jedoch angezeigt, dass es ungültig ist, da es abgelaufen ist (oder noch nicht gültig ist).

So missbraucht man das Let’s Encrypt-Zertifikat

Zunächst benötigst du einen Webserver, der Let’s Encrypt-Zertifikate zur Überprüfung der Website-Identität verwendet. Dies würde den Rahmen dieses Blogbeitrags sprengen, aber es gibt mehrere gute Anleitungen (z. B. von den Let’s Encrypt-Entwicklern selbst  oder von Digital Ocean  ). Sobald du deine Let’s Encrypt-Zertifikate hast, gehst du wie folgt vor, um sie zum Signieren von Dokumenten zu „missbrauchen“: Da Let’s Encrypt alle drei Monate eine Zertifikatserneuerung erfordert, befinden sich im selben Verzeichnis zahlreiche „fullchain.pem“- und „privkey.pem“-Dateien, die nummeriert sind. Du möchtest natürlich das neueste (das einzig gültige) Zertifikat verwenden und vielleicht auch das Let’s Encrypt-Zertifikat unmittelbar vor dem Export zum Signieren von Dokumenten erneuern:

certbot --apache --force-renewal -n -d jeltsch.org

oder, falls du alle Zertifikate erneuern möchtest:

certbot --apache --force-renewal

Wenn du dich dafür entscheidest, alle Zertifikate zu erneuern, versucht Certbot, ein einziges Zertifikat für alle auf deinem Server vorhandenen Domains auszustellen (diese Möglichkeit gab es zu Beginn des Let’s Encrypt-Ökosystems noch nicht, wurde aber später eingeführt). Wenn dein Server mehr als eine Domain bedient, musst du den Domainnamen manuell angeben, für den du das Zertifikat haben möchtest. Weitere Details zur Verwendung des Certbot-Skripts findest du hier: https://certbot.eff.org/docs/using.html#certbot-commands  . Dies ist der Befehl, der die Zertifikate in eine PKCS#12-Datei konvertiert:

openssl pkcs12 -export -out signing_certificat.p12 -in /etc/letsencrypt/archive/website-name/fullchain1.pem -inkey /etc/letsencrypt/archive/website-name/privkey1.pem

Die PKCS#12-Datei speichert das Zertifikat und den privaten Schlüssel in einer verschlüsselten Datei (mit der Dateiendung .p12). Daher fordert der Befehl dich zur Eingabe einer Passphrase auf, die du dir unbedingt merken musst, um das Zertifikat nutzen zu können. Anschließend kannst du die p12-Datei auf deinen Desktop-Computer übertragen und damit PDF-Dateien signieren.

Zeitstempel-Server

Wenn deine PDF-Anwendung nach einem Zeitstempel-Server fragt, kannst du einen der kostenlosen Dienste nutzen, z. B. https://ca.signFiles.com/TSAServer.aspx  oder https://doku.tid.dfn.de/de:dfnpki:zeitstempeldienst  . Allerdings werden auch diese Zeitstempel-Dienste von Adobe Acrobat nicht als vertrauenswürdig eingestuft.

Selbstsignierung von Zertifikaten

Hier die Befehle zum Erstellen eines selbstsignierten Zertifikats (es wird nach einer (vorläufigen) Passphrase gefragt; denk dir einfach etwas aus und merk es dir, Du benötigst es im zweiten Schritt):

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 3650

Umwandlung in ein Signaturzertifikat (du wirst zunächst nach der temporären Passphrase von oben und anschließend nach der endgültigen Passphrase gefragt, die du dir merken musst, um das Zertifikat nutzen zu können):

openssl pkcs12 -export -out signing_certificat.p12 -in cert.pem -inkey key.pem