ralpht
Goto Top

Word und Excel Makros mit Zertifikaten signieren

Hallo,

ich möchte ein Makro in einem Worddokument mit einem Zertifikat signieren. Ich habe eine interne 2-stufige-Zertifizierungsstelle. Dazu habe ich unter den Vorlagen "Codesigatur" als doppelte Vorlage dupliziert.
Dieses Zertifikat habe ich bei einem Client angefordert. Das Zertifikat liegt dort im Benutzerspeicher unter "Eigene Zertifikate". Weiterhin habe ich auf diesem Client das Zertifikat in eine Datei kopiert und es auch in den Speicher "Vertrauenswürdige Herausgeber" importiert.
Anschließend habe ich in Word unter Visual Basic - Digitale Signatur dieses Zertifikat für das Dokument gewählt und abgespeichert.
Unter den Sicherheitseinstellungen im Sicherheitscenter ist jetzt die Option "Alle Makros außer digital signierten Makros deaktivieren" angewählt.
Weiterhin habe ich den Speicher für "Vertrauenwürdige Dokumente" bereinigt.

Alle Clients vertrauen der Stammzertifizierungstelle. Nur der eine Client, der die Officedokumente zertifizieren soll, hat noch zusätlich dieses Zertifikat für die Codesignatur.

Jetzt zum ersten Problem:

Ein Client führt dieses Makro nicht aus. Ich komme nicht darauf, was hier falsch laufen könnte. Derzeit habe ich 4 andere Clients getestet, die führen das Makro aus.

Dann zum nächsten Problem:

Die gleiche Prozedur habe ich für ein Excel-Dokument durchgeführt. Hier ist es so, dass bei keinem Client, sich dieses Excelmakro ausführen lässt.

Die doppelt erstelle Vorlage habe ich noch einmal wie folgt überprüft: certutil -v -verify -urlfetch mein-office-codesig.cer
Hierbei konnte ich keine Fehler erkennen.

Hat jemand einen Rat für mich, wo man noch suchen könnte?

Content-Key: 395375

Url: https://administrator.de/contentid/395375

Printed on: April 25, 2024 at 10:04 o'clock

Member: emeriks
Solution emeriks Dec 12, 2018 updated at 10:53:33 (UTC)
Goto Top
Hi,
das Stammzertifikat muss auf allen Clients als "Vertrauenswürdige Zertifizierungsstelle" eingetragen sein. Das geschieht i.A. automatisch durch AD, sofern es eine Enterprise CA ist.
Das Codezertifikat muss auf allen Clients, wo damit signierte Dokumente Makros ausführen sollen, als "Vertrauenswürdige Herausgeber" eingetragen sein (ohne private key). Das kann man per GPO erledigen.
Das Codezertifikat muss im Benutzerprofil, unter welchem die Dokumente signiert werden sollen, im "Eigene Zertifikate" eingetragen sein (mit private key).

Dann sollte das funktionieren.

E.
Member: RalphT
RalphT Dec 12, 2018 at 13:29:56 (UTC)
Goto Top
Danke für die schnelle Info.

Ich habe das in der Zwischenzeit mal einiges ausprobiert. Also dem Rootzertifikat wurde ja schon vorher vertraut (per GPO).

Nun habe ich bei den Clients, wo die Makros ausgeführt werden sollen, das Codezertifikat in den Speicher "Vertrauenswürdige Herausgeber" importiert.
Bei dem Client, der die Officedokumente zertifizieren soll, noch zusätzlich das Zertifikat angefordert. Das liegt dann unter "Eigene Zertifikate"

Zuerst lief das nur "halb". Also, wie schon eingangs beschrieben, bei den Worddokumenten funktionierten die Makros. Bei Excel nicht.

Beim Herumprobieren ist derzeit folgendes herausgekommen:

Ich erstelle ein neues Worddokument mit einem Makro und signiere es. Alles funktioniert auf Anhieb tadellos. Lösche ich das Zertifikat aus dem Speicher "Vertrauenswürdige Herausgeber" und öffne dann wieder das Worddokument, funktioniert das immer noch. Auch wenn der Speicher für Vertrauenwürdige Dokumente vorher bereinigt wurde.

Jetzt zu Excel:

Auch hier, so wie von dir beschrieben eingerichtet. Wenn ich eine neue Exceldatei mi Makro erstelle und signiere, dann funktioniert das auch wie gewünscht. Auch hier mal testweise das Zertifikat aus dem Speicher "Vertrauenswürdige Herausgeber" gelöscht und die Exceldatei wieder geöffnet. Hier erscheint die gelbe Warnleiste "Makros wurden deaktiviert". Man lässt das zu, dann funktionieren sie auch wieder.

Ok, das ist wohl dann so normal.

Nun hatte ich vorher schon einige fertige Exceldateien mit Makros erstellt. Hier hatte ich schon fleißig mit Zertifikaten getestet. Dann habe ich folgendes gemacht:
Das soweit eingerichtet, wie du es beschrieben hast. Also vorher das falsche, alte Zertifikat in Excel entfernt und das neue Zertifikat hinzugefügt. Hier funktioniert das nicht. Also bei einem neuen Excelsheet läuft es, bei alten bestehenden Dateien nicht.

Da bin ich derzeit noch überfragt, woran das liegen könnte. Eigentlich dürfte es doch keine Probleme geben? Wo ist jetzt der Unterschied zwischen einen gerade neu erstellten Datei und einer alten Datei? Das Zertifikat wird doch nur an einer Stelle in Excel hinterlegt - oder?

Ich teste derzeit noch weiter und melde ich dazu auf jeden Fall noch einmal.
Member: RalphT
RalphT Dec 14, 2018 at 07:10:36 (UTC)
Goto Top
Moin,

ich denke, dass man diesen Thread als gelöst markieren kann. Ich hatte bei Exceldateien Probleme. Hierbei hat sich herausgestellt, dass das nur eine bestimmte Datei betraf. Bei dieser Datei zeigte das Zertifikat keine Wirkung. Da ich das vorher nicht wusste, habe ich natürlich an allen Ecken gesucht.

So wie es emeriks schrieb, ist es richtig.
Ich habe mal überprüft was passiert, wenn die Zertifikate nicht an allen Stellen sind:

Das Zertifikat für die Codesignierung fehlt im Speicher "Vertrauenswürdige Herausgeber". Das ROOT-Zertifikat ist im Speicher "Vertrauenswürdige Stammzertifizierungsstelle"
Wird das Dokument geöffnet erscheint in Excel ein gelber Warnhinweis: "Makros wurden deaktivert". Man kann dann auf "Inhalt aktivieren" klicken, dann werden die Makros ausgeführt.

Fehlt jedoch das ROOT-Zertifikat im Speicher "Vertrauenswürdige Stammzertifizierungsstelle", dann erscheint beim Öffnen die Meldung, dass eine Smardcard eingelegt werden soll.
In diesem Fall können keine Makros ausgeführt werden.

Zum Signieren der Dateien wird zusätzlich das Codezertifikat im Speicher "Eigene Zertifikate" benötigt.


Vielleicht noch mal eine Frage:
Welche Laufzeit sollte man diesen Zertifikaten geben? Ich dachte so an ein halbes Jahr.
Member: emeriks
emeriks Dec 15, 2018 at 14:19:27 (UTC)
Goto Top
Zitat von @RalphT:
Welche Laufzeit sollte man diesen Zertifikaten geben? Ich dachte so an ein halbes Jahr.
Na solange, wie man davon ausgeht, dass der damit signierte Code produktiv im Einsatz bleiben soll. Willst Du alle halbe Jahr alle damit signierten Makro-Dokumente neu signieren und das neue Zertifikat verteilen? Sicher nicht.
Ich habe unsere Code-Zertifikate auf 10 Jahre ausgestellt.