Zum Inhalt

47-Tage-Zertifikate sind im Anmarsch. Sind Sie bereit?

Jetzt handeln →

Signieren Sie XML-Dateien mit dem XMLSec-Tool unter Verwendung der PKCS#11-Bibliothek

Signieren Sie XML-Dateien mit dem Tool xmlsec

Veröffentlicht: Dezember 2024 | Aktualisiert: August 2026

Das Signieren von XML-Dateien mit XMLSec und PKCS#11 bedeutet, dass das Open-Source-Befehlszeilenprogramm xmlsectool verwendet wird, um eine digitale Signatur auf ein XML-Dokument anzuwenden, während der private Schlüssel in einem Hardware-Sicherheitsmodul (HSM) oder -Token verbleibt. Der PKCS#11-Wrapper von EC ermöglicht die Kommunikation zwischen xmlsectool und HSM, sodass der Schlüssel die zertifizierte Hardware niemals verlässt.

Das globale Datenvolumen wächst so rasant, dass eine manuelle Vertrauensprüfung in großem Umfang praktisch unmöglich wird: Laut dem IDC-Bericht „Global DataSphere Forecast, 2026–2030“ (veröffentlicht im Juni 2026) wird das weltweite Datenvolumen bis 2030 die Marke von 700 Zettabyte (ZB) überschreiten . Zum besseren Verständnis: Ein Zettabyte entspricht einer Billion Gigabyte (GB). Der Großteil dieser Daten ist unstrukturiert und benötigt eine Struktur, die ihnen Bedeutung verleiht. Hier kommen XML-Dateien ins Spiel.

eXtensible Markup Language (XML) ist eine Auszeichnungssprache, die Regeln festlegt und Daten organisiert. Sie beschreibt außerdem, wie Daten gespeichert und über das Internet transportiert werden. XML verwendet Auszeichnungssymbole oder Tags, die moderne Browser und Datenverarbeitungsanwendungen zur Verarbeitung dieser Informationen verwenden.

XML-Signierung

XML-Dateien werden in großer Zahl verwendet und sind daher ein integraler Bestandteil unserer webbasierten Anwendungen und Technologien. Doch kann man jeder XML-Datei vertrauen? Wie kann man sich von der Authentizität einer XML-Datei überzeugen? Zur Authentifizierung und Überprüfung ihrer Quelle benötigen Sie einen digitalen Nachweis oder eine Signatur.

Die XML-Signatur hilft Ihnen, Ihre digitalen Anmeldeinformationen hinzuzufügen, wodurch der Empfänger dem Inhalt der Datei voll und ganz vertrauen kann. Um diesen Prozess zu vereinfachen, bietet Ihnen Encryption Consulting den PKCS#11 Wrapper an. Diese Softwarebibliothek stellt eine Java-Schnittstelle zur Interaktion mit PKCS#11-kompatiblen Geräten wie Hardware-Sicherheitsmodulen (HSMs) , Smartcards oder beliebigen Schlüsseltresoren bereit.

Zusammen mit dem PKCS#11 Wrapper verwenden wir das XMLSec-Tool, ein Befehlszeilentool zum Signieren, Überprüfen, Verschlüsseln und Entschlüsseln von XML-Dokumenten.

Ubuntu vs. macOS: Ein kurzer Vergleich

Diese Anleitung behandelt Ubuntu und macOS; eine Einrichtung unter Windows ist für dieses Tool derzeit nicht dokumentiert. Hier ein kurzer Überblick über die Unterschiede zwischen den beiden unterstützten Systemen.

AspektUbuntumacOS
Getestete BetriebssystemversionUbuntu 24.02macOS 15.1 Sequoia
Wrapper-Abhängigkeitenliblog4cxx12, curl (geeignet)liblog4cxx, curl (Selbstgebraut)
Java-DistributionAmazon Corretto 17 über apt repoAmazon Corretto 17 über .pkg-Installationsprogramm
Shell-Konfiguration für JAVA_HOME~/.bashrc~/.zshrc
XMLSec Tool-Quelleshibboleth.net (xmlsectool-3.0.0-bin.zip)shibboleth.net (xmlsectool-3.0.0-bin.zip)

