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

Es sind vier Varianten zur Signierung von tmx-Treibern denkbar.

  1. 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.
  2. 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.
  3. Sie können für jeden Build-Vorgang ein Zertifikat explizit benennen.
  4. 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\

Einrichten der Treibersignierung 1:

TcSignTool aus MATLAB® bedienen

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

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 2:

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 3:

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.