Förderjahr 2021 / Projekt Call #16 / ProjektID: 5822 / Projekt: open-pdf-sign
Für uns war es von Anfang an wichtig, dass unsere Open source Software, schlussendlich auch sehr einfach und schnell verwendet werden kann. Nur so, unseren Gedanken nach, kann sie sich schnell verbreiten und praktisch zum Einsatz kommen.
Genau das ist auch unser Ziel, jedes sollte PDF signiert sein. Darum wollten wir direkt dort ansetzen, wo es sich am ehesten anbietet, PDFs zu signieren, nämlich am Webserver. Erstens ist dieser fast immer nur mit SSL erreichbar, es existieren also schon Zertifikate, die wir verwenden können, die Konfiguration des Webservers liefert uns genauere Informationen zu den verwendeten Dateien. Zweitens sind diese Zertifikate bereits einer Domain zugeordnet und drittens werden die meisten PDFs ursprünglich über Webserver dem Endnutzer zum Download zur Verfügung gestellt. Wir haben also an dieser Stelle alle Teile die wir für eine Signatur benötigen: Die zu signierenden PDFs, Informationen zur Domain, auf der diese zum Download bereitgestellt werden, und die Schlüsselpaare, um eine Signatur durchführen zu können.
Hinsichtlich der Serverauswahl haben wir in unserer Recherche herausgefunden, dass der Webserver NGINX mit 34 % Marktanteil die größte Verbreitung hat. Direkt dahinter folgt der Apache-Webserver mit 31%. (Quelle: https://news.netcraft.com/archives/2022/08/26/august-2022-web-server-survey.html)
Wenn wir beide Server unterstützen, könnten wir mit open-pdf-sign somit über zwei Drittel des Internetverkehrs abdecken. Das würde es uns ermöglichen, einen großen Teil aller PDFs im Internet zu signieren. Für weitere Server und weniger verbreitete Systeme stünde dann ohnehin unser dokumentierter Quellcode zur Verfügung, der es interessierten Entwicklern und der Community ermöglicht, open-pdf-sign auch auf solchen Servern zu unterstützen.
Unser Vorbild für die Vorgangsweise hier ist LetsEncrypt die mit ihrem einfach Installer den komplizierten Prozess ein Zertifikat zu bekommen, um eine Website mit SSL abzusichern, revolutioniert haben. Sowohl Installer als auch die Ausstellung von Zertifikaten sind bei LetsEncrypt nicht nur sehr einfach, sondern insbesondere auch kostenlos.
Das ist auch der Grund, warum sich unser Subprojekt, der Open-pdf-sign Installer sehr stark an das LetsEncrypt-Pendant "Certbot" anlehnen sollte. Zum Glück ist Certbot auch Open Source und mit MIT-Lizenz versehen. Dies hat es uns erlaubt, auf die Vorarbeit dieses Projekts aufzubauen, anstatt beispielsweise eigene Parser programmieren zu müssen.
Dennoch hat sich herausgestellt, dass die Implementierung schwieriger als gedacht war. Wir ziehen darum einmal mehr den Hut vor dem "Certbot"-Entwicklerteam, das eine sehr große Anzahl an Webservern und eine automatische Installation unterstützt. Das archaische Format von NGINX, die sehr wenigen Tools und die schlechte Dokumentation haben die Implementierung leider um einiges verzögert. Schlussendlich haben wir es aber dennoch geschafft und wir befinden uns nun endlich im Endspurt zu unserem anfangs gesetzten Ziel: Dem zur Verfügung stellen einer Lösung, die das Signieren von PDFs so einfach gestaltet, dass einem schlicht weg die Ausreden fehlen.