Konfiguration des PKCS#11 Wrappers unter Ubuntu

Voraussetzungen:

Bevor wir uns mit dem Prozess der XML-Signierung mit dem XMLSec-Tool und unserem PKCS11-Wrapper auf einer Linux-Maschine (Ubuntu) befassen, stellen Sie sicher, dass Folgendes bereit ist:

  • Ubuntu-Version: Ubuntu Version 22.04 oder höher (getestete Umgebung ist Ubuntu 24.02)  
  • Abhängigkeiten: Installieren Sie liblog4cxx12 und curl. 

Um die Abhängigkeiten zu installieren, führen Sie die folgenden Befehle aus

  • sudo apt-get installieren locken 
  • sudo apt-get installiere liblog4cxx12 

Installieren des PKCS#11-Wrappers von EC 

Schritt 1: Gehen Sie in EC CodeSign Secure v3.02 zum Abschnitt „Signierungstools“ und laden Sie den PKCS#11 Wrapper für Ubuntu herunter.

Laden Sie PKCS#11 von Codesign Secure herunter

Schritt 2: Generieren Sie anschließend ein P12-Authentifizierungszertifikat über das Dropdown-Menü System Setup > Benutzer > Authentifizierungszertifikat generieren.

P12-Zertifikate generieren

Schritt 3: Gehen Sie zu Ihrem Ubuntu-Clientsystem und bearbeiten Sie die Konfigurationsdateien ( ec_PKCS#11client.ini und PKCS#11properties.cfg ), die im PKCS#11 Wrapper heruntergeladen wurden.

Bearbeiten Sie Konfigurationsdateien unter Ubuntu

XMLSec-Tool installieren

Schritt 1: Installieren Sie die neueste Version des XMLSec Tools (xmlsectool-3.0.0-bin.zip) über diesen Link.

Laden Sie die neueste XMLsec-Version herunter

Schritt 2: Sie können die ZIP-Datei in ein Verzeichnis Ihrer Wahl extrahieren.

Gezippte XMLsec extrahieren

Laden Sie Java herunter und installieren Sie es auf Ihrem Ubuntu-Computer.

Schritt 1: Laden Sie Amazon Corretto 17 Java herunter (Weitere unterstützte Java-Versionen können Sie hier mit dem XMLSec-Tool überprüfen. )

wget -O – https://apt.corretto.aws/corretto.key | sudo gpg –dearmor -o /usr/share/keyrings/corretto-keyring.gpg && \ echo „deb [signed-by=/usr/share/keyrings/corretto-keyring.gpg] https://apt.corretto.aws stable main“ | sudo tee /etc/apt/sources.list.d/corretto.list

Schritt 2: Java-Paket installieren

sudo apt-get update; sudo apt-get install -y java-17-amazon-corretto-jdk 

Schritt 3: Überprüfen Sie, ob Java ordnungsgemäß installiert wurde oder nicht 

Java-Version

Überprüfen Sie die Java-Version

Java zur Umgebungsvariablen hinzufügen 

Schritt 1: Amazon Corretto 17 Java als aktive Version festlegen 

update-alternatives –config java

set corretto17 java

Schritt 2: Fügen Sie die Variable „JAVA_HOME“ in die Datei ~/.bashrc ein 

echo „export JAVA_HOME=/usr/lib/jvm/java-17-amazon-corretto“ >> ~/.bashrc

Java-Home-Variable hinzufügen

Schritt 3: Überprüfen Sie die Datei ~/.bashrc 

tail -3 ~/.bashrc 

Überprüfen Sie die BashRc-Datei

Schritt 4: Laden Sie die Umgebungsvariablen neu 

Quelle ~ /. Bashrc 

Umgebungsvariablen neu laden

Schritt 5: Überprüfen Sie den Wert der Variable JAVA_HOME 

echo $JAVA_HOME 

Überprüfen Sie die Java-Home-Variable

Unterzeichnung 

Schritt 1: Wechseln Sie im Terminal in den Ordner, der Ihre Datei „ec_pkcs11client.ini“ enthält.

Arbeitsverzeichnis ändern

Schritt 2: Führen Sie den Signaturbefehl aus diesem Verzeichnis aus. 

–sign –pkcs11Config –keyAlias –keyPassword KEINE –inFile –outFile 

Nachfolgend finden Sie einen Beispielbefehl:

../xmlsectool-3.0.0-bin/xmlsectool-3.0.0/xmlsectool.sh –sign –pkcs11Config pkcs11properties.cfg –keyAlias ​​DemoCertificate –keyPassword NONE –inFile ../xmlSample.xml –outFile ../out-xmlSample.xml 

Verification 

Führen Sie den Überprüfungsbefehl aus

–verifySignature –pkcs11Config –keyAlias –keyPassword KEINE –inFile 

Nachfolgend finden Sie einen Beispielbefehl: 

../xmlsectool-3.0.0-bin/xmlsectool-3.0.0/xmlsectool.sh –verifySignature –pkcs11Config pkcs11properties.cfg –keyAlias ​​gpg2 –keyPassword NONE –inFile ../out-sample.xml 

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

Konfiguration des PKCS#11 Wrappers unter MacOS

Voraussetzungen: 

Bevor wir uns mit dem Prozess der XML-Signierung mit dem XMLSec-Tool und unserem PKCS#11-Wrapper auf einem MacOS-Computer befassen, stellen Sie sicher, dass Folgendes bereit ist: 

  • MacOS-Version: MacOS Version 13 (Ventura) oder höher (getestete Umgebung ist MacOS 15.1 Sequoia)  
  • Abhängigkeiten: Installieren Sie liblog4cxx und curl.  

Um die Abhängigkeiten zu installieren, führen Sie die folgenden Befehle aus 

  • brew install log4cxx 
  • brew installieren curl 

Installieren des PKCS#11-Wrappers von EC

Schritt 1: Gehen Sie in EC CodeSign Secure v3.02 zum Abschnitt „Signierungstools“ und laden Sie den PKCS#11 Wrapper für Mac herunter.

Laden Sie PKCS#11 für Mac herunter

Schritt 2: Generieren Sie anschließend ein P12-Authentifizierungszertifikat über das Dropdown-Menü System Setup > Benutzer > Authentifizierungszertifikat generieren.

P12-Zertifikate generieren

Schritt 3: Gehen Sie zu Ihrem MacOS-Clientsystem und bearbeiten Sie die Konfigurationsdateien ( ec_PKCS#11client.ini und PKCS#11properties.cfg ), die im PKCS#11 Wrapper heruntergeladen wurden.

Konfigurationsdatei bearbeiten

XMLSec-Tool installieren

Schritt 1: Laden Sie die neueste Version des XMLSec Tools (xmlsectool-3.0.0-bin.zip) über diesen Link herunter.

XMLsec-Tool installieren

Sie benötigen diese Shell-Datei, um die XML-Signierung durchzuführen

XMLsectool.sh-Datei nach dem Download

Laden Sie Java herunter und installieren Sie es auf Ihrem MacOS-Computer.

Schritt 1: Laden Sie Amazon Corretto 17 Java herunter (Sie können hier mit dem XMLSec-Tool nach anderen unterstützten Java-Versionen suchen ).

Über diesen Link können Sie die .pkg-Datei für die MacOS-Umgebung herunterladen.

Schritt 2: Java-Paket installieren 

Beginnen Sie die Installation mit der heruntergeladenen Datei. 

XMLsectool installieren

Schritt 3: Überprüfen Sie, ob Java ordnungsgemäß installiert wurde.

Java-Version 

Überprüfen Sie die Java-Version

Java zur Umgebungsvariablen hinzufügen 

Schritt 1: Ermitteln Sie den vollständigen Installationspfad von Amazon Corretto 17 Java.

/usr/libexec/java_home –verbose

Holen Sie sich den vollständigen Installationspfad für Corretto 17

Schritt 2: Fügen Sie die Variable „JAVA_HOME“ in die Datei ~/.zshrc ein 

echo 'export JAVA_HOME=”/Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home”' >> ~/.zshrc 

Java-Home-Variable hinzufügen

Schritt 3: Laden Sie die Umgebungsvariablen neu 

Quelle ~/.zshrc 

Umgebungsvariable neu laden

Schritt 4: Überprüfen Sie den Wert der Variable JAVA_HOME 

echo $JAVA_HOME 

Überprüfen Sie die Java-Home-Variable

Unterzeichnung

Schritt 1: Wechseln Sie im Terminal in den Ordner, der Ihre Datei „ec_pkcs11client.ini“ enthält.

Arbeitsverzeichnis ändern

Schritt 2: Führen Sie den Signaturbefehl aus diesem Verzeichnis aus. 

–sign –pkcs11Config –keyAlias –keyPassword KEINE –inFile –outFile 

Nachfolgend finden Sie einen Beispielbefehl: 

../xmlsectool-3.0.0/xmlsectool.sh –sign –pkcs11Config pkcs11properties.cfg –keyAlias ​​DemoCertificate –keyPassword NONE –inFile ../xmlSample.xml –outFile ../SignedSample.xml 

Verification 

Führen Sie den Überprüfungsbefehl aus

–verifySignature –pkcs11Config –keyAlias –keyPassword KEINE –inFile 

Nachfolgend finden Sie einen Beispielbefehl: 

../xmlsectool-3.0.0/xmlsectool.sh –verifySignature –pkcs11Config pkcs11properties.cfg –keyAlias ​​gpg2 –keyPassword NONE –inFile ../Signedsample.xml 

Enterprise Code-Signing-Lösung

Holen Sie sich mit unserer Code-Signing-Lösung eine Lösung für alle Ihre kryptografischen Software-Code-Signing-Anforderungen.

Fazit 

Angesichts der zunehmenden Menge unstrukturierter Daten ist die XML-Dokumentsignierung unerlässlich . Die nahtlose Integration unseres PKCS#11-Wrappers und des XMLSec-Tools bietet eine flexible und effiziente Lösung für die XML-Dokumentsignierung.

Mit der CodeSign Secure- Lösung von Encryption Consulting können Sie das Vertrauen Ihrer Kunden stärken und ausbauen. Sie bietet Funktionen wie clientseitiges Hashing, rollenbasierte Zugriffskontrolle und Anwendungsmanagement zum Schutz Ihrer Daten. Die Lösung ermöglicht die Integration verschiedener DevOps CI/CD- Pipelines für die vollautomatische Codesignierung. Dieser rollenbasierte, HSM-gestützte Schutz gewinnt jährlich an Bedeutung: Laut dem GitGuardian-Bericht „State of Secrets Sprawl 2026“ wurden allein im Jahr 2025 28.65 Millionen neue, fest codierte Geheimnisse auf öffentlichen GitHub-Plattformen offengelegt – ein Anstieg von 34 % gegenüber dem Vorjahr. Die durchschnittliche Zeit, die ein Team benötigt, um ein durchgesickertes Geheimnis zu beheben, beträgt laut dem Verizon-Bericht „Data Breach Investigations Report 2025“ 94 Tage. Dieser Zeitraum ist lang genug, um den zusätzlichen Einrichtungsaufwand für die vollständige Speicherung der Signaturschlüssel auf der Festplatte zu rechtfertigen.

Häufig gestellte Fragen

Was ist XMLSec (xmlsectool) und was bewirkt es?

XMLSec (xmlsectool) ist ein Open-Source-Befehlszeilentool zum Signieren, Verifizieren, Verschlüsseln und Entschlüsseln von XML-Dokumenten. Es wird vom Shibboleth-Projekt gepflegt und arbeitet mit dem PKCS#11-Wrapper von EC zusammen, um die eigentliche Signieroperation an ein Hardware-Sicherheitsmodul zu delegieren.

Warum sollte man eine XML-Datei mit PKCS#11 signieren anstatt mit einem lokalen Keystore?

Ein lokaler Schlüsselspeicher speichert den privaten Schlüssel auf der Festplatte, wo er bei einer Kompromittierung des Dateisystems angreifbar ist. PKCS#11 ermöglicht es xmlsectool, die Signierung an ein Hardware-Sicherheitsmodul oder einen Token zu delegieren, sodass der Schlüssel vollständig in Hardware generiert, gespeichert und verwendet und niemals exportiert wird.

Welche Plattformen werden vom PKCS#11-Wrapper von EC für die XML-Signatur unterstützt?

Diese Anleitung beschreibt die Verwendung von Ubuntu und macOS. Im Gegensatz zu den Anleitungen von EC für OpenSSL und Jarsigner PKCS#11, die auch Windows abdecken, ist die Einrichtung unter Windows derzeit nicht für die XMLSec-Signierung unter Windows dokumentiert.

Welche Java-Version benötigt xmlsectool?

Diese Anleitung verwendet Amazon Corretto 17 unter Ubuntu und macOS. Andere Java-Distributionen und -Versionen werden ebenfalls unterstützt; die aktuelle Kompatibilitätsliste finden Sie auf der Seite „Java-Distributionen“ im Shibboleth-Wiki, bevor Sie von Corretto 17 abweichen.

Wie lautet der genaue xmlsectool-Befehl zum Signieren einer XML-Datei?

Der Kernbefehl lautet: xmlsectool.sh --sign --pkcs11Config pkcs11properties.cfg --keyAlias <key alias> --keyPassword NONE --inFile <input.xml> --outFile <output.xml>Führen Sie das Skript aus dem Ordner aus, der die Konfigurationsdatei Ihres Wrappers enthält. Es ist unter Ubuntu und macOS identisch.

Wie kann ich eine signierte XML-Datei überprüfen?

Führen Sie xmlsectool.sh --verifySignature --pkcs11Config pkcs11properties.cfg --keyAlias <key alias> --keyPassword NONE --inFile <signed.xml>Hierbei wird die Signatur anhand des Dateiinhalts mit derselben PKCS#11-Konfiguration überprüft, die zum Signieren der Datei verwendet wurde.

Ist eine Windows-Konfiguration für die XMLSec + PKCS#11-Signierung verfügbar?

Nicht in diesem Leitfaden. Falls Ihr Workflow Windows erfordert, unterstützt der PKCS#11-Wrapper von EC Windows für andere Tools wie OpenSSL und Jarsigner, jedoch sind die XMLSec-spezifischen Windows-Schritte hier derzeit nicht dokumentiert.

Welche Version von CodeSign Secure enthält aktuell diesen PKCS#11-Wrapper?

CodeSign Secure v3.02, das neben der bestehenden PKCS#11-basierten Tool-Unterstützung auch native LMS- und ML-DSA-Post-Quantum-Signierung, GPG2-Integration und Debian/RPM-Paketsignierung hinzufügte.

Wie viele Daten werden weltweit tatsächlich generiert, und warum ist das für die XML-Signatur relevant?

Laut dem im Juni 2026 veröffentlichten IDC-Bericht „Global DataSphere Forecast, 2026-2030“ wird das weltweite Datenvolumen bis 2030 700 Zettabyte übersteigen. Da immer mehr dieser Daten in XML-basierten Formaten und Integrationen verarbeitet werden, wird die Überprüfung von Authentizität und Integrität in großem Umfang ohne automatisierte, hardwaregestützte Signatur anstelle manueller Vertrauensprüfungen praktisch unmöglich.