Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

vba code digital signieren

Forumthread: vba code digital signieren

vba code digital signieren
20.11.2021 22:02:38
Timm
Guten Abend zusammen,
habe eine Exceldatei bzw. den VBA-Code digital signiert. Das entsprechende Zertifikat habe ich wie folgt erstellt:
C:\Programme\Microsoft Office\\, dann "selfcert.exe usw."
Leider lässt sich der private Schlüssel nicht exportieren.
Meine Recherche (Link: https://blog.thul.org/technik/anwendungen/vba-makros-selbstsigniert/) ergab, dass hierfür "makecert.exe" benötigt wird. Habe dann das Windows Software Development Kit (SDK) heruntergeladen und die Datei auch gefunden(Link: https://docs.microsoft.com/de-de/windows/win32/seccrypto/makecert). Leider öffnet sich die Anwendung nicht. Es erscheint lediglich für 1sec. die Eingabeaufforderung und dann passiert nichts.
Weiß jemand woran es liegen könnte (Betriebssystem ist Windows 8.1)?
Gruß
Timm
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: vba code digital signieren
21.11.2021 20:32:00
Timm
Niemand eine Idee?
AW: vba code digital signieren
22.11.2021 18:29:53
ChrisL
Hi Timm
Ich denke in anderen Foren (weniger VBA, mehr Certi) wärst du besser aufgehoben. Ausser dem nachfolgenden Schubser kann ich dich nicht unterstützen, weil ich selber keine Ahnung vom Thema habe.
Also... ich vermute stark, dass sich die Anwendung gar nicht öffnen soll. Ich denke man sollte eine Befehlszeile mit Optionen/Parameter abschicken, um den Prozess zu starten. Wenn du bei Windows Start "cmd" eintippst, dann erhältst du die Eingabeaufforderung für die Befehlszeile.
Die Frage ist, was man da genau eintippen muss. Hierzu muss man die Spezifikationen (erster Link) ganz genau lesen und testen bzw. den Anleitungen folgen (zweiter Link).
https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-2.0/bfsktky3(v=vs.80)
https://blog.jayway.com/2014/09/03/creating-self-signed-certificates-with-makecert-exe-for-development/
Erstmal ein langer Weg ohne überhaupt an Excel zu denken. Wenn die manuelle Lösung funktioniert, kann man darüber nachdenken die *.cmd Datei via Excel-VBA zu starten bzw. mittels Shell() eine Befehlszeile abzuschicken.
cu
Chris
Anzeige
AW: vba code digital signieren
22.11.2021 18:39:29
Timm
Hallo Chris,
vielen Dank für deine Antwort und die Zeit, die du dir genommen hast.
Vielleicht denke ich ja auch zu kompliziert.
Was ich erreichen möchte ist schlichtweg eine Manipulation an meinem VBA-code zu entlarven. Dabei bin ich dann auf ein digitales Zertifikat gestoßen, welches ja nicht mehr vorhanden ist wenn manipuliert wird.
Vielleicht gibt es ja eine viel pragmatischere Lösung. Lasse den Thread nochmal offen.
Gruß Timm
Anzeige
AW: vba code digital signieren
22.11.2021 18:55:38
ChrisL
Hi Timm
Ein simpler VBA-Projekt Schutz ist mir persönlich (un-)sicher genug.
Das Certi in dieser Form ist ja auch nur für interne Zwecke bestimmt. Wenn jemand intern genügend Motivation hat, um den PW-Schutz zu knacken, dann hat er vielleicht auch genügend Energie, um dein Zertifikat zu klauen (im Haus ist er ja schon).
Womöglich bin ich einfach zu entspannt bei diesen Themen oder es fehlt mir die Phantasie für das böse Manipulationsszenario (woran hast du gedacht?).
(Dass man bösartige Befehle in ein Makro packen kann ist mir schon klar, aber dies kann dir ja auch bei jeder anderen Makro-Datei passieren.)
cu
Chris
Anzeige
AW: vba code digital signieren
22.11.2021 19:12:15
Timm
Hallo Chris,
mir geht's es darum nachweisen zu können wenn in meinem erstellten VBA-Code jemand herumspielt und anschließend behauptet ich hätte falsch programmiert.
Gruß Timm
AW: vba code digital signieren
22.11.2021 21:41:53
ChrisL
Hi Timm
Könntest du nicht einfach den VBA-Code als PDF drucken und aufbewahren. Damit kannst du die geänderte Codezeile aufzeigen. Sollte doch für "intern" reichen.
Ich denke für "extern" würde man ein vertrauenswürdiges (trusted) Zertifikat nehmen.
Normally most companies would just buy their certificates from a trusted third party certificate authority such as xxx or yyy, but for development and testing, this might not be the first thing one wants to do. Instead you can create your own self signed certificates, starting with...
Selbst gebasteltes Zerti ist demnach nur für Entwicklung/Testing geeignet. Nach meinem Verständnis wäre das Zerti ungültig, sobald du es extern raus schickst.
cu
Chris
Anzeige
AW: vba code digital signieren
22.11.2021 22:20:54
Timm
Hallo Chris,
okay dann werde ich mich wohl näher mit offiziellen Zertifikaten beschäftigen :-).
Danke für deine Hilfestellung.
Gruß Timm
AW: vba code digital signieren
23.11.2021 13:18:48
Yal
Hallo Timm,
das ist eben das Problem, dass ein gute Zertifikat von einer anerkannten Zertifizierungstelle kommen muss, um etwas beweisen zu können (und die lassen sich dafür bezahlen).
Es kann sonst mit makecert jeder ein Certi aufstellen und Du kannst nicht den Verdacht aus dem Weg räumen, dass es nicht von Dir stimmt (Siehe Public Key Infrastructure).
VG
Yal
Anzeige
AW: vba code digital signieren
23.11.2021 21:05:03
Timm
Hallo Yal,
hallo zusammen
ja, dass stimmt natürlich. Kennt jemand denn eine günstige Quelle für solch ein Zertifikat? Gibt ja gravierende Unterschiede.
Gruß Timm
AW: vba code digital signieren
24.11.2021 18:26:51
Timm
Hallo Yal,
hatte schon ganz vergessen, dass Mumpel es damals es bereits erwähnt hatte.
Vielen Dank für das Heraussuchen.
Auf was greifst du denn zurück um zu beweisen, dass der Programmcode aus deiner Feder stammt wenn er extern geht?
Gruß Timm
AW: vba code digital signieren
24.11.2021 21:04:47
Yal
Hallo Timm,
Da wärst Du auf den Seiten von MS verlässiger informiert.
Es ist so, dass Du Excel-Sicherheit so einstufen, dass nur signierte Code ausgeführt werden darf. Dann muss dein Zertifikat auf dem Rechner hochgeladen werden. In diesem Zertifikat ist sichtbar, dass es von DTrust stamm. Also DTrust bestätigt, dass Du der Mitherausgeber der Zertifikat. Diese Zertifikat wird verwendet, um die Signatur des Codes zu bestätigen.
Die Signatur selbst passt zum Code und wird auch anhand des Zertifikats erzeugt. Ist der Code verändert worden, passt die Signatur nicht mehr. Da merkt Excel schon, dass die Signatur ungültig ist. Normalerweise sollte damit die Ausführung des Codes von Excel geweigert werden.
Natürlich man könnte selber sein eigenes Code verunstalten und mit MakeCert signieren. Dann gibt es zwar eine gültige Signatur, die aber nicht mehr mit deiner Zertifikat validiert wird. Also nicht von dir. Und normalerweise auch nicht von Excel ausgeführt.
Kritisch ist, dass dein Zertifikat nur 3 Jahre gültig ist. Danach musst Du eine Folgezertifikat deinen Kunden liefern, sodass die Signatur weiter akzeptiert wird. Hier gibt es nicht die Meldung Zertifikat ungültig sondern Zertifikat abgelaufen.
VG
Yal
Anzeige
;
Anzeige

