XML-signering är en process som innebär att man lägger till en digital signatur i ett XML-dokument för att säkerställa dess integritet, äkthet och obestridlighet. Genom att tillämpa en digital signatur på ett XML-dokument intygar signeraren informationens äkthet och integritet, vilket gör det möjligt att verifiera dokumentets ursprung och säkerställa att det inte har ändrats under transport eller lagring.
Den digitala signaturen skapas med hjälp av asymmetriska krypteringstekniker , vanligtvis baserade på PKI (public key infrastructure) . Signeraren genererar en privat nyckel som förvaras säkert och en motsvarande offentlig nyckel som kan delas med andra. Den privata nyckeln används för att kryptera en hash eller digest av XML-dokumentet, vilket skapar den digitala signaturen. Den krypterade digesten fungerar som en unik representation av informationen och läggs till i XML-dokumentet.
XML-signering är avgörande inom olika områden, inklusive e-handel, elektronisk fakturering, leveranskedjehantering och myndighetsapplikationer. Det möjliggör säker elektronisk dokumentutbyte, fastställer datas äkthet och säkerställer obestridlighet, vilket innebär att undertecknaren senare inte kan förneka sin inblandning eller dokumentets integritet.
En översikt över XML-signeringsprocessen:
- En passande kryptografisk algoritm, Såsom RSA, DSA, eller ECDSA, väljs av XML-signeraren för att skapa den digitala signaturen.
- XML-dokumentet som ska signeras förbereds. Detta innebär att säkerställa att dokumentet följer den erforderliga XML-syntaxen och -strukturen.
- XML-kanonisering tillämpas på dokumentet, vilket säkerställer att eventuella variationer i blanksteg, attributordning eller namnrymdsprefix inte påverkar signaturens giltighet. Kanonisering producerar en standardiserad form av XML-dokumentet för signering.
- En sammanfattning, även känd som en hash, beräknas över det kanoniserade XML-dokumentet. Sammanfattningen fungerar som ett unikt fingeravtryck av dokumentet och används i signeringsprocessen.
- Sammanfattningen krypteras med undertecknarens privata nyckel, vilket skapar den digitala signaturen. Den privata nyckeln förvaras säkert av undertecknaren och ska inte vara tillgänglig för obehöriga parter.
- Den digitala signaturen infogas i XML-dokumentet, vanligtvis som ett ytterligare element eller attribut. Detta gör att signaturen kan associeras med de signerade uppgifterna.
Encryption Consulting har en kodsigneringslösning , ” CodeSign Secure ”, som kan hjälpa dig med manipulationssäker förvaring av nycklar och fullständig insyn och kontroll över kodsigneringsaktiviteter. De privata nycklarna till kodsigneringscertifikatet kan lagras i en HSM för att eliminera riskerna med stulna, skadade eller missbrukade nycklar. Inom denna lösning erbjuder vi ett verktyg, XML Signer, som kan signera XML-filer. Stegen nedan hjälper dig att enkelt använda vårt verktyg.
Signera en XML-fil med XML Signer, kortfattat: Ställ in miljövariablerna för SSL-klientautentiseringscertifikatet och kör sedan
xmlsigner -S <file> -u <username> -k <key_name> -a <algorithm> -c <certificate>Verktyget producerar en signerad kopia med suffixet ”_signed”; den privata nyckeln förblir på serversidan och hanteras aldrig direkt av CLI.
Key Takeaways
- SHA256 är standard hashalgoritmen om
-autelämnas; SHA224 är ett svagare alternativ som ingår för kompatibilitet och bör generellt sett inte föredras för nya signeringsarbetsflöden. - SSL-klientautentiseringscertifikatet autentiserar CLI:et mot Encryption Consultings signeringsserver; det är en separat autentiseringsuppgift från kodsigneringscertifikatet/nyckeln som används för att faktiskt signera XML-dokumentet.
Miljömatris
| Komponent | Krav |
|---|---|
| OS | Windows, macOS eller Linux (xmlsigner.exe i Windows, ./xmlsigner på andra ställen) |
| Klientautentisering | SSL-klientautentiseringscertifikat i PKCS12-format (.p12 eller .pfx), erhållet från Encryption Consulting |
| Signeringsuppgifter | Ett registrerat användarnamn, nyckelnamn och certifikat tillhandahållet av Encryption Consulting |
| Stödda hashalgoritmer | SHA224, SHA256 (standard), SHA384, SHA512 |
| Nyckelförvaring | Serversidan; CLI hanterar aldrig den råa privata nyckeln direkt |
Förutsättning
För att kunna använda XML Signer måste användarna först ange miljövariabler för SSL Client Authentication Certificate- sökvägen och certifikatlösenordet. Fråga krypteringskonsultteamet om du inte redan har det.
Obs! SSL-klientautentiseringscertifikatet ska vara i PKCS12-formatet (.p12 eller .pfx)
Kör följande kommandon för att ställa in miljövariabler:
Mac eller Linux
$ export SIGNER_SSL_CERT_PFX=path_to_ssl_certificate
$ export SIGNER_SSL_CERT_PFX_PASS=your_client_certificate_password
Windows
$ set SIGNER_SSL_CERT_PFX=path_to_ssl_certificate
$ set SIGNER_SSL_CERT_PFX_PASS=your_client_certificate_password
Hur använder man XML Signer-verktyget?
Hämta versionen av XML Signer Utility
Kör kommandot nedan
Mac eller Linux
$./xmlsigner -v
Windows
$ xmlsigner.exe -v
Få hjälp av XML Signer Utility
Kör kommandot nedan
Mac eller Linux
$./xmlsigner -h or $./xmlsigner --help
Windows
$ xmlsigner.exe -h or $ xmlsigner.exe --help
Signera ett XML-dokument
Signer-verktyget genererar det signerade dokumentet med samma namn och postfixet "_signed"
Använd underkommandot signera för att signera ett XML-dokument
./xmlsigner -S <file_to_be_signed> -u <user_name> -k <key_name> -a <algorithm> -c <key_certificate> -q
-S : XML-dokument som ska signeras.
-u : Användarnamn. Ett användarnamn på Encryption Consulting-servern. Fråga Encryption Consulting-teamet om du inte redan har det.
-k : Nyckel-/certifikatnamn för signering/verifiering tillhandahållet av Encryption Consulting-servern. Fråga Encryption Consulting-teamet om du inte redan har det.
-a : Algoritm som ska användas för signering. Ett av följande alternativ bör användas:
- SHA224
- SHA256 (Standard)
- SHA384
- SHA512
Om algoritmen inte anges kommer SHA256 att användas som standard.
-c : Certifikatfil tillhandahållen av Encryption Consulting-servern.
-q : Kör tyst.
-h : Visa hjälp
Exempel
Mac eller Linux
./xmlsigner -h
./xmlsigner -S file.xml -u admin -k SignCertificateName -a SHA256 -c
<path /to/certificate>
Windows
xmlsigner.exe -h
xmlsigner.exe -S file.xml -u admin -k SignCertificateName -a SHA256 -c
<path /to/certificate>
Verifiera signaturen
Efter signering, bekräfta att utdatafilen (med suffixet ”_signed”) innehåller ett giltigt Signature-element innan du distribuerar den. Öppna den signerade XML-filen och kontrollera om det finns en <Signature> element under XML-DSig-namnrymden (http://www.w3.org/2000/09/xmldsig#) innehållande SignedInfo, SignatureValueoch KeyInfo underordnade element; ett saknat eller felaktigt formaterat signaturblock indikerar att signeringssteget misslyckades tyst snarare än att lyckades tyst.
Vanliga fel
| Fel | Troligtvis orsak | Fast |
|---|---|---|
| Autentiseringsfel vid anslutning till signeringsservern | Miljövariablerna SIGNER_SSL_CERT_PFX eller SIGNER_SSL_CERT_PFX_PASS är inte angivna, felaktiga eller så är sökvägen till .p12/.pfx-filen felaktig. | Verifiera igen att båda miljövariablerna exporteras i den aktuella shell-sessionen, och inte bara är inställda i ett skript som inte har källkod. |
| Nyckel/certifikat hittades inte | Värdet som skickas till -k matchar inte ett nyckelnamn som är registrerat på Encryption Consulting-servern för det användarnamnet. | Bekräfta det exakta nyckelnamnet med krypteringskonsultteamet istället för att gissa ett namn |
| Ogiltig XML / signering misslyckas på indatafilen | Indatafilen är inte korrekt utformad XML, eller så misslyckas kanoniseringen på grund av felaktigt utformade namnrymder. | Kontrollera att XML-filen är korrekt utformad innan signering; felaktigt utformad XML kanoniseras inte korrekt oavsett signeringsverktyg. |
Användning och rengöring av CI/CD
För upprepad signering i en pipeline, ställ in SIGNER_SSL_CERT_PFX och SIGNER_SSL_CERT_PFX_PASS miljövariabler som pipeline-hemligheter snarare än att hårdkoda dem i ett skript och anropa xmlsigner med -q flagga för tyst, icke-interaktiv körning. Verifiera idempotens genom att kontrollera den förväntade <Signature> elementet i utdatafilen omedelbart efter signering och misslyckas med bygget om det saknas, snarare än att anta att kommandots avslutningskod ensamt bekräftar framgången.
För rensning: om klientautentiseringscertifikatet för .p12/.pfx kopierades till en build-agent för testning, ta bort det när pipelinen har bekräftats fungera och föredra att injicera det som en pipeline-hemlighet vid körning snarare än att lagra det på agentens filsystem under lång tid.
Vanliga frågor om partihandel med mat och dryck
Hur vet jag att signeringskommandot faktiskt producerade en giltig signatur?
Kontrollera utdatafilen "_signed" för en korrekt utformad <Signature> elementet under XML-DSig-namnrymden med SignedInfo, SignatureValue och KeyInfo närvarande, snarare än att anta att enbart en avslutningskod noll betyder att signaturen är giltig.
Vad är skillnaden mellan SSL-klientautentiseringscertifikatet och signeringscertifikatet?
SSL-klientcertifikatet (PKCS12/.p12/.pfx) autentiserar CLI-verktyget mot Encryption Consultings signeringsserver. Den faktiska kodsigneringsnyckeln som används för att skapa XML-signaturen är en separat, serverhanterad autentiseringsuppgift som refereras till av -k nyckelnamn.
Slutsats
XML-signering säkerställer integriteten, äktheten och oavvisligheten hos XML-dokument. Den lägger till en digital signatur som verifierar dokumentets ursprung och förhindrar manipulation. XML-signering är avgörande för säkert datautbyte, främjar förtroende för elektroniska transaktioner och tillförlitlig kommunikation. Den används inom e-handel, fakturering, leveranskedjehantering med mera. Genom att använda verktyg och bibliotek förenklas XML-signeringsprocessen och kan integreras i olika miljöer. För att få tillgång till vårt verktyg som kan hjälpa dig med XML-signeringsprocessen, vänligen kontakta oss på [email protected]
