Einrichten der Treibersignierung

OEM-Zertifikat Level 2 erstellen

Die mithilfe des Target for FMI generierten TwinCAT-Objekte basieren, ebenso wie TwinCAT-C++-Objekte, auf einem tmx-Treiber (TwinCAT Module Executable). Die Treiber müssen mit einem OEM-Zertifikat Level 2 signiert werden, damit sie in der TwinCAT-Laufzeit auf dem Laufzeit-PC geladen werden können.

Unter folgenden Links finden Sie eine ausführliche Dokumentation zur Erstellung eines OEM-Zertifikats zur Treibersignierung:

Das Wichtigste in Kürze:

Nutzen eines OEM-Zertifikats Level 2 zur Treibersignierung

Es sind drei 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++ und Target for FMI genutzt wird, sofern Sie kein anderes Zertifikat explizit angeben.
  2. Sie können für jeden Build-Vorgang ein Zertifikat explizit benennen.
  3. 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 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.

TwinCAT FMI > Build > Certificate name for TwinCAT signing

Einrichten der Treibersignierung 1:

Für Variante 3 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 müssen Sie zusätzlich zur Angabe des Zertifikats mit dem TcSignTool das zugehörige Passwort im System hinterlegen. Das Passwort soll aus Sicherheitsgründen nicht im Quellcode 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\

Verhalten der TwinCAT-Laufzeit

Wird ein mittels des Target for FMI erstelltes TwinCAT-Objekt mit signiertem Treiber in einer TwinCAT-Solution genutzt und mit Activate Configuration auf ein Zielsystem geladen, beachten Sie Folgendes:

Jede TwinCAT-Laufzeit (XAR) hat eine eigene White-List mit vertrauenswürdigen Zertifikaten. Steht das Zertifikat, welches zur Signierung genutzt wurde, nicht auf dieser White-List, 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 OEM-Zertifikat, das nicht gegensigniert ist, 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.