Lägg till digitala signaturer i presentationer i JavaScript
Översikt
En digital signatur hjälper mottagaren att avgöra vem som har signerat en presentation och om det signerade innehållet har ändrats. Tre relaterade säkerhetskoncept är viktiga här:
- Ett digitalt certifikat är ett elektroniskt intyg som kopplar en identitet till en publik nyckel. En betrodd certifikatutfärdare (CA) kan utfärda ett certifikat, eller så kan en organisation använda ett självsignerat certifikat för interna arbetsflöden.
- En digital signatur skapas från presentationsinnehållet och certifikatinnehavarens privata nyckel. Certifikatets publika nyckel kan sedan användas för att verifiera signaturen. En signatur ger bevis på ursprung och integritet; den krypterar inte presentationen.
- Lösenordsskydd kontrollerar om en användare kan öppna eller ändra en presentation. Det är separat från digital signering och beskrivs i Password-Protected Presentations.
PowerPoint tillhandahåller kommandot Add a Digital Signature under File > Info > Protect Presentation.

Efter att en signerad presentation har öppnats kan PowerPoint visa en signatur‑status‑notifiering.

Aspose.Slides exponerar signaturer via Presentation.getDigitalSignatures, vilket returnerar en DigitalSignatureCollection som innehåller DigitalSignature‑objekt. En presentation kan innehålla flera signaturer.
Förstå PFX‑certifikat och lösenord
En PFX‑fil, även känd som en PKCS#12‑fil och vanligtvis med filändelsen .pfx eller .p12, kan innehålla ett X.509‑certifikat, dess privata nyckel och certifikatkedjan. Den privata nyckeln är det som möjliggör för innehavaren att skapa en signatur. Ett certifikat utan en åtkomlig privat nyckel kan inte användas för att signera en presentation.
PFX‑lösenordet skyddar certifikatpaketet och den privata nyckeln. Det är inte ett lösenord för att öppna eller redigera presentationen. Lagra inte PFX‑filer eller deras lösenord i källkodshantering. I produktion bör åtkomsten till certifikatfilen begränsas och lösenordet hämtas från en hemlig lagring eller en annan skyddad konfigurationskälla. Exemplen nedan använder en miljövariabel endast för att undvika att bädda in lösenordet i kod.
Lägg till en digital signatur i en presentation
För att signera ett verkligt presentationsarbetsflöde, läs in en befintlig PPTX‑fil, skapa en DigitalSignature från ett PFX‑certifikat och dess lösenord, lägg till signaturen i presentationens samling och spara till en PPTX‑fil.
const slides = require("aspose.slides.via.java");
const certificatePassword = process.env.PFX_PASSWORD;
if (!certificatePassword) {
throw new Error("Set the PFX_PASSWORD environment variable.");
}
const presentation = new slides.Presentation("InputPresentation.pptx");
try {
const signature = new slides.DigitalSignature("signing-certificate.pfx", certificatePassword);
signature.setComments("Approved for release.");
presentation.getDigitalSignatures().add(signature);
presentation.save("InputPresentation-signed.pptx", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Att spara resultatet under ett nytt namn bevarar den osignerade källfilen. Värdet som sätts av DigitalSignature.setComments beskriver signaturens syfte; det är ingen säkerhetskontroll.
Validera digitala signaturer
När du läser in en signerad PPTX‑fil, inspektera varje objekt som returneras av Presentation.getDigitalSignatures. Metoden DigitalSignature.isValid indikerar om den inbäddade signaturen är giltig för det aktuella presentationsinnehållet.
Följande exempel använder också Node.js‑klassen X509Certificate för att läsa ämnesnamnet från varje inbäddat certifikat.
const { X509Certificate } = require("node:crypto");
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation("InputPresentation-signed.pptx");
try {
const signatures = presentation.getDigitalSignatures();
const signatureCount = signatures.size();
if (signatureCount === 0) {
console.log("The presentation does not contain digital signatures.");
} else {
let allSignaturesAreValid = true;
for (let index = 0; index < signatureCount; index++) {
const signature = signatures.get_Item(index);
const signatureIsValid = signature.isValid();
const signatureStatus = signatureIsValid ? "VALID" : "INVALID";
const signTime = signature.getSignTime().toString();
const certificateData = signature.getCertificate();
const certificate = new X509Certificate(Buffer.from(certificateData));
const signerName = certificate.subject;
console.log(`${signerName}, ${signTime} -- ${signatureStatus}`);
allSignaturesAreValid = allSignaturesAreValid && signatureIsValid;
}
if (allSignaturesAreValid) {
console.log("All embedded signatures are valid for the current presentation.");
} else {
console.log("At least one embedded signature is invalid.");
}
}
} finally {
presentation.dispose();
}
Ett ogiltigt resultat betyder vanligtvis att det signerade presentationsinnehållet eller signaturdata har förändrats efter signering, eller att filen är skadad. Att ta bort alla signaturer ger en osignerad presentation, så att bara kontrollera giltigheten av objekt är inte tillräckligt: ett säkerhetskänsligt arbetsflöde måste också verifiera att det förväntade antalet signaturer och förväntade undertecknare finns.
Detta giltighetsresultat bör inte betraktas som ett fullständigt certifikat‑tillitsbeslut. Beroende på din säkerhetspolicy kan din applikation också behöva bygga och validera X.509‑certifikatkedjan, kontrollera certifikatets giltighetsdatum och revocationsstatus, bekräfta förväntat ämne eller fingeravtryck, verifiera nyckelanvändning och utvärdera en betrodd tidsstämpel. Värdet från DigitalSignature.getSignTime i sig är inte bevis från en betrodd tidsstämplingsmyndighet.
Ta bort digitala signaturer
Att ta bort signaturer ändrar presentationens säkerhetstillstånd. Följande exempel läser in en signerad PPTX‑fil, tar bort alla signaturer med DigitalSignatureCollection.clear, och sparar en osignerad kopia.
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation("InputPresentation-signed.pptx");
try {
presentation.getDigitalSignatures().clear();
presentation.save("InputPresentation-unsigned.pptx", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
För att ta bort endast en signatur, anropa DigitalSignatureCollection.removeAt med dess nollbaserade index. Spara till en ny fil om inte överskrivning av den signerade originalfilen är en explicit del av ditt arbetsflöde.
Redigerings‑ och formatöverväganden
- En signatur gör inte en presentation skrivskyddad. Användare och applikationer kan fortfarande redigera filen, men ändringar i signerat innehåll gör vanligtvis den befintliga signaturen ogiltig.
- Slutför alla avsedda redigeringar innan signering. Om en presentation måste ändras, spara den reviderade presentationen och signera den revisionen igen.
- Behåll slutresultatet i PPTX‑format. Att konvertera en signerad presentation till ett annat format överför inte den ursprungliga PPTX‑signaturen som en giltig signatur för den konverterade filen.
- Behandla certifikatets privata nyckel som känslig. Alla som får tag på den privata nyckeln och dess lösenord kan kunna skapa signaturer som ser ut att komma från den certifikatinnehavaren.
- Behåll den osignerade källan eller en annan kontrollerad kopia när din dokumentbevarande‑policy kräver det.
FAQ
Krypterar en digital signatur presentationen?
Nej. En digital signatur ger bevis om ursprung och integritet, men presentationsinnehållet förblir läsbart om inte separat kryptering tillämpas. Använd lösenordsskydd när åtkomst till innehållet måste begränsas.
Är PFX‑lösenordet samma som presentationslösenordet?
Nej. PFX‑lösenordet låser upp den privata nyckeln som lagras i certifikatpaketet. Det styr inte vem som kan öppna eller redigera PPTX‑filen.
Kan jag använda ett självsignerat certifikat?
Tekniskt kan ett självsignerat certifikat användas när det innehåller en åtkomlig privat nyckel. Mottagare kommer dock inte automatiskt att lita på det, såvida inte certifikatet uttryckligen har lagts till i deras betrodda miljö. Publika eller tvärorganisationella arbetsflöden använder vanligtvis ett certifikat utfärdat av en betrodd CA.
Vad gör en signatur ogiltig?
Att ändra signerat presentationsinnehåll eller signaturdata efter signering kan göra signaturen ogiltig. Filkorruption kan också få valideringen att misslyckas. Om alla signaturer tas bort är presentationen osignerad snarare än en fil som innehåller en ogiltig signatur.
Betyder en giltig signatur att jag ska lita på undertecknaren?
Inte i sig själv. Signaturens integritet och förtroendet för undertecknaren är separata beslut. En produktionsvalideringspolicy bör också kontrollera certifikatkedjan, giltighetsperioden, revokeringsstatus, förväntad identitet, nyckelanvändning och eventuella krav på betrodda tidsstämplar.
Vad händer när certifikatet går ut?
Certifikatets utgång ändrar inte presentationsbytarna, men det påverkar utvärderingen av certifikattillit. Huruvida en signatur förblir acceptabel beror på din policy och på om en giltig betrodd tidsstämpel visar att signeringen skedde medan certifikatet var giltigt. Förlita dig inte enbart på den visade signeringstiden som en betrodd tidsstämpel.
Kan en signerad presentation fortfarande redigeras?
Ja. Signering låser inte filen. Att redigera signerat innehåll gör vanligtvis den befintliga signaturen ogiltig, så slutför presentationen först och signera den slutgiltiga revisionen.
Kan en presentation innehålla mer än en signatur?
Ja. Lägg till varje signatur i samlingen som returneras av Presentation.getDigitalSignatures innan du sparar. Under validering, inspektera varje signatur och bekräfta att alla erforderliga undertecknare finns.
Vilka presentationsformat stöder dessa operationer?
Aspose.Slides stöder de digitala signatur‑operationer som beskrivs här endast för PPTX. PPT‑ och OpenDocument‑presentationsformat stöds inte av detta API‑arbetsflöde.
Kan jag ta bort en signatur utan att påverka bilderna?
Ja. Du kan ta bort en signatur eller tömma hela samlingen och sedan spara presentationen. Bildinnehållet förblir tillgängligt, men den sparade filen bär inte längre den borttagna signaturens bevis.