Zertifikate
Bei der Verarbeitung einer Unterschrift werden die erfassten Daten verschlüsselt und das Dokument nach dem Einfügen der Unterschrift signiert. Die Verschlüsselung benötigt ein Public-Key-Zertifikat, welches einen öffentlichen Schlüssel enthält. Für die Signierung wird ein komplettes Schlüsselpaar benötigt, also ein Public-Key-Zertifikat, dessen Zertifikatskette und der private Schlüssel passend zum öffentlich Schlüssel des Zertifikats.
Ein Zertifikat kann global für alle Benutzer verwendet, automatisch pro Benutzer generiert oder flexibel über die REST-API verwaltet werden. Die Zertifikate und Schlüssel müssen signoSign/Universal für die oben genannten Operationen zur Verfügung gestellt bzw. von signoSign/Universal gespeichert werden. Dennoch kann signoSign/Universal nicht zur Verwaltung von Zertifikaten und Schlüsseln verwendet werden, weil es keinen oder nur eingeschränkten Zugriff auf die gespeicherten Daten bietet.
Zur Verschlüsselung der biometrischen Daten wird signoSign/Universal standardmäßig mit einem Zertifikat ausgeliefert, welches von einem Notar erstellt und verwaltet wird. Dies bietet höchstmögliche Sicherheit im Umgang mit den sensiblen Unterschriftsdaten, ohne dass Sie sich mit der Schlüsselverwaltung beschäftigen müssen. Im Streitfall kann die Entschlüsselung der Biometrie beim Notar beauftragt werden. Insofern Sie die Zertifikate lieber selbst verwalten möchten, denken Sie daran, die Konfiguration entsprechend anzupassen, bevor Sie das System produktiv nutzen. Mehr Informationen erhalten Sie direkt beim Vertriebsteam von signotec.
Das Dokument wird standardmäßig mit einem Demo-Zertifikat digital signiert, welches für den produktiven Einsatz durch ein vertrauenswürdiges Zertifikat ersetzt werden muss. Siehe auch Kapitel Globale Zertifikate.
Java Cryptography Architecture
Die Zertifikate und Schlüssel werden über die Java Cryptography Architecture (JCA) geladen. Alle Formate, die mit der Klasse java.security.KeyStore geladen werden können, können auch von signoSign/Universal verarbeitet werden. Das Laden eines Zertifikats benötigt i.d.R. folgende Einstellungen:
einen Keystore Typ, der das Format des Schlüsselspeichers festlegt
eine Keystore Datei passend zum Typ
den Namen / Alias des Zertifikats innerhalb des Stores
die Passwörter für das Laden des Stores und dessen Elemente.
Je nach Keystore Typ können die benötigten Einstellungen variieren. Für das Laden des Microsoft Windows Schlüsselspeichers (Typ WINDOWS_MY) wird bspw. kein Passwort benötigt. Java verwendet standardmäßig Java Keystores (Typ JKS), die mit dem Java KeyTool verwaltet werden können.
Globale Zertifikate
Um global ein Verschlüsselungszertifikat und ein Signierungszertifikat für alle Benutzer zu verwenden, muss in den Servereinstellungen der Schlüssel useCertificateDataProperties aktiviert und die Quelle der Zertifikate festgelegt werden.
Konfigurationsbeispiel
Die folgenden Einstellungen laden die Zertifikate encryptionCert und signingCert aus dem Java Keystore /var/ssu/global-store.jks. Das Passwort zum Öffnen des Schlüsselspeichers ist storePassword, und das Passwort zum Laden des privaten Signierungsschlüssels ist keyPassword. Für die Liste aller Konfigurationsschlüssel siehe Konfiguration > Zertifikate.
persistence.useCertificateDataProperties = true
persistence.keystoreSigning = /var/ssu/global-store.jks
persistence.signingAlias = signingCert
persistence.signingKeyStoreType = JKS
persistence.signingKeyStorePassword = storePassword
persistence.signingprivatekeypassword = keyPassword
persistence.keystoreBiometric = /var/ssu/global-store.jks
persistence.biometricAlias = encryptionCert
persistence.biometricKeyStoreType = JKS
persistence.biometricKeyStorePassword = storePassword
Standard Zertifikate
Die standardmäßig von signoSign/Universal verwendeten globalen Schlüsselspeicher befinden sich neben der Properties Datei für die Servereinstellungen. Die Schlüsselspeicher enthalten ein Schlüsselpaar und ein selbst signiertes Demo-Zertifikat für die digitale Signatur und ein Zertifikat zur Verschlüsselung der biometrischen Daten, welches von einem Notar erstellt und verwaltet wird. Siehe auch Kapitel Zertifikate.
Zur Verschlüsselung wird das Zertifikat biometricalias aus dem Schlüsselspeicher keystoreBiometric.jks verwendet. Für die Signierung wird das Schlüsselpaar signingalias aus dem Speicher keystoreSigning.jks verwendet. Das Passwort beider Schlüsselspeicher lautet password.
Das Demo-Zertifikat und dessen Schlüssel sind nur zur Evaluation von signoSign/Universal voreingestellt und müssen für deren produktiven Einsatz durch vertrauenswürdige Daten ersetzt werden!
[WEB-APP-ROOT]/WEB-INF/classes/keystoreBiometric.jks
[WEB-APP-ROOT]/WEB-INF/classes/keystoreSigning.jks
[WEB-APP-ROOT]/ssu_web-x.x.x.x.war/WEB-INF/classes/keystoreBiometric.jks
[WEB-APP-ROOT]/ssu_web-x.x.x.x.war/WEB-INF/classes/keystoreSigning.jks
Benutzerspezifische Zertifikate
Wenn weder globale Zertifikate noch über die REST-API konfigurierte Zertifikate verwendet werden, wird signoSign/Universal für jeden Benutzer einen Schlüsselspeicher mit Verschlüsselungs- und Signierungs-Zertifikat generieren.
Attribute des Schlüsselspeichers
Typ des Schlüsselspeichers | Der Java Standardtyp JKS oder der mit dem System-Property keystore.type festgelegte Typ |
Schlüsselspeicher passwortgeschützt? | ja |
Schlüsselpaar enthalten? | ja, passwortgeschützt |
Alias für Schlüsselpaar und Zertifikat |
Konfiguration
Benutzerspezifische Zertifikate werden automatisch generiert, wenn in den Servereinstellungen der Schlüssel useCertificateDataProperties deaktiviert ist und für den jeweiligen Benutzer keine gültigen Schlüssel in der Datenbank hinterlegt sind. Siehe auch hier.
Hardware-Sicherheitsmodul
Für die Verwendung eines Hardware-Sicherheitsmoduls (HSM) wird ein JCA/JCE Provider des Herstellers benötigt. Der Provider befindet sich normalerweise in einer JAR Bibliothek, die signoSign/Universal zur Verfügung gestellt werden muss. Die Funktionalität des Providers wird automatisch von signoSign/Universal verwendet, wenn als Keystore Typ der vom Provider vorgegebene Name verwendet wird.
Konfigurationsbeispiel
Ein Beispiel für die Servereinstellungen wenn
der Hersteller den Keystore Typ "custom.store" vorgibt
die Keystore Datei in /var/ssu/customStore liegt
der Name/Alias des Verschlüsselungs-Zertifikats "encryptionCert" ist
der Name/Alias des Signierungs-Zertifikats "signingCert" ist
kein Passwort nötig ist
persistence.useCertificateDataProperties = true
persistence.keystoreSigning = /var/ssu/customStore
persistence.signingAlias = signingCert
persistence.signingKeyStoreType = custom.store
persistence.signingKeyStorePassword =
persistence.keystoreBiometric = /var/ssu/customStore
persistence.biometricAlias = encryptionCert
persistence.biometricKeyStoreType = custom.store
persistence.biometricKeyStorePassword =