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
Zum Signieren von tmx-Treibern benötigen Sie ein Zertifikat und ein dem Zertifikat zugehöriges Passwort.
Handling des Zertifikats
Es gibt vier Varianten zur Signierung von tmx-Treibern.
Variante 1: Systemweites Default-Zertifikat für TwinCAT C++ und TE14xx
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.
Für diese Variante nutzen Sie eine Windows-Umgebungsvariable. Legen Sie eine neue Umgebungsvariable unter User > Variables an mit:
Variable: TcSignTwinCatCertName
Value: Name des gewünschten Zertifikats
Verfügbare Zertifikate liegen unter TwinCAT\3.1\CustomConfig\Certificates. |
Variante 2: Systemweites Default-Zertifikat für TE14xx
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 oben genannten Common Settings-Dialog mit TwinCAT.ModuleGenerator.Settings.Edit 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. Für Variante 4 können Sie das TcSignTool verwenden.
Das TcSignTool ist ein Kommandozeilen-Programm, welches sich im Pfad ..\TwinCAT\3.1\sdk\Bin\
befindet. Öffnen Sie bspw. das Command Prompt und führen Sie tcsigntool sign /?
aus, um die Hilfe angezeigt zu bekommen.
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"
Handling des Zertifikat-Passworts
Nur bei Variante 4 des Zertifikat-handlings wird das Passwort direkt eingegeben. Für Variante 1 bis 3 ist zusätzlich zur Angabe des Zertifikats das zugehörige Passwort 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 Ihren Zertifikaten zugehörige Passwörter obfuskiert in der Registry des Windows-Betriebssystems ablegen. Dadurch ist das Passwort zu einem bestimmten Zertifikat im Betriebssystem (für den entsprechenden User) bekannt und wird automatisch verwendet.
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
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.