Meteen naar de inhoud

Certificaten voor 47 dagen komen eraan. Ben je er klaar voor?

Handel nu →

Hoe u een Excel-macroproject ondertekent met SignTool

Onderteken Excel-macroproject met SignTool

Codeondertekening is een beveiligingsmechanisme dat wordt gebruikt om de authenticiteit en integriteit van digitale code te verifiëren. Het omvat het toevoegen van een digitale handtekening aan code, waarmee gebruikers kunnen vaststellen wie de code heeft gemaakt en of ermee is geknoeid. Codeondertekening wordt vaak gebruikt om uitvoerbare bestanden, bibliotheken en scripts te ondertekenen, maar kan ook worden gebruikt om Excel-macrobestanden te ondertekenen.

Een Excel-macroproject ondertekenen met SignTool, in het kort: Installeer de Windows SDK voor SignTool, installeer het Office VBA Subject Interface Package (SIP) zodat SignTool .xls/.xlsm-bestanden herkent, en voer het vervolgens uit. signtool sign met uw certificaat en een CSP of KSP die naar uw sleutel verwijst, gevolgd door signtool verify /pa om de handtekening te bevestigen.

Key Takeaways

  • SignTool herkent standaard geen macrobestanden van Office. Zonder het Subject Interface Package geïnstalleerd en geregistreerd, mislukt het ondertekenen van een .xlsm-bestand, zelfs met een geldig certificaat.
  • De opdrachten voor ondertekenen en verifiëren moeten betrekking hebben op hetzelfde bestand en dezelfde extensie. Het ondertekenen van een .xlm-bestand en het verifiëren van een .xlsm-bestand zijn bijvoorbeeld twee verschillende bewerkingen op twee verschillende bestandstypen.
  • Het ondertekenen van macro's maakt beleid mogelijk, het onderdrukt niet alleen waarschuwingen: beheerders kunnen hiermee groepsbeleid instellen om de uitvoering alleen toe te staan ​​voor macro's die zijn ondertekend met vertrouwde certificaten. Dit is de feitelijke beveiligingsmaatregel, niet de ondertekening zelf.

Omgevingsmatrix

Bestanddeeleis
OSWindows 10/11 of Windows Server (SignTool is alleen voor Windows)
SignTool-bronWindows SDK (onderdeel Windows SDK Signing Tools voor desktop-apps)
Kantoor SIPSubject Interface Package voor het digitaal ondertekenen van Microsoft Office-bestanden (vereist voor herkenning van .xls/.xlsm-bestanden)
Runtime-afhankelijkheidMicrosoft Visual C ++ Redistributable
SleutelopslagEen door HSM ondersteunde CSP/KSP (bijvoorbeeld een Key Storage Provider van een leverancier) is geschikt voor productie; een lokaal .pfx-bestand is alleen acceptabel voor geïsoleerde tests.
Ondersteunde bestandsformaten.xls, .xlsm (de verouderde .xlm-indeling is een ander, ouder macro-sheetformaat en is niet uitwisselbaar met .xlsm)

Wat is codeondertekening?

