Signera Office-makron med ett Code Signing-certifikat
Signera VBA-projekt i Excel (.xlsm), Word (.docm), PowerPoint (.pptm) och andra Office-filer. Den här guiden täcker både USB-token och Azure Key Vault-signering, inklusive det kritiska 32-bitarskravet som orsakar de flesta signeringsfel.
Varför signera Office-makron?
- ✓ Betrodd körning utan säkerhetsvarningar när filen öppnas
- ✓ Grupprincipstyrning: IT-avdelningar kan begränsa körning till enbart signerade makron
- ✓ Manipulationsskydd: V3-signaturer åtgärdar CVE-2020-0760
- ✓ Företagskrav: många organisationer kräver signerade makron i sina säkerhetspolicyer
Viktigt: 32-bitars signeringskrav
Office SIP (Subject Interface Package)-DLL:erna är 32-bitars. Du måste använda 32-bitarsversionen av signtool.exe eller 32-bitars .NET-värden för AzureSignTool. Att använda 64-bitarsverktyg är den vanligaste orsaken till att signering av Office-filer misslyckas.
Du behöver även OfficeSIPs-paketet från Microsoft (nedladdnings-ID 56617) som tillhandahåller msosipx.dll
för moderna Office-format och msosip.dll för äldre format.
Konfiguration
1. Installera OfficeSIPs
Ladda ned OfficeSIPs-paketet från
Microsoft Download Center (ID 56617) ↗.
Packa upp paketet och lokalisera msosipx.dll (moderna format) och msosip.dll (äldre format).
2. Registrera med 32-bitars regsvr32
Använd 32-bitars regsvr32 för att registrera SIP-DLL:en:
3. Hitta 32-bitars signtool
32-bitars signtool finns i x86-katalogen i Windows SDK:
Signering med signtool (USB-token / SafeNet)
Använd 32-bitars signtool med flaggan /sha1 för att identifiera ditt certifikat via tumavtryck.
Kör kommandot tre gånger för att skapa alla tre signaturtyper.
Kör 3 gånger (skapar Legacy-, Agile- och V3-signaturer):
signtool sign /sha1 YOUR_THUMBPRINT /fd sha256 ^ /tr http://timestamp.digicert.com /td sha256 ^ "C:\path\to\your-file.xlsm"
Inkludera alltid tidsstämpling (/tr) så att signaturerna förblir giltiga efter att certifikatet löper ut.
Signering med AzureSignTool (Azure Key Vault)
Använd x86 .NET-värden eller publicera AzureSignTool med flaggan -r win-x86.
Kör kommandot tre gånger (precis som signtool).
Kör 3 gånger (skapar Legacy-, Agile- och V3-signaturer):
"C:\Program Files (x86)\dotnet\dotnet.exe" tool run AzureSignTool sign ^ -kvu https://your-vault.vault.azure.net ^ -kvc your-certificate-name ^ -kvt YOUR_TENANT_ID ^ -kvi YOUR_CLIENT_ID ^ -kvs YOUR_CLIENT_SECRET ^ -fd sha256 ^ -tr http://timestamp.digicert.com ^ -td sha256 ^ "C:\path\to\your-file.xlsm"
Trippelsignering förklarad
Office VBA-projekt använder tre separata signaturformat. Varje körning av signtool skapar en ytterligare signatur.
| Körning | Signatur | Lagring | Kommentar |
|---|---|---|---|
| 1 | Legacy | vbaProjectSignature.bin | Ursprungligt format, alla Office-versioner |
| 2 | Agile | vbaProjectSignatureAgile.bin | Office 2010 och senare |
| 3 | V3 | vbaProjectSignatureV3.bin | Åtgärdar CVE-2020-0760. Microsoft 365 2102+, Office 2019/2016 med uppdateringar. |
Filtyper som stöds
Moderna OOXML-format (använder msosipx.dll)
Äldre format (använder msosip.dll)
Signeringsprocessen är densamma för alla filtyper.
Vanliga fel och lösningar
"File format cannot be signed because it is not recognized"
OfficeSIPs (msosipx.dll) är inte registrerade, eller så använder du 64-bitars signtool. Registrera med 32-bitars regsvr32 och använd x86-versionen av signtool.
Signaturen syns inte i Office
Du signerade bara en gång istället för tre. Office kräver alla tre signaturformat (Legacy, Agile, V3) för att signaturen ska visas i VBA-editorn.
AzureSignTool misslyckas med att signera Office-filer
Du använder inte x86 .NET-körmiljön. Använd C:\Program Files (x86)\dotnet\dotnet.exe för att köra AzureSignTool, eller publicera den som en fristående x86-binär med -r win-x86.
Code Signing-certifikat
OV Code Signing
DigiCert CodeSign OV
DigiCert OV Code Signing. Brett plattformsstöd.
GlobalSign CodeSign
GlobalSign OV Code Signing. Starkt varumärke.
EV Code Signing
Vanliga frågor om signering av Office-makron
Hitta svar på de vanligaste frågorna om SSL-certifikat och FairSSL.
C:\Program Files (x86)\dotnet\dotnet.exe) eller publicera med flaggan -r win-x86. Signeringsprocessen är identisk med signering av exekverbara filer, men du måste köra den tre gånger.1.3.6.1.5.5.7.3.3 täcker både programvarusignering och makrosignering.C:\Program Files (x86)\Windows Kits\10\bin\<version>\x86\.Redo att signera dina Office-makron?
Skapa ett gratis konto och utfärda ditt första certifikat på under 10 minuter.