Testsignierung
Übersicht
Für die Implementierung von TwinCAT 3 C++ Modulen auf x64-Plattformen muss der Treiber mit einem Zertifikat signiert sein.
Dieser Artikel beschreibt, wie Sie ein Testzertifikat zum Testen eines C++ Treibers erstellen und installieren können.
Vorgehen beim Erstellen von Testzertifikaten beachten Entwickler verfügen möglicherweise über eine Vielzahl an Werkzeugen, um selber Zertifikate zu erstellen - bitte folgen Sie dieser Beschreibung genauestens, um den Testzertifikat-Mechanismus anzuschalten. |
Die folgenden Befehle müssen in einer Kommandozeile ausgeführt werden, die auf eine der beiden Arten geöffnet wurde:
- Eingabeaufforderung von Visual Studio 2010 / 2012 mit Administratorrechten. (Über: All Programs -> Microsoft Visual Studio 2010/2012 -> Visual Studio Tools -> Visual Studio Command Prompt, dann Rechtsklick auf Run as administrator)
- Developer Command Prompt von Visual Studio 2017 / 2019 mit Administratorrechten. (Über: All Programs -> Visual Studio 2017 -> Visual Studio Command Prompt for VS 2017/2019, dann Rechtsklick auf Run as administrator)
- Nur, wenn das WINDDK installiert wurde:
Normale Eingabeaufforderung (Start -> Command Prompt) mit Administratorrechten, dann in das Verzeichnis %WINDDK7%\bin\x86\ wechseln, das die entsprechenden Tools enthält.
- 1. Auf XAE:
geben Sie im Engineering System folgenden Befehl in die Visual Studio 2010 / 2012 Eingabeaufforderung mit Administratorrechten ein (siehe Hinweis oben):makecert -r -pe -ss PrivateCertStore -n CN=MyTestSigningCert MyTestSigningCert.cer
(Sollten Sie keine Zugriffsrechte auf den PrivateCertStore haben, können Sie eine andere Ablage nutzen. Diese muss dann im PostBuild-Event auch verwendet werden, wie hier beschrieben.) - Daraufhin wird ein selbstsigniertes Zertifikat erstellt und in der Datei „MyTestSigningCert.cer“ und im Windows Certificate Store gespeichert.
- Überprüfen Sie das Ergebnis mit mmc (Use File->Add/Remove Snap-in->Certificates):
- 2. Auf XAE:
konfigurieren Sie das Zertifikat, sodass es von TwinCAT XAE auf dem Engineering System erkannt wird.
Setzen Sie die Umgebungsvariable TWINCATTESTCERTIFICATE auf „MyTestSigningCert“ im Engineering System oder bearbeiten Sie jeweils den Post-Build Event von Debug|TwinCAT RT (x64) und Release|TwinCAT RT (x64).
Der Name der Variablen ist NICHT der Name der Zertifikatsdatei, sondern der CN-Name (in diesem Falle MyTestSigningCert).
Auf XAR (und XAE, wenn es sich um einen lokalen Test handelt) aktivieren Sie den Testmodus, damit das Betriebssystem die selbstsignierten Zertifikate akzeptieren kann. Dies kann sowohl auf dem Engineering System (XAE) als auch auf dem Laufzeit-Systemen (XAR) vorgenommen werden.
Für Windows
Führen Sie mittels Administrator-Eingabeaufforderung folgendes aus:bcdedit /set testsigning yes
und starten Sie das Zielsystem neu.
Es kann sein, dass Sie hierfür „SecureBoot“ abschalten müssen, was im Bios erfolgen kann.
Wenn der Testsigniermodus aktiviert ist, wird das rechts unten auf dem Desktop angezeigt. Das System akzeptiert nun alle signierten Treiber zur Ausführung.
Nach der jeweiligen Vorgehensweise akzeptiert das System alle signierten Treiber zur Ausführung.
- 1. Prüfen Sie, ob eine Konfiguration mit einem in einen TwinCAT C++ Treiber implementierten TwinCAT-Modul auf dem Zielsystem aktiviert und gestartet werden kann.
- Die Kompilierung des x64-Treibers generiert eine Ausgabe wie folgt:
Referenzen:
MSDN, MakeCert Testzertifikate (Windows Treiber),
https://docs.microsoft.com/en-us/windows-hardware/drivers/install/makecert-test-certificate