Einrichten der Treibersignierung
Ein 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 dieser 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)).
- Alle Treiber (für 32bit und für 64bit Betriebssysteme) müssen signiert werden.
- 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).
Nutzen eines OEM-Level 2 Zertifikats zur Treibersignierung
Es sind vier Varianten zur Signierung von tmx-Treibern denkbar.
- Sie können auf einem Engineering PC ein Default-Zertifikat setzen, welches immer für TwinCAT C++, Target for MATLAB® und Target for Simulink® genutzt wird, sofern Sie kein anderes Zertifikat explizit angeben.
- Sie können auf einem Engineering PC ein Default-Zertifikat setzen, welches immer für Target for MATLAB® und Target for Simulink® genutzt wird, sofern Sie kein anderes Zertifikat explizit angeben.
- Sie können für jeden Build-Vorgang ein Zertifikat explizit benennen.
- Sie können ohne Zertifikat bauen und nachträglich mit dem TcSignTool signieren.
Für Variante 1 nutzen Sie eine Windows-Umgebungsvariable. Legen Sie eine neue Umgebungsvariable unter User > Variables an mit:
Variable: TcSignTwinCatCertName
Value: Name des gewünschten Zertifikates
(Verfügbare Zertifikate liegen unter TwinCAT\3.1\CustomConfig\Certificates).
Für Variante 2 öffnen Sie den oben genannten Common Settings-Dialog mit TwinCAT.ModuleGenerator.Settings.Edit und benennen Sie das Default-Zertifikat 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.
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
Für Variante 4 können Sie das TcSignTool verwenden. Das TcSignTool ist ein Kommandozeilen-Programm, welches sich im Pfad C:\TwinCAT\3.x\sdk\Bin\ befindet. Mit tcsigntool /?
bzw. tcsigntool sign /?
bekommen Sie Hilfe, wie Sie das Tool konkret benutzen können.
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"
Für Variante 1 bis 3 ist zusätzlich zur Angabe des Zertifikats mit dem TcSignTool das zugehörige Passwort im System zu hinterlegen. Das Passwort soll aus Sicherheitsgründen nicht im Quellcode im Simulink®-Modell oder im MATLAB®-Code eingetragen werden. Mit dem TcSignTool können Sie zu ihren Zertifikaten gehörige Passwörter verschlüsselt in der Registry des Windows-Betriebssystems ablegen.
Die Ablage des Passworts wird mit folgenden Parametern durchgeführt:
tcsigntool grant /f "C:\TwinCAT\3.1\CustomConfig\Certificates\MyCertificate.tccert" /p MyPassword
Mit folgenden Parametern wird das Passwort gelöscht:
tcsigntool grant /f "C:\TwinCAT\3.1\CustomConfig\Certificates\MyCertificate.tccert" /r
Die Ablage des unverschlüsselten Passworts erfolgt unter: HKEY_CURRENT_USER\SOFTWARE\Beckhoff\TcSignTool\
![]() | TcSignTool aus MATLAB® bedienen Aus MATLAB® kann das Tool mit dem Befehl |
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:
Jede TwinCAT-Laufzeit (XAR) hat eine eigene eine White-List an vertrauenswürdigen Zertifikaten. Ist das Zertifikat, welches zur Signierung genutzt wurde, nicht in dieser White-List 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 White-List 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. |
Wenn Sie ein nicht-gegensigniertes OEM-Zertifikat zur Signierung nutzen, müssen Sie zudem 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.