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.

Das Wichtigste in Kürze:

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

Einrichten der Treibersignierung 1:

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.

Einrichten der Treibersignierung 2:

TcSignTool aus MATLAB® bedienen

Aus MATLAB® kann das Tool mit dem Befehl system() oder mit ! aufgerufen werden.

Einrichten der Treibersignierung 3:

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.

Einrichten der Treibersignierung 4:

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.

Einrichten der Treibersignierung 5:

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.