Codeondertekening is een beveiligingsmaatregel waarbij software digitaal wordt ondertekend met een certificaat om de authenticiteit en integriteit ervan te verifiëren. Codeondertekeningscertificaten worden uitgegeven door vertrouwde certificeringsinstanties (CA's) en stellen eindgebruikers in staat te controleren of de software die ze downloaden of uitvoeren niet is gemanipuleerd of gewijzigd sinds deze door de software-uitgever is ondertekend.

Dit helpt voorkomen dat malware en andere schadelijke software op de systemen van gebruikers worden verspreid en geïnstalleerd. Om vertrouwen in een digitale handtekening te creëren en te garanderen dat er niet met de code is geknoeid, vereisen populaire codeondertekeningstools zoals Microsoft Authenticode en Java Code Signing meestal een digitaal certificaat uitgegeven door een vertrouwde externe certificeringsinstantie.

Excel-bestanden ondertekenen

Excel-macrobestanden worden gebruikt om taken in Microsoft Excel te automatiseren. Ze kunnen macro's bevatten: kleine programma's die repetitieve taken automatiseren, zoals het opmaken van gegevens of het genereren van rapporten. Macrobestanden kunnen worden gemaakt met de programmeertaal VBA (Visual Basic for Applications) en kunnen worden opgeslagen met de bestandsextensie .xlsm.

Bedreigingen van macro-economische factoren

Hoewel Office-macro's de beste optie blijven voor bedrijfskritische processen, vormen ze ook een groot beveiligingsrisico. Macro's worden uitgevoerd binnen Office-documenten met dezelfde rechten als de persoon die het document heeft geopend. Daarbij komen nog macro's die hun bevoegdheden nog verder uitbreiden door gebruik te maken van beveiligingslekken, waardoor macro's een krachtig hulpmiddel zijn voor hackers om een ​​organisatie te infiltreren.

Maar wat maakt Macro zo vreselijk? In tegenstelling tot andere programma's gebruiken mensen Office-documenten zonder aarzelen. Vervolgens is er slechts één klik nodig om de macro-uitvoering in te schakelen, wat bijzonder eenvoudig te realiseren is met behulp van social engineering door instructies in een e-mail of zelfs in het document zelf te integreren.

Beheerders komen vaak in de knel als het om macro's gaat, voornamelijk om de volgende redenen:

  • Het is bijna onmogelijk om beleidsinstellingen te bieden die kan definiëren welke macro's mogen worden uitgevoerd.
  • Beleidskaders zoals toepassingsbeheer/whitelisting werkt niet voor macro's.
  • Sommige kwaadaardige macro's kunnen malware-detectoren omzeilen.

Nu rijst de vraag: wat kunnen we doen om onszelf te beschermen tegen macrobedreigingen? Het antwoord is simpel : implementeer macro-ondertekening om veilige eindgebruikersbeleidsregels te creëren.

Door een Excel-macrobestand te ondertekenen, kunt u ervoor zorgen dat gebruikers de code in het bestand kunnen vertrouwen en dat er niet mee is geknoeid. Het digitaal ondertekenen van de macro's van uw organisatie vormt de basis voor de beleidsmogelijkheden van MS Office. Dit stelt u in staat om

  • Gebruik groepsbeleid om alleen uitvoering toe te staan ​​voor macro's die zijn ondertekend met vertrouwde certificaten, en
  • Wijs vertrouwde certificaten toe aan gebruikers en groepen.

Met CodeSign Secure kunnen we het ondertekenings- en verificatieproces vereenvoudigen. Ons proces maakt gebruik van hashing aan de clientzijde om de serversnelheid te verhogen en van HSM's voor de opslag van privésleutels, waardoor het aanvalsoppervlak klein is en bestanden snel en veilig kunnen worden ondertekend.

Beperkingen in huidige benaderingen

Uit deze tabel blijkt dat gemakkelijk toegankelijke beleidsregels ofwel onvoldoende beveiligd zijn ofwel een onaanvaardbaar negatieve impact op de bedrijfsvoering hebben:

Methode Beveiligings niveau Implementatie Business Impact Opmerkingen
Laat gebruikers beslissen of ze de uitvoering van macro's willen inschakelen Medium Hoge Hoge Je kunt er niet altijd op vertrouwen dat gebruikers de beste keuzes maken
Macro-uitvoering inschakelen Laag Hoge Hoge Het is nooit gepast om dit in te schakelen.
Schakel de uitvoering van macro's uit, behalve voor digitaal ondertekende macro's Gemiddeld hoog Medium Hoge Het proces van digitale ondertekening in Office is arbeidsintensief en vereist dat macroschrijvers toegang hebben tot de persoonlijke sleutels van hun ontwikkel-pc.
Schakel de uitvoering van macro's uit, behalve voor gebruikers die ze nodig hebben Gemiddeld hoog Laag Medium Elk van deze gebruikers is nog steeds gevaarlijk, en hun aantal neemt vaak toe.
Macro-uitvoering uitschakelen, behalve voor bepaalde opslaglocaties Gemiddeld hoog Gemiddeld hoog Gemiddeld hoog Hoewel hierdoor het aantal directe online- en e-mailaanvallen afneemt, kan iedereen nog steeds een schadelijk document op een betrouwbare plek achterlaten.
Macro-uitvoering voor iedereen uitschakelen Hoge Hoge Laag Zeer veilig, maar vaak onrealistisch
CodeSign Secure gebruiken Schakel de uitvoering van macro's uit, behalve voor digitaal ondertekende macro's Hoge Hoge Hoge Zorg voor een veiligere procedure die voldoet aan het macro-uitvoeringsbeleid voor het ondertekenen, autoriseren en goedkeuren van beleid.

Oplossing voor codeondertekening voor bedrijven

Ontvang één oplossing voor al uw cryptografische behoeften op het gebied van softwarecodeondertekening met onze codeondertekeningsoplossing.

Stapsgewijs ondertekeningsproces

Hier zijn de stappen om een ​​Excel-macrobestand te ondertekenen. Eerst moeten we de vereiste tools installeren.

Stap 1

We moeten de Windows SDK installeren , die bibliotheken en tools biedt voor het bouwen van Windows-apps. Deze ontwikkelkit installeert een tool genaamd signtool, die onderdeel uitmaakt van de Windows SDK. Klik op 'Installatieprogramma downloaden' en voer het uit zodra het downloaden is voltooid.

U kunt ervoor kiezen om alleen de Windows SDK Signing Tools voor desktop-apps te installeren.

Let op: Onthoud het standaardpad dat wordt weergegeven bij installatie. Dit is handig als u deze opdrachten uitvoert vanaf de opdrachtprompt.

Windows SDK-ondertekeningstools voor desktop-apps

Op de pagina Windows Kits Privacy is elke optie om Microsoft toestemming te geven om inzichten te verzamelen in orde. Klik op Volgende.

Windows Kits Privacypagina

Accepteer de licentieovereenkomst

Licentievoorwaarden voor Windows-software

Deselecteer alle functies behalve Windows SDK Signing Tools voor desktop-apps en selecteer vervolgens installeren. We hebben niet alle functies nodig om het ondertekeningsproces te laten werken.

ondertekeningsproces om te werken

Wanneer u wordt gevraagd of u wilt toestaan ​​dat deze app wijzigingen aanbrengt, selecteert u Ja.

systeemomgevingsvariabelen

Selecteer ten slotte Sluiten en voeg een pad toe aan de systeemomgevingsvariabelen om opdrachten via de opdrachtprompt effectief uit te kunnen voeren.

Windows Software-ontwikkelingskit

Klik op de Windows-zoekbalk op de taakbalk en typ 'Bewerk de systeemomgevingsvariabelen'. Selecteer vervolgens de gelijknamige optie in het Configuratiescherm.

Windows-configuratiescherm

Klik op omgevingsvariabelen

Windows Signtool-applicatie

Voordat u de variabelenlijst bewerkt, navigeert u met behulp van Verkenner naar de installatielocatie van de Windows SDK. U moet het pad kopiëren van de map waarin de Signtool-applicatie zich bevindt. Het standaardpad is C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64 ( zie onderstaande schermafbeelding). Zorg ervoor dat u met de rechtermuisknop klikt en het pad kopieert zoals weergegeven. U ziet de Signtool-applicatie ook onderaan de lijst met bestanden; dit is de opdracht die u moet uitvoeren.

signtool-applicatie

Klik in de lijst met systeemvariabelen op 'Nieuw'. Typ vervolgens 'Pad' als variabelenaam en kopieer en plak het pad. Klik daarna op 'OK' in het venster met omgevingsvariabelen en het venster met systeeminstellingen.

omgevingsvariabelen

Om de installatie te testen, opent u de opdrachtprompt en typt u signtool . De uitvoer zou er als volgt uit moeten zien.

standaard signtool installatie

De standaard installatielocatie van signtool is bijvoorbeeld: C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x64

Stap 2

Download en installeer het Subject Interface Package voor het digitaal ondertekenen van Microsoft Office-bestanden.

Deze link leidt naar de downloadpagina van Microsoft voor een interfacepakket. Deze download bevat twee Subject Interface Package (SIP)-bibliotheken die het digitaal ondertekenen en verifiëren van handtekeningen in Visual Basic for Applications-projecten ondersteunen binnen de meeste Office-bestandsindelingen die VBA-macro's ondersteunen. Deze zijn nodig om signtool .xls- en .xlsm-bestanden te laten herkennen. Volg na het downloaden van het installatieprogramma de onderstaande stappen.

Interfacepakketten

Nadat het .exe-bestand is gedownload, opent u het en kiest u een installatiemap, of maakt u een nieuwe map zoals hieronder weergegeven:

Excel-macro's ondertekenen

Er wordt aangegeven dat de bestanden succesvol zijn uitgepakt en dat uw installatiemap een aantal bestanden bevat. Dit zijn de bibliotheken die essentieel zijn voor het inschakelen van Excel-macro's. We moeten een paar opdrachten uitvoeren om deze .dll-bestanden in het register te installeren.

Open een beheerdersopdrachtprompt en typ het volgende. Het pad is waar u zojuist de bestanden hebt geïnstalleerd:

regsvr32.exe

regsvr32.exe

Ga naar de website van Microsoft voor meer informatie over het registreren van OLE-besturingselementen.

Als dit lukt, ziet u een bericht: “DIIRegister Server in geslaagd."

Oplossing voor codeondertekening voor bedrijven

Ontvang één oplossing voor al uw cryptografische behoeften op het gebied van softwarecodeondertekening met onze codeondertekeningsoplossing.

Stap 3

Vervolgens moeten we het Microsoft Visual C++ Redistributable Installer-programma downloaden. Deze bibliotheken zijn vereist voor veel toepassingen die gebouwd zijn met Microsoft C- en C++-tools. Omdat de tools die we gebruiken deze bibliotheken nodig hebben, is het noodzakelijk om ze te installeren. Zie de documentatie van Microsoft voor meer informatie.

Downloadlink voor Microsoft Visual C++ Redistributable Installer:

Downloaden

Start het installatieprogramma, accepteer de algemene voorwaarden en klik op installeren.

Microsoft Visual C++ Redistributable-installatieprogramma
Microsoft Visual C++ 2010-installatie voltooid

Stap 4

Nu kunnen we de opdrachtprompt gebruiken om onze bestanden te ondertekenen. Het ondertekenen van Windows Excel-macrobestanden is mogelijk met de opdracht `signtool`. De parameter `/kc` is de naam van uw certificaat, `/f` is het pad naar het `certificate.pem`-bestand, `/fd` en `/td` zijn de gewenste algoritmen, `/csp` is de naam van de cryptografische opslagprovider (in dit geval Encryption Consulting Key Storage Provider), `/tr` is het adres van de tijdstempelserver, en na ` /td` volgt SHA256 het pad tussen aanhalingstekens naar het te ondertekenen bestand.

In dit geval van macroondertekening kunt u bestanden met de extensie .xls of .xlsm gebruiken en de ondertekeningsopdracht uitvoeren.

signtool sign /csp “Encryption Consulting Key Storage Provider” /kc evcodesigning /f C:\Users\Administrator\Desktop\ForTesting\evcodesigning.pem /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 “C:\Users\Administrator\Desktop\ForTesting\MacroTest.xlsm”

macro-ondertekening

Stap 5

Nadat u het bestand heeft ondertekend, kunt u het verifiëren en de informatie erover bekijken. Om het ondertekende bestand te verifiëren, gebruikt u eenvoudig de opdracht verify:

signtool.exe verifiëren /pa C:\Users\Administrator\Desktop\ForTesting\MacroTest.xlsm

het ondertekenen van het bestand

Bij een geslaagde verificatie wordt "Succesvol geverifieerd" weergegeven, samen met het onderwerp en de uitgever van het ondertekeningscertificaat. Als de verificatie mislukt, raadpleeg dan de onderstaande tabel voordat u ervan uitgaat dat het certificaat zelf ongeldig is.

Veel voorkomende fouten

Foutwaarschijnlijke oorzaakBepalen
SignTool-fout: Er zijn geen bestanden gevonden om te ondertekenen.Pad- of bestandsnaamfout, of verkeerde extensie in het ondertekeningscommandoControleer of het exacte pad en de bestandsextensie overeenkomen met een bestaand .xls/.xlsm-bestand op de schijf.
SignTool-fout: Dit bestandsformaat kan niet worden ondertekend omdat het niet wordt herkend.Office SIP (msosip.dll/msosipx.dll) is niet geïnstalleerd of niet geregistreerd.Installeer het Subject Interface Package opnieuw en voer beide regsvr32-opdrachten opnieuw uit als beheerder.
SignTool-fout: Er zijn geen certificaten gevonden die aan alle opgegeven criteria voldoen.De containernaam /kc komt niet overeen met een sleutel in de opgegeven CSP/KSP, of de CSP-naam is verkeerd gespeld.Controleer de exacte containernaam en CSP-naam die geregistreerd zijn op de ondertekeningsmachine of HSM-client.
De opgegeven tijdstempelserver was niet bereikbaar of gaf een ongeldig antwoord.Het netwerk/de firewall blokkeert de TSA-URL, of de TSA is tijdelijk niet beschikbaar.Controleer of de uitgaande toegang tot de URL met tijdstempel wordt hersteld; probeer het opnieuw, aangezien een tijdelijke storing bij TSA vaak voorkomt en geen teken is van een defecte configuratie.

CI/CD-gebruik en -opruiming

Voor herhaaldelijk, geautomatiseerd ondertekenen (een release-pipeline die bij elke build een sjabloon met macro's opnieuw genereert), geldt hetzelfde. signtool sign De opdracht wordt onbeheerd uitgevoerd als een pipeline-stap, op voorwaarde dat de build-agent de CSP/KSP-client heeft geconfigureerd en een niet-interactieve referentie voor de HSM heeft. Val hiervoor niet terug op een lokaal .pfx-bestand om interactieve prompts te vermijden, aangezien dit het risico van blootgestelde privésleutels opnieuw introduceert, wat de door de HSM ondersteunde CSP juist moet voorkomen. Controleer de idempotentie door de opdracht opnieuw uit te voeren. signtool verify /pa Als een pipeline-stap direct na het ondertekenen, waarbij de build mislukt als de verificatie geen succes retourneert, in plaats van er stilzwijgend van uit te gaan dat de ondertekeningsstap is geslaagd.

Voor het opruimen: als u voor de eerste tests een lokaal .pfx-bestand hebt gebruikt, verwijder dit dan van de schijf zodra u hebt bevestigd dat het op CSP/KSP gebaseerde ondertekeningspad werkt. Verwijder ook de PATH-vermelding voor de map met de Windows SDK-ondertekeningstools op alle machines die in de toekomst geen ondertekeningsmogelijkheden meer mogen hebben.

Veelgestelde Vragen / FAQ

Waarom zegt SignTool dat het mijn .xlsm-bestand niet herkent?

Het Office VBA Subject Interface Package (msosip.dll, msosipx.dll) is niet geïnstalleerd of geregistreerd. Installeer het en voer beide programma's uit. regsvr32.exe Opdrachten uitvoeren als beheerder; SignTool biedt zonder deze machtiging geen ingebouwde ondersteuning voor Office-macroformaten.

Kan ik een .xls-bestand op dezelfde manier ondertekenen als een .xlsm-bestand?

Ja, beide worden ondersteund zodra SIP is geïnstalleerd. Legacy .xlm-bestanden zijn een ander, ouder macro-sheetformaat en zijn niet uitwisselbaar met .xlsm in de ondertekenings- of verificatieopdrachten.

Moet ik een lokaal .pfx-bestand gebruiken voor het ondertekenen van macro's in een productieomgeving?

Nee. Een lokaal .pfx-bestand legt de privésleutel bloot op de machine waarop de ondertekening plaatsvindt. Voor ondertekening in een productieomgeving moet gebruik worden gemaakt van een HSM-ondersteunde CSP of KSP, zodat de sleutel de hardware nooit verlaat. De .pfx-methode is alleen bedoeld voor geïsoleerde tests.

Conclusie

Zodra het Excel-macrobestand is ondertekend, zien gebruikers die het openen een waarschuwing dat het bestand macro's bevat. Ze zien ook de digitale handtekening en kunnen controleren of deze geldig is. Als de digitale handtekening niet geldig is, krijgen gebruikers een waarschuwing dat het bestand mogelijk schadelijke code bevat en mogelijk niet veilig is om te openen.

Samenvattend is het integreren van codeondertekening in softwarebeveiliging cruciaal om software te beschermen tegen malwareaanvallen en manipulatie. Code Sign Secure van Encryption Consulting biedt diverse voordelen, waaronder naadloze integratie met ontwikkelworkflows, robuuste authenticatie en encryptie, en aanpasbare prijsopties. Ga voor meer informatie over het gebruik van Code Sign Secure naar: Code Sign Solution of neem contact met ons op via: [email protected]