JTL-Wawi PDF-Rechnungen automatisch signieren
Ziel dieses Artikels ist es Ihnen zu zeigen wie Rechnungen im PDF-Format in JTL-Wawi elektronisch unterzeichnet werden und dafür zu sorgen, dass diese Dokumente nicht verändert werden können, ohne ihre digitale Signatur zu verlieren. Damit werden auch die gesetzlichen Vorgaben für den elektronischen Rechnungsversand voll erfüllt.
In JTL-Wawi gibt es zwei Möglichkeiten PDF-Dokumente digital zu signieren:
- Möglichkeit 1 ist, dass Sie dafür das Signaturportal verwenden.
- Möglichkeit 2 ist, dass Sie dafür ein externes Tool verwenden.
Möglichkeit 2 hat den Vorteil, dass Sie ihr eigenes Zertifikat verwenden können und die Kosten für das Signaturportal einsparen. Nachteil der Lösung zwei ist, dass Sie für die Sicherheit Ihres Zertifikats selbst verantwortlich sind und eine Menge an Vorarbeiten und Einstellungen vornehmen müssen, bis JTL-Wawi PDF-Rechnungen digital signiert.
Darüber hinaus haben wir in in einem gesonderten Artikel erklärt wie man in der JTL-Wawi Rechnungen automatisch verschicken kann.
Links:
X Certificate and Keymanagement:
https://sourceforge.net/projects/xca/
PortableSigner:
https://sourceforge.net/projects/portablesigner/files/portablesigner/2.0-Release/
Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files 7:
https://www.oracle.com/technetwork/java/javase/downloads/index.html
Installation von X Certificate and Key management
Im ersten Schritt landen Sie sich X Certificate and Key management herunter und installieren die Software auf dem zentralen PC der die JTL-Wawi Datenbank bereitstellt. Starten Sie die setup_xca-0.9.3.exe mit einem Doppelklick.
Wählen Sie als Sprache „Deutsch“ aus und klicken Sie auf „OK“.
Akzeptieren Sie das Lizenzabkommen mit einem Klick auf den Button „Annehmen“.
Alle Komponenten auswählen und auf „Weiter“ klicken.
Belassen Sie die Einstellungen für das Zielverzeichnis wie sie sind und klicken Sie auf „Installieren“.
Schließen Sie die Installation mit einem Klick auf „Fertig stellen“ ab.
Nach der Installation der Software haben wir eine eigene Zertifizierungsstelle eingerichtet mit der wir Zertifikate für unser Unternehmen erstellen können. Im nächsten Schritt müssen wir nun ein sogenanntes Root Zertifikat erstellen, auf dem dann die anderen Zertifikate, die wir ausstellen basieren.Root Zertifikat erstellen
Starten Sie also aus dem Startmenü heraus X Certificate and Key management.
Als erstes müssen wir eine neue Datenbank für unsere Zertifikate erstellen. Dazu klicken wir im Menü auf „Datei“ und anschließend auf „Neue Datenbank“
Vergeben Sie unter Dateiname einen neuen Namen für die Datenbank, z.B. contoso, und klicken Sie auf „Speichern“.
Im nächsten Schritt müssen Sie für die Datenbank ein Passwort vergeben. Notieren Sie sich das Passwort und klicken Sie dann auf „OK“.
Sobald Sie die Datenbank erstellt haben, können Sie damit beginnen das Root Zertifikat zu erstellen. Klicken Sie dazu rechts im Fenster auf den Button „Neues Zerifikat“.
Im Fenster „Erstelle x509 Zertifikat“ wählen Sie unten als Vorlage für das neue Zertifikat (default) CA aus.
Wechseln Sie zum Register „Inhaber“. Hier müssen wir zuerst einen neuen Schlüssel erstellen. Klicken Sie dazu unten rechts auf den Button „Erstelle einen neuen Schlüssel“.
Als Namen vergeben Sie hier „rootkey“, als Schlüsseltyp wählen Sie RSA aus und die Schlüssellänge setzen wir auf 2048 bit. Mit einem Klick auf „Erstellen“ wird der neue Schlüssel angelegt.
Die Hinweismeldung über die erfolgreiche Erstellung des privaten RSA Schlüssels können Sie mit „OK“ bestätigen.
Füllen Sie noch die Felder unter Distinguished name wie Links im Screenshot aus. Über Hinzufügen legen Sie noch die Informationen
- commonName
- organizationName
- countryName
- organizationalUnitName
- emailAddress
an und füllen diese ebenfalls aus.
Im Register Erweiterungen legen Sie die Zeitspanne für die Gültigkeit des Zertifikats auf 2 Jahre fest und klicken anschließend auf den Button „übernehmen“.
Im Register Key usage markieren Sie die Einträge Certificate Sign und CRL Sign, die anschließend wie im Screenshot rechts blau hinterlegt sein sollten.
Zum Schluss kontrollieren Sie noch, ob im Register Netscape keine Einträge gemacht sind und keine Auswahl getroffen wurde. Wenn alles in Ordnung ist klicken wir auf „OK“.
Zum Abschluss erhalten wir die Meldung, dass das Zertifikat erfolgreich erstellt wurde. Die Meldung bestätigen wir wieder mit einem Klick auf „OK“.
x.509 Zertifikat für die Signatur erstellen
Nachdem wir unser Root-Zertifikat erstellt haben, können wir das eigentliche Zertifikat für die Signatur der PDF-Rechnungen erstellen. Im Prinzip sind es fast die gleichen Schritte wie bei der Erstellung des Root-Zertifikats.
Klicken wir wieder auf den Button „Neues Zertifikat“.
Als Vorlage wählen wir diesmal „(default) HTTPS_client“ aus.
Wir wechseln in den Reiter „Inhaber“ und klicken unten auf den Button „Erstelle einen neuen Schlüssel“.
Wir vergeben einen Namen für den neuen Schlüssel, z.B. Client_1, wählen als Schlüsseltyp RSA aus und legen die Schlüssellänge wieder auf 2048 bit fest. Anschließend klicken wir auf den Button „Erstellen“.
Die anschließende Meldung über die erfolgreiche Erstellung des Schlüssels kann mit einem Klick auf den Button „OK“ bestätigt werden.
Jetzt können wir alle Felder unter Distinguished name ausfüllen und über den Button Hinzufügen noch die folgenden Felder anlegen:
- commonName
- organizationalUnitName
- organizationName
- emailAddress
- contryName
- stateOrProvinceName
Im Reiter Erweiterungen legen wir die Zeitspanne ebenfalls auf 2 Jahre fest und klicken auf den Button „Übernehmen“.
Im Reiter Key Usage wählen wir Digital Signature, Key Enciphement und Data Enciphement aus.
Im Reiter Netscape kontrollieren wir wieder, dass keine Auswahl getroffen wurde und keine Felder ausgefüllt sind. Anschließend klicken wir auf den Button „OK“.
Die Meldung das unser Zertifikat erfolgreich erstellt wurde quittieren wir mit einem Klick auf den Button „OK“
Export des Client-Zertifikats
Für die digitale Signatur der Rechnungen im PDF-Format müssen wir jetzt das Zertifikat Exportieren
Wir markieren das zuletzt erstellte Client Zertifikat und klicken auf den Button „Export“.
Im Fenster „Zertifikatexport“ wählen wir zunächst das Exportformat PKCS #12 aus. Danach wählen wir einen Speicherort/Namen für das Zertifikat aus und klicken auf „OK“
Für die Verschlüsselung der PKCS#12 Datei müssen wir noch ein Passwort vergeben. Dieses notieren wir uns wieder und klicken anschließend auf den Button „OK“
Den Exportvorgang wiederholen wir für das Root-Zertifikat. Beide werden anschließend in den Zertifikatsspeicher der Computers installiert. Also das oberste Zertifikat markieren und auf den Button „Export“ klicken.
Als Exportformat legen wir diesmal DER fest. Speicherort und Namen vergeben, anschließen wieder auf den Button „OK“ klicken.
Installation der Zertifikate
Nicht zwingend erforderlich, aber durchaus empfehlenswert ist es die Zertifikate nach der Erstellung auf dem Client PC auch zu installieren.
Die Installation eines Zertifikats unter Windows ist relativ einfach. Zertifikat markieren, rechte Maustaste klicken und anschließend auf Zertifikat installieren klicken.Das machen wir als erstes mit dem Root-Zertifikat, welches wir vorhin erstellt haben.
Im Zertifikatimport-Assisten auf „Weiter“ klicken.
Zertifikatsspeicher automatisch auswählen anwählen und auf „Weiter“ klicken.
Zum Schluss nur noch auf Fertig stellen klicken.
Die Meldung über den erfolgreichen Importvorgang kann mit einem Klick auf den Button „OK“ bestätigt werden.
Im nächsten Schritt installieren wir das Client-Zertifikat. Wir klicken mit der rechten Maustaste unser *.p12 Client-Zertifikat an und klicken auf PFX installieren.
Wir klicken im Zertifikatimport-Assistenten auf „Weiter“.
Nochmal kurz kontrollieren ob es sich um die richtige Datei handelt und dann auf „Weiter“ klicken.
Jetzt müssen wir das Kennwort, welches wir beim Export des Schlüssels vergeben haben, eingeben und auf „Weiter“ klicken.
Jetzt noch auf „Fertig stellen“ klicken.
Die Sicherheitswarnung mit einem Klick auf „Ja“ bestätigen.
Und zum Schluss den Hinweis auf den erfolgreichen Importvorgang mit einem Klick auf den Button „OK“ schließen.
Installation PortableSigner
Um unsere Rechnungen im PDF-Format mit einer digitalen Signatur auszustatten, benötigen wir ein kleines Hilfprogramm auf allen Rechnern mit dem Namen PortableSigner. Am Anfang des Artikels finden Sie den Download-Link. Dazu müssen noch zwei spezielle Security-Policy-Dateien für die Java Runtime ausgetauscht werden, damit unser Hilfprogramm auch seine Arbeit verrichten kann.
Die beiden Dateien aus dem Java-Download (UnlimitedJCEPolicyJDK7.zip) kopieren Sie in das Verzeichnis Ihrer Java-Installation, z.B.:C:Program Files (x86)Javajre7libsecurity
Anschließend können Sie die Datei PortableSigner-Installer-2.0.38c0573.exe mit einem Doppelklick starten. Wählen Sie als Sprache deutsch aus und klicken Sie auf „OK“.
Einfach auf „Weiter“ klicken.
Installationsinformationen mit einem Klick auf „Weiter“ überspringen.
Lizenzabkommen annehmen und auf „Weiter“ klicken.
Pfadangaben so belassen wie Sie sind und auf „Weiter“ klicken.
Die Meldung mit einem Klick auf den Button „OK“ schließen.
Installationspaket Basis (es gibt kein anderes…) auswählen und auf „Weiter“ klicken.
Die Einstellungen unter „Verknüpfungen einrichten“ so belassen wie sie sind und auf „Weiter“ klicken.
PortableSigner wird installiert.
Zum Schluss die Installation mit einem Klick auf den Button „Fertig“ beenden.
Windows 7 meldet sich danach mit dem Hinweis das Programm wurde eventuell nicht richtig installiert. Dies können Sie mit einem Klick auf „Das Programm wurde richtig installiert.“ wegklicken.
Test der digitalen Signatur
Bevor wir JTL-Wawi anpassen und digital signierte Rechnungen verschicken, führen wir einen kleinen Test mit PortableSigner durch, ob unser Zertifikat und die Software auch einwandfrei Arbeiten. Dazu brauchen wir ein unsigniertes PDF, zum Beispiel eine Rechnung aus JTL-Wawi.
Starten wir den PortableSigner aus dem Startmenü heraus.
Als erstes wählen wir mit dem Button „Suchen“ in der Zeile 1 unter PDF signieren die Eingabedatei aus. Anschließend geben wir die Ausgabedatei an,bzw. Übernehmen die Voreinstellung. In Zeile 3 wählen wir das x.509 Zertifikat mit der Datei-Endung p12 aus. In Zeile 4 markieren wir Signaturblock anhängen und in Zeile 5 geben wir das Passwort für das Zertifikat ein. Anschließend können wir mit einem Klick auf den Botton „OK“ das neue PDF mit Signatur erzeugen.
Wenn alles richtig eingerichtet ist, halten wir am Ende in Zeile 8 als Ergebnis in grün: „Dokument signiert“.
Wenn wir das neue Dokument im Adobe PDF-Reader öffnen, ist am Ende auf einer neuen Seite die Signatur zu sehen.
JTL-Wawi Rechnungen automatisch verschicken mittels Script oder via Workflow
Bis jetzt haben wir eine funktionierende eigene Zertifizierungsstelle und die Möglichkeit PDF-Dokumente mit einem Zertifikat digital zu signieren. Bei vielen Rechnungen am Tag, die per Mail versendet werden müssen, ist die im Test gezeigte Vorgehensweise ziemlich ineffektiv. Darum schreiben wir uns eine klein Batch-Datei basierend auf der Vorgabe von JTL-Software (https://wiki.jtl-software.de/index.php?title=Kategorie:JTL-Wawi:Workarounds). Die Dokumentation dazu ist leider etwas dürftig. Ich habe einen Eintrag im Forum und etwas Spielerei benötigt um das Rätsel zu lösen.
Als erstes bauen wir uns eine Batchdatei mit dem Editor, bzw. Notepad und fügen folgenden Inhalt ein:
java -jar C:Program Files (x86)PortableSignerPortableSigner.jar
-n -t %1 -o %1_ -s <Pfad>Client.p12 -p <Kennwort>
copy %1_ %1
del %1_
Die Platzhalter <Pfad> und <Kennwort> ersetzen wir mit dem Pfad zu unserem Zertifikat im Netzwerk oder auf der lokalen Festplatte und unter Kennwort geben wir das Kennwort für unser Zertifikat ein.
Diese Datei speichern wir dann mit dem Namen Sign.bat ab. Ich habe hier eine Netzwerkfreigabe auf meinem Test-Server verwendet.
Wir wechseln jetzt in JTL-Wawi und rufen im Menü Einstellungen die Firmen/Maileinstellungen auf.
Markieren die entsprechende Firma und wechseln in den Reiter E-Mail-Einstellungen. Hier klicken wir auf den Button „Signatureinstellungen“.
In den Einstellungen für die E-Mail-Signatur wechseln wir in den Reiter Externer Befehl und markieren „Bearbeitung /Signierung durch externen Befehl aktivieren“. Anschließend geben wir den Pfad zur Sign.bat ein oder suchen die Datei mit einem Klick auf den Button mit den 3 Punkten […].
Nicht vergessen das Feld Dateiname mit dem Drücken der Tabulator-Taste zu verlassen, da ansonsten die Änderungen nicht übernommen werden!
Wenn unten das grüne Kästchen mit dem Hacken erscheint ist alles in Ordnung und wir können das Fenster mit einem Klick auf „Schließen“ verlassen. Die Firmen/Maileinstellungen können ebenfalls mit einem Klick auf „OK“ geschlossen werden.
Jetzt müssen wir noch die Vorlagenverwaltung, was leider nur hier steht. Hier müssen wir unsere Rechnungsvorlage in der Baumstruktur suchen, markieren und rechts in den Register Mailen wechseln. Hier wählen wir dann unter Signatur externer Befehl aus und schließen das Fenster mit einem Klick auf den Button „OK“.
An dieser Stelle könne wir auch noch eine Empfänger für eine Kopie der Nachricht unter Blindkopie (BCC) hinterlegen wie z.B. rechnungsausgang@contoso.local
- 5/5
- 2 ratings
Very bad! | Bad | Hmmm | Oke | Good! |
---|---|---|---|---|
0% | 0% | 0% | 0% | 100% |
Haben Sie Fragen oder brauchen ein individuelles Angebot? Zögern Sie nicht, uns zu kontaktieren.
PotableSigner Installation schlägt auf dem Standardpfad fehl, da keine Ordner nicht beschrieben werden kann. W10.
Vielen Dank für diesen Hinweis. Wir werden das testen und versuchen eine Lösung zu finden. Sollten Sie eher eine finden, kommentieren Sie diese bitte 🙂 Wenn wir eine haben gibt’s ein Text-Update!
Hallo, vielen Dank, für diese Beschreibung.
Alles was bei mir anders lief, war, dass ich die JCE8 verwendet habe. Der Ablauf ging wunderbar auf Win10(Win7 wollte nicht).
Ich verwende JTL 1.3.12.0 und stelle nach dem einbinden Ihrer Sign.Bat fest, dass der export und Versand etwas länger dauert. Demzufolge tut sich etwas. Alldings werden keine Signaturen(Unterschriften) in den PDF-Dokummenten angezeigt.
Was benötigen Sie, um mir eventuell zu helfen?!
Mit freundlichen Grüßen
Marcus