Last update: 24/10/2019
pdf-as web-application 3.3 (tomcat bundle) 3.3--web-tomcat Switch to the latest release
Published on: 28/03/2013
Last update: 13/02/2024
RELEASE NOTES für PDF-AS 3.3
MIGRATION VON PDF-AS 3.2
- Die Voraussetzung für eine Migration von PDF-AS 3.2 ist mindestens eine Java Laufzeitumgebung mit Version 1.5.
- Bestehende Konfigurationen können unverändert verwendet werden. Es wird jedoch empfohlen, die
Referenzkonfiguration bzw. eine darauf aufbauende Konfiguration zu verwenden. Die Referenzkonfiguration ist nun
wesentlich übersichtlicher gestaltet und ausführlicher inline dokumentiert (siehe auch Abschnitt "KONFIGURATION"
unten).
- Folgende abhängige Bibliotheken müssen ersetzt werden:
commons-codec-1.3.jar -> commons-codec-1.6.jar
commons-io-1.1.jar -> commons-io-2.2.jar
commons-lang-2.3.jar -> commons-lang-2.6.jar
core-1.6-SNAPSHOT.jar -> core-1.6-jdk14.jar
javase-1.6-SNAPSHOT.jar -> javase-1.6-jdk14.jar
itext-2.1.5-rev3628-pdfas-1.1.jar -> itext-2.1.5-rev3628-pdfas-1.2.jar
Die neuen Versionen finden sich in den jeweiligen Release-Paketen.
- Wird die Referenzkonfiguration verwendet, muss berücksichtigt werden, dass mit folgenden Signaturprofilen keine
Signaturen mehr erzeugt werden dürfen bzw. können:
AMTSSIGNATURBLOCK_DE_DEPRECATED
AMTSSIGNATURBLOCK_EN_DEPRECATED
SIGNATURBLOCK_DE_DEPRECATED
SIGNATURBLOCK_EN_DEPRECATED
ALLGEMEINE ÄNDERUNGEN
- Java 1.4 wird nicht mehr unterstützt. Die Mindestvoraussetzung ist nun Java 1.5.
- Das ursprüngliche Single-Modul Maven Projekt ist nun als Multi-Modul Projekt ausgeführt, bestehend aus den
Modulen:
pdf-as-lib:
Die PDF-AS Core API. Die Bibliothek kann von Fachapplikationen wie bisher verwendet werden.
pdf-as-web:
Eine eigenständige PDF-AS Webanwendung (siehe auch http://www.buergerkarte.at/pdf-as).
pdf-as-cli:
Eine Commandline Version von PDF-AS.
pdf-as-release:
Release-Modul, das die drei o.g. Module in einem Release-Paket vereint.
- Die Webanwendung wird bereits inkl. Apache Tomcat sowie entsprechender Konfiguration und StartScripts erstellt
und kann sofort verwendet werden.
- Die PDF-AS API wird nun wie folgt als Maven Dependency referenziert (groupId und artifactId haben sich geändert):
<dependency>
<groupId>eu.europa.ec.joinup.egovlabs.pdf-as</groupId>
<artifactId>pdf-as-lib</artifactId>
<version>3.3</version>
<dependency>
- Sonderzeichen wurden aus dem Source-Code entfernt und dieser auf UTF-8 Encoding umgestellt.
- Sämtliche .printStackTrace() Anweisungen wurden entfernt.
- Einführung einer internen Standard-Konfiguration (classpath:/config/defaultconfig.properties). Diese Standard-
Konfiguration entspricht der PDF-AS Referenz-Konfiguration (config.properties), enthält jedoch keine
Signaturprofile. Sämtliche Einträge werden von der jeweilig verwendeten Konfiguration überschrieben.
- Folgende abhängige, d.h. von PDF-AS verwendete Bibliotheken wurden aktualisiert:
commons-codec-1.3.jar -> commons-codec-1.6.jar
commons-io-1.1.jar -> commons-io-2.2.jar
commons-lang-2.3.jar -> commons-lang-2.6.jar
core-1.6-SNAPSHOT.jar -> core-1.6-jdk14.jar
javase-1.6-SNAPSHOT.jar -> javase-1.6-jdk14.jar
itext-2.1.5-rev3628-pdfas-1.1.jar -> itext-2.1.5-rev3628-pdfas-1.2.jar
Hinweis: Diese Abhängigkeiten müssen bei der Migration von PDF-AS 3.2 auf 3.3 berücksichtigt werden. Siehe auch
Abschnitt "MIGRATION".
- Abhängigkeiten zu folgenden Bibliotheken wurden entfernt:
xml-apis-1.3.02.jar
- signupload.jsp: Automatische Weiterleitung auf https im Falle eines Aufrufs via http aus dem JSP-Code entfernt.
- Die folgenden Signaturprofile gelten als veraltet:
AMTSSIGNATURBLOCK_DE_DEPRECATED
AMTSSIGNATURBLOCK_EN_DEPRECATED
SIGNATURBLOCK_DE_DEPRECATED
SIGNATURBLOCK_EN_DEPRECATED
Diese sind in der Referenzkonfiguration nun so konfiguriert, dass sie nur noch zur Signaturprüfung, nicht aber zum
Erzeugen von Signaturen verwendet werden können.
- Folgende Bürgerkartenumgebungen werden unterstützt (Liste der Identifier entsprechend nach
http://www.buergerkarte.at/konzept/securitylayer/spezifikation/aktuell/bindings/bindings.html#http.kodierung.response):
A-Trust
lokale BKU
citizen-card-environment/1.2 asignSecurityLayer/1.3.3
citizen-card-environment/1.2 asignSecurityLayer/1.4.1
citizen-card-environment/1.2 asignSecurityLayer/1.4.2
Handy-Signatur
citizen-card-environment/1.2 asignMobileBku/1.1.0
Handy-Signatur (Test)
citizen-card-environment/1.2 atrustHandyBku/1.1.0
IT-Solution trustDesk Basic
citizen-card-environment/1.2 trustDeskbasic[-OSX|-Linux]/2.7.*|2.8.*|3.0.*
MOCCA
citizen-card-environment/1.2 MOCCA/*[-X14]
NEUE FUNKTIONEN
- Unterstützung von XAdES 1.4 basierten Signaturen durch MOCCA. Dazu wurde ein neuer Signaturparameter
"etsi-moc-1.2" eingeführt (siehe auch aktualisierte PDF-AS Spezifikation 2.3).
- Erkennung verschlüsselter Dokumente.
- Spezieller Logger für statistische Informationen.
- Import von Konfigurationsdateien via Include-Anweisung.
- Vereinfachung der Konfiguration durch Beschränkung auf die wesentlichen Optionen sowie durch Trennung der
Signaturprofile in einzelne Konfigurationsdateien (z.B. SIGNATURBLOCK_DE.properties), die nun mittels
Include-Anweisung eingebunden werden.
- Verwendung einer fortgeschrittenen Konfiguration (advancedconfig.properties), die sämtliche
Konfigurationsmöglichkeiten bietet.
- Möglichkeit, einzelne Profile zusätzlich zum bisherigen Ein- bzw. Ausschalten nun auch nur für die Signatur oder
nur für die Verifikation zuzulassen. So können veraltete Profile noch für die Verifikation verwendet werden, ohne
damit die Möglichkeit zu erlauben, neue Signaturen zu erzeugen.
- Web-Applikation: Verbesserung der Integrationsmöglichkeit in bestehende Webseiten.
BEHOBENE BUGS
Modul pdf-as-web:
- null_request_page.jsp: NullPointerException behoben.
Modul pdf-as-lib:
- Leere Signatur-Parameter im Signaturblock führten bisher zu einem Fehler. Leere Signatur-Parameter müssen laut
PDF-AS Spezifikation (Abschnitt 5.1.1) als MOA-SS Signaturen interpretiert werden.
- Die Konfiguration der QR-Code Signaturplatzhalter "enable_placeholder_search=true|false" wurde bisher
ignoriert.
- Einige Dokumente mit strukturiertem Inhalt ("tagged documents") führten zu internen Fehlern. Nun wurde ein
Fallback-Mechanismus integriert, der Dokumente mit fehlerhaften oder fehlenden Strukturinformationen dennoch
signiert.
- Das verarbeitete PDF-Dokument wurde bisher in einigen Fällen nicht geschlossen, bzw. damit PdfBox/iText
Ressourcen nicht freigegeben.
- Im Falle von unsichtbaren Signaturen wurden bisher unter Umständen leere Seiten hinzugefügt.
- Fehlerhafte Verarbeitung von Signaturen behoben, deren Zertifikat einen Issuer-Namen mit Beistrich in einem
der RDNs (Relative Distinguished Name) aufwies, z.B.
"...,CN=Go Daddy Secure Certification Authority,O=GoDaddy.com\, Inc.,L=Scottsdale,..."
- Die PDF/A-1b-Konformität eines Dokuments war bisher nach der Signatur mit PDF-AS trotz Verwendung eines
PDF/A-aktivieren Signaturprofils (z.B. SIGNATURBLOCK_DE_PDFA) unter Umständen nicht mehr gegeben. PDF/A setzt
die Verwendung von geräteunabhängigen Farbräumen voraus. PDF-AS bzw. die zugrundeliegende iText-Library
verwendet grundsätzlich jedoch geräteabhängige Farbräume. Deshalb wird nun bei der Signatur mit einem
PDF/A-aktivierten Signaturprofil ein geräteunabhängiges ICC-Farbprofil in das Dokument eingebettet, wodurch
dieses PDF/A-konform bleibt.
- Fehlerhafte Verarbeitung von signierten Dokumenten mit Inkrementellen Updates behoben. Spezielle
Konstellationen von Trailer und Cross-Reference Tabelle eines Inkrementellen Updates führten zu einem internen
Fehler.
- Fehlerhafte Verarbeitung verschlüsselter Dokumente behoben: Beim Versuch, ein verschlüsseltes Dokument zu
laden wird nun statt einem undefinierten internen Fehler ein entsprechender Fehler mit Fehlercode (231)
generiert.
- Automatische Positionierung des Signaturblocks verbessert bzw. Probleme mit speziellen PDF-Elementen behoben.
KONFIGURATION
- Die PDF-AS Konfiguration ist abwärtskompatibel zu älteren PDF-AS Versionen. Eine bestehende Konfiguration kann
ohne Anpassung verwendet werden, nutzt dann allerdings unter Umständen auch nicht die neuen Features.
- Die PDF-AS Konfiguration erfolgt wie bisher auch über die Datei config.properties. Die Referenzkonfiguration wurde
jedoch sehr stark vereinfacht, d.h. selten verwendete Konfigurationsschlüssel wurden in eine "fortgeschrittene
Konfiguration" (advancedconfig.properties) ausgelagert. Diese fortgeschrittene Konfiguration wird mittels mit der
neuen Include-Funktion (siehe unten) von config.properties aus eingelesen.
Konkret wurden folgende Konfigurationsschlüssel von config.properties nach advancedconfig.properties verschoben:
assume_only_signature_blocks = false
binary_only = false
bku.available_for_commandline = true
bku.available_for_web = true
bku.sign.KeyboxIdentifier = SecureSignatureKeypair
check_document = true
check_old_textual_sigs = true
correct_document_if_necessary = true
correct_document_on_verify_if_necessary = true
corrector = internal
default.SIG_BAIK_ENABLED = false
default.SIG_PDFA1B_VALID = false
default.adobeSignFieldValue = PDF-AS Signatur
default.adobeSignReasonValue = Informationen zur Pr\u00FCfung finden Sie unter http://www.signaturpruefung.gv.at
default.adobeSignText.binary = PDF-AS
default.adobeSignText.textual = PDF-AS
default.sigLogoAltText = Abgebildet ist eine Standard-Signaturbildmarke.
default.signature_block_width_warning_threshold = 150
default.verifyURL = http://www.signaturpruefung.gv.at
defaults.phlength.SIG_ALG = 100
defaults.phlength.SIG_ID = 70
defaults.phlength.SIG_NAME = 210
defaults.phlength.certificate = 10000
defaults.phlength.line_break_tolerance = 10
defaults.phlength.timestamp = 5000
enable_placeholder_search = false
external_corrector_commandline = C:/correct.exe "##input_document##" "##output_document##"
external_corrector_timeout = 15000
moa.available_for_commandline = true
moa.available_for_commandline = true
moa.available_for_web = true
moa.available_for_web = true
moa.sign.console.detached.enabled = false
mobiletest.sign.KeyboxIdentifier = SecureSignatureKeypair
moc.available_for_commandline = false
moc.available_for_web = true
moc.sign.KeyboxIdentifier = SecureSignatureKeypair
strict_mode = false
supress_exception_when_last_iublock_is_no_signature = false
- Grundsätzlich gibt es in PDF-AS vier Konfigurationsebenen (zwei interne und zwei lokale):
(a) Eine interne Konfiguration (classpath:/config/pdf-as.properties), die ausschließlich Eigenschaften der
spezifischen PDF-AS Implementierung definiert (z.B. unterstützte BKUs, verwendete Templates, usw.). Diese
Konfiguration kann nicht durch andere Konfigurationsebenen überschrieben werden. Es wird ausdrücklich davon
abgeraten, diese Einstellungen zu verändern!
(b) Eine interne Standard-Konfiguration (classpath:/config/defaultconfig.properties), die inhaltlich exakt
der Einstellungen der fortgeschrittenen Konfiguration (c) entspricht, genau wie diese jedoch keine
Signaturprofile definiert. Sämtliche Einstellungen aus der internen Standard-Konfiguration können durch (c)
bzw. (d) überschrieben werden.
(c) Eine lokale Datei advancedconfig.properties, die ein vollständiges Set an möglichen Konfigurationsschlüssel
enthält. Die Datei wird durch die Include Anweisung in (d) "include.advancedconfig = advancedconfig.properties"
eingebunden.
(d) Die bereits bekannte lokale Datei config.properties. Diese setzt ggf. Konfigurationsschlüssel die von den
Standardwerten aus (b) abweichen sowie lädt Signaturprofile mittels Include-Anweisung.
- Include Mechanismus: Es ist nun möglich von einer Konfigurationsdatei aus, weitere Konfigurationsdateien zu laden.
Dies erfolgt beispielsweise bereits in der Datei config.properties (d) der Referenzkonfiguration dieses Releases:
z.B.
# Standard-Profile
include.01 = profiles/INVISIBLE.properties
include.02 = profiles/SIGNATURBLOCK_DE.properties
include.03 = profiles/SIGNATURBLOCK_DE_DEPRECATED.properties
include.04 = profiles/SIGNATURBLOCK_DE_NOTE.properties
Die Anweisung besteht aus dem Schlüsselwort "include.BELIEBIGER_BEZEICHNER" sowie dem relativen Pfad zur
einzubindenden Datei, der auch aus Wildcards bestehen kann. "BELIEBIGER_BEZEICHNER" muss durch ein beliebiges
Schlüsselwort ersetzt werden. Dieses muss zusammen mit dem Prefix "include." einen eindeutigen Schlüssel darstellen:
z.B.
# Amtssignatur-Profile
include.amtssignaturprofile = profiles/AMTSSIGNATURBLOCK*.properties
# PDF/A Profile
include.pdfa = profiles/*PDFA.properties
# Unsichtbares Profil
include.invisible = profiles/INVISIBLE.properties
- Eine ausführliche Beschreibung sämtlicher Konfigurationsparameter findet sich inline in den jeweiligen lokalen
Konfigurationsdateien (c) und (d).
- Der folgende Konfigurationsschlüssel wurde aus der lokalen Konfiguration (d) entfernt und fix in die interne
Konfiguration (a) eingetragen. Diese Einstellung kann nicht überschrieben werden:
default.adobeSignEnabled = true
(Diese Einstellung fügt eine Signaturkennzeichnung - so wie von Adobe eigentlich vorgesehen - in das Dokument ein.
Signierte Dokumente sind dadurch vor versehentlichen Änderungen geschützt. Würde dies nicht erfolgen, könnten binäre
Signaturen beim Abspeichern der Dokumente versehentlich entfernt werden.)
Thomas Knall, Datentechnik Innovation GmbH