Infobox / Tutorial

VBA-Code digital signieren in Excel


Schritt-für-Schritt-Anleitung

  1. Zertifikat erstellen: Um ein Excel-Makro zu signieren, benötigst du ein digitales Zertifikat. Du kannst dies mit selfcert.exe erstellen. Diese Datei findest du typischerweise im Verzeichnis C:\Programme\Microsoft Office\<office-version>\. Wenn du selfcert.exe noch nicht hast, kannst du das Tool herunterladen.

  2. Zertifikat generieren: Starte selfcert.exe und folge den Anweisungen, um ein neues Zertifikat zu erstellen. Dies geschieht in der Regel durch die Eingabe eines Namens für das Zertifikat.

  3. Excel-Datei öffnen: Öffne die Excel-Datei, die das VBA-Makro enthält, das du signieren möchtest.

  4. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  5. Projekt auswählen: Wähle das Projekt aus, das du signieren möchtest. Klicke mit der rechten Maustaste auf das Projekt und wähle „Eigenschaften“.

  6. Digitale Signatur hinzufügen: Klicke auf die Registerkarte „Digitale Signatur“ und wähle „Zertifikat auswählen“. Wähle dein zuvor erstelltes Zertifikat aus.

  7. Makro speichern: Schließe den VBA-Editor und speichere die Excel-Datei. Dein Makro ist jetzt digital signiert.


Häufige Fehler und Lösungen

  • Privater Schlüssel kann nicht exportiert werden: Wenn du den privaten Schlüssel deines Zertifikats nicht exportieren kannst, kann dies an den Berechtigungen des Zertifikats liegen. Stelle sicher, dass du die richtigen Berechtigungen hast.

  • MakeCert.exe öffnet nicht: Wenn die Anwendung nur kurz in der Eingabeaufforderung erscheint und dann schließt, versuche, sie über die Befehlszeile mit spezifischen Parametern zu starten. Informationen dazu findest du in den Dokumentationen, die du in den Foren gefunden hast.


Alternative Methoden

  • Verwendung von vertrauenswürdigen Zertifikaten: Für externe Anwendungen und mehr Sicherheit solltest du in Betracht ziehen, ein vertrauenswürdiges Zertifikat von einer anerkannten Zertifizierungsstelle zu erwerben. Dies kann für die Validität deiner digitalen Signatur entscheidend sein.

  • PDF-Dokumentation: Eine einfache Möglichkeit, Änderungen im VBA-Code nachzuweisen, besteht darin, den Code als PDF zu drucken und zu archivieren. Dies kann helfen, Manipulationen zu entlarven.


Praktische Beispiele

Ein Beispiel für die Verwendung von selfcert.exe wäre:

C:\Programme\Microsoft Office\<office-version>\selfcert.exe

Nach dem Erstellen des Zertifikats kannst du den Signaturprozess für dein Excel-Makro wie oben beschrieben durchführen.


Tipps für Profis

  • Zertifikatsverwaltung: Achte darauf, deine Zertifikate regelmäßig zu überprüfen und sicherzustellen, dass sie gültig sind. Ein abgelaufenes Zertifikat kann dazu führen, dass deine signierten Makros nicht mehr als sicher gelten.

  • Makros signieren: Wenn du regelmäßig mit VBA arbeitest, ist es ratsam, eine klare Strategie für die Signierung deiner Makros zu haben, insbesondere wenn du sie in einer Unternehmensumgebung verwendest.


FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass mein Makro digital signiert ist?
Du kannst dies überprüfen, indem du im VBA-Editor auf die Projekteigenschaften gehst und die digitale Signatur überprüfst.

2. Was passiert, wenn mein Zertifikat abläuft?
Wenn dein Zertifikat abläuft, musst du ein neues Zertifikat erstellen und deine Makros erneut signieren, um sicherzustellen, dass sie weiterhin als sicher gelten.

3. Kann ich selfcert.exe in allen Excel-Versionen verwenden?
selfcert.exe ist in vielen Versionen von Microsoft Office verfügbar, jedoch solltest du sicherstellen, dass du die passende Version für dein System verwendest.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige