Einrichtung der Treibersignierung
OEM-Zertifikat Level 2 erstellen
Aus MATLAB® oder Simulink® generierte TwinCAT-Objekte basieren, wie auch TwinCAT C++-Objekte, auf einem tmx-Treiber (TwinCAT Module Executable). Diese Treiber müssen mit einem OEM-Zertifikat Level 2 signiert werden, damit der Treiber in der TwinCAT-Laufzeit auf dem Laufzeit-PC geladen werden kann.
Unter folgenden Links finden Sie eine ausführliche Dokumentation zur Erstellung eines OEM-Zertifikats zur Treibersignierung:
- Allgemeine Dokumentation zu OEM-Zertifikaten
- Anwendungsbezogene Dokumentation zu tmx-Treibersignierung
Das Wichtigste in Kürze:
- Sie können sich selbst ein Zertifikat erstellen. Gehen Sie dazu in Visual Studio auf:
Menu bar > TwinCAT > Software Protection… - Sie benötigen ein OEM-Zertifikat Crypto Version 2 (Option: Sign TwinCAT C++ executables (*.tmx)).
- Sie werden hier aufgefordert, ein Passwort für Ihr Zertifikat anzulegen.
- Treiber können auch ohne Signierung erstellt und nachträglich signiert werden.
- Für Testzwecke in der Entwicklungsphase genügt ein nicht-gegensigniertes Zertifikat.
- Gegensignierte Zertifikate können bei Beckhoff kostenfrei bestellt werden (TC0008).
OEM-Zertifikat Level 2 unter Software Protection einrichten
![]() | TwinCAT Build 4026: Voraussetzung für den Dialog zur Einrichtung Folgende Ausführungen zu Software Protection gelten nur für TwinCAT 3.1 Build 4026. Notwendig ist mindestens der Workload TwinCAT Standard 4026.14. Sollten Sie mit älteren Versionen arbeiten, lesen Sie bitte im unteren Abschnitt weiter „OEM-Zertifikat Level 2 zur Treibersignierung einrichten ohne den Dialog Software Protection“. |
In der Oberfläche der Software Protection (Menu bar > TwinCAT > Software Protection…) können Sie sowohl Zertifikate erstellen (Create New…) als auch:
- Ein Zertifikat als systemweites Default-Zertifikat zur Signierung von tmx-Dateien festlegen (optional).
- Zu jedem Zertifikat das jeweils zugehörige Passwort für den angemeldeten Windows Nutzer hinterlegen (erforderlich).

In der obigen Übersicht befinden sich beispielhaft zwei Zertifikate.
Das erste Zertifikat „TestSign123“ ist nicht von Beckhoff gegensigniert, deshalb wird es im Status als invalid klassifiziert. Nicht gegensignierte Zertifikate können dennoch zum Signieren genutzt werden. Das Zielsystem ist dann in den Testmodus zu versetzen – siehe Abschnitt Verhalten der TwinCAT-Laufzeit. Das Zertifikat „TmxSignCertFaxxxBx“ ist hingegen gegensigniert und damit als valid klassifiziert. Beide Zertifikate eignen sich zum Signieren von tmx-Dateien, wie unter Permissions zu sehen ist. In der Spalte „TMX Signing“ ist mit „Default“ vermerkt, wenn ein Zertifikat als systemweites Default-Zertifikat festgelegt ist. Der Vermerk „PW Stored“ zeigt an, dass das Passwort des Zertifikats für den angemeldeten Windows Nutzer verfügbar/hinterlegt ist.
Zertifikat als Systemweites Default-Zertifikat festlegen (optional)
Sie können auf einem Engineering PC ein Default-Zertifikat setzen, welches immer für TwinCAT C++, Target for MATLAB® , Target for Simulink® usw. genutzt wird, sofern Sie kein anderes Zertifikat explizit angeben.
Markieren Sie das Zertifikat, welches Sie als Default-Zertifikat nutzen möchten aus der Liste im Dialog Software Protection aus und wählen Sie die Checkbox „Set as System Default“ aus.
Es wird daraufhin eine Umgebungsvariable mit dem Namen TcSignTwinCatCertName angelegt. Umgebungsvariablen werden unter Windows beim Starten eines Prozesses bekanntgemacht. Starten Sie daher MATLAB® neu, wenn Sie den Prozess bereits ausführen.
Weitere Möglichkeiten zur Nutzung von Zertifikaten finden Sie weiter unten in diesem Kapitel.
Passwort zu einem Zertifikat hinterlegen (erforderlich)
Das Passwort eines Zertifikats darf aus Sicherheitsgründen nicht im Projekt oder Quellcode im Simulink®-Modell oder im MATLAB®-Code eingetragen werden. Mit „Store Password for Current User“ hinterlegen Sie für Ihre Zertifikate die zugehörigen Passwörter auf ihrem System.
Die Passwörter werden obfuskiert in der Registry des Windows-Betriebssystems abgelegt. Dadurch ist das Passwort zu einem bestimmten Zertifikat im Betriebssystem (für den Current User) bekannt und wird automatisch verwendet.
Markieren Sie das Zertifikat, für welches Sie das zugehörige Passwort hinterlegen möchten im Dialog Software Protection. Wählen Sie „Store Password for Current User“. Sie werden aufgefordert, Ihr Passwort einzutragen. Wenn es erfolgreich überprüft und eingetragen wurde, erscheint der Vermerk „PW Stored“ unter „TMX Signing“.
Eine alternative Variante zum Hinterlegen eines Passworts stellt das Command Prompt mit dem TcSignTool (C:\Program Files (x86)\Beckhoff\TwinCAT\3.1\SDK\Bin) dar.
Die Ablage des Passworts wird mit folgendem Aufruf durchgeführt:
tcsigntool grant /f "C:\TwinCAT\3.1\CustomConfig\Certificates\MyCertificate.tccert" /p MyPassword
Die Ablage des obfuskierten Passworts erfolgt in der Registry unter: HKEY_CURRENT_USER\SOFTWARE\Beckhoff\TcSignTool\
Mit folgendem Aufruf wird das Passwort gelöscht:
tcsigntool grant /f "C:\TwinCAT\3.1\CustomConfig\Certificates\MyCertificate.tccert" /r
OEM-Zertifikat Level 2 zur Treibersignierung einrichten ohne den Dialog Software Protection
Zum Signieren von tmx-Dateien benötigen Sie ein Zertifikat und ein dem Zertifikat zugehöriges Passwort.
![]() | Verfügbare Zertifikate liegen unter: Build 4026: C:\ProgramData\Beckhoff\TwinCAT\3.1\CustomConfig\Certificates |
Handling des Zertifikats
Es gibt vier Varianten zur Signierung von tmx-Treibern.
Variante 1: Systemweites Default-Zertifikat für TwinCAT C++ und TE14xx
Diese Variante ist identisch mit dem Weg über „Software Protection“ > „Set as System Default“.
Für diese Variante können Sie alternativ auch händisch eine Windows-Umgebungsvariable anlegen. Legen Sie eine neue Umgebungsvariable unter User > Variables an mit:
Variable: TcSignTwinCatCertName
Value: Full-Path des Zertifikats
Variante 2: Systemweites Default-Zertifikat für MATLAB®
Sie können in Ihrer MATLAB®-Umgebung ein Default-Zertifikat setzen, welches immer für Target for MATLAB® und Target for Simulink® (nicht TwinCAT C++) genutzt wird, sofern Sie kein anderes Zertifikat explizit angeben.
Öffnen Sie den Common Settings-Dialog mit TwinCAT.ModuleGenerator.Settings.Edit (MATLAB Command line) und tragen Sie das gewünschte Default-Zertifikat ein unter Build > Certificate name for TwinCAT signing. Dieses Zertifikat wird in Ihrem User-Verzeichnis als Default gespeichert und von allen MATLAB® -Versionen auf Ihrem System als Standard genutzt.
Variante 3: Zertifikat in der Konfiguration des Simulink®-Modells
Sie können für jeden Build-Vorgang ein Zertifikat explizit benennen. Für Variante 3 müssen Sie keine weiteren Einstellungen vorab treffen. Sie können vor jedem Build-Vorgang ein Zertifikat Ihrer Wahl für genau diesen Build-Vorgang definieren.
Target for Simulink®: TC Build > Certificate for TwinCAT signing
Target for MATLAB®: Property SignTwinCatCertName
Variante 4: Ohne Zertifikat bauen und später mit TcSignTool signieren
Sie können ohne Zertifikat bauen und nachträglich mit dem TcSignTool signieren.
Das TcSignTool ist ein Kommandozeilen-Programm. Öffnen Sie bspw. das Command Prompt und führen Sie tcsigntool sign /?
aus, um die Hilfe angezeigt zu bekommen. Das Programm finden Sie hier:
Build 4026: C:\Program Files (x86)\Beckhoff\TwinCAT\3.1\SDK\Bin
Build 4024: C:\TwinCAT\3.1\SDK\Bin
![]() | TcSignTool aus MATLAB® bedienen Aus MATLAB® kann das Tool mit dem Befehl |
Beispielaufruf zur Signierung eines tmx-Treibers für TwinCAT:
TcSignTool sign /f "C:\TwinCAT\3.1\CustomConfig\Certificates\ MyCertificate.tccert" /p MyPassword "C:\TwinCAT\3.1\Repository\TE140x Module Vendor\ModulName\0.0.0.1\TwinCAT RT (x64)\MyDriver.tmx"
Verhalten der TwinCAT-Laufzeit
Wird ein aus MATLAB® oder Simulink® erstelltes TwinCAT-Objekt mit signiertem Treiber in einer TwinCAT-Solution genutzt und mit Activate Configuration auf ein Zielsystem geladen, ist Folgendes zu beachten:
Testmodus für nicht gegensignierte Zertifikate
Wenn Sie ein nicht-gegensigniertes OEM-Zertifikat zur Signierung nutzen, müssen Sie Ihr Zielsystem in den Test-Modus versetzen. Führen Sie dazu den folgenden Befehl als Administrator auf dem Zielsystem aus:
bcdedit /set testsigning yes
Wenn Sie ein gegensigniertes OEM-Zertifikat nutzen, ist dieser Schritt nicht notwendig.
Whitelist für Zertifikate auf Zielsystemen
Jede TwinCAT-Laufzeit (XAR) hat eine eigene eine Whitelist an vertrauenswürdigen Zertifikaten.
Verhalten bei TwinCAT Build 4026
Das TwinCAT-XAE prüft, ob alle Zertifikate, die zur Aktivierung der Konfiguration notwendig sind, auf dem Laufzeit-System in der Whitelist stehen. Ist dies nicht der Fall, erscheint ein Pop-Up-Fenster. Sie können dort die Whitelist-Einträge setzen.
Verhalten bei TwinCAT Build 4024
Ist das Zertifikat, welches zur Signierung genutzt wurde, nicht in dieser Whitelist enthalten, wird der Treiber nicht geladen. Im TwinCAT Engineering (XAE) wird eine entsprechende Fehlermeldung ausgegeben.

Die Fehlermeldung enthält die Anweisung, ein Registry File, welches auf dem Zielsystem automatisch erstellt wurde, auf dem Zielsystem als Administrator auszuführen. Dieser Vorgang fügt das genutzte Zertifikat der Whitelist hinzu.
![]() | Registry File ist nur vom OEM-Zertifikat abhängig Das Registry File kann ebenso auf weiteren Zielsystemen genutzt werden. Es enthält nur Informationen über das genutzte OEM-Zertifikat und ist nicht zielsystemabhängig. |