OPC UA-Zertifikate

Ein Zertifikat ist eine digital signierte Datenstruktur, die die Fähigkeiten des Clients oder des Servers beschreibt. WinCC OA Client und Server werden beide mit Default-Zertifikaten geliefert, die durch die Konfiguration geändert werden können. Die Default-Zertifikate sind selbstsignierte Zertifikate. Die Default-Zertifikate müssen durch eigene Zertifikate ersetzt werden.

Um anstatt des Defaultzertifikats ein anderes Zertifikat für den WinCC OA UA Server zu verwenden, muss dieses mit dem Config-EintragserverCertificate in der Sektion [opcuasrv] angegeben werden. Beim UA Client kann das Zertifikat im Panel für die Serververbindung im Feld Client Zertifikat definiert werden.

Die OPC UA Zertifikatsbehandlung erlaubt es

Öffnen Sie die Zertifikatsbehandlung über die Schaltfläche OPC UA Zertifikate in der Registerkarte OPCTreiber des Systemmanagements.

Anmerkung:

Für die korrekte Funktion der Anzeige von Zertifikatsinformationen und der Erstellung von Zertifikaten muss das Kommando openssl im Pfad (System PATH Umgebungsvariable) sein.

OPC UA spezifische Behandlung von Zertifikaten

Bei OPC UA Zertifikaten wird für Informationen wie Application URI, Hostname oder IP-Adresse das Feld SubjectAlternativeName benötigt. Für eine sichere Kommunikation verifiziert der OPC UA Server ob die Application URI des Clients mit der Application URI des Client-Zertifikates übereinstimmt. Die Application URI des Clients kann mit dem config-Eintrag "applicationUri" konfiguriert werden.

Andererseits verifiziert der Client ob der UA Server Hostname oder die IP-Adresse der Server URL mit dem Server DNS Namen oder IP-Adresse des Server-Zertifikates übereinstimmt. Diese Überprüfung wird nur durchgeführt wenn die Server-URL einen Hostnamen oder eine IP-Adresse ungleich "localhost" hat. Die Überprüfung kann mit dem Config-Eintrag "checkCertificateHost" deaktiviert werden.

Anmerkung:

Wird das Defaultzertifikat beim Server verwendet, so kann der Hostname nicht stimmen. In diesem Fall muss diese Prüfung auf Clientseite falls nötig deaktiviert werden.

Zertifikate Akzeptieren

Beim Server ist es möglich zu entscheiden, ob ein Client-Zertifikat akzeptiert werden soll. Für den Client ist es möglich zu entscheiden, ob ein Server-Zertifikat akzeptiert werden soll. Mit der Combobox "Zertifikate für:" kann zwischen Server und Client gewechselt werden.

Technisch gesehen wird ein Zertifikat, welches akzeptiert werden soll, aus dem "rejected"-Ordner in den "certs"-Ordner verschoben. Für die Bedeutung der einzelnen Ordner siehe Verwaltung und Formate.

Mit WinCC OA werden ETM Zertifikate für Client und Server ausgeliefert, die verwendet werden können:

- PVSS_UA_defaultclient.der, PVSS_UA_server.der, PVSS_UA_server.pem und PVSS_UA_defaultclient.pem;

- ab Version 3.11: WinCC_OA_UA_Client.der, WinCC_OA_UA_Server.der, WinCC_OA_UA_server.pem und WinCC_OA_UA_Client.pem.

Diese sind im WinCC OA Installationsverzeichnis unter \data\opcua\client\PKI\CA\ in den entsprechenden Verzeichnissen (siehe Verwaltung und Formate) zu finden.

Abbildung 1. Registerkarte "Zertifikate Akzeptieren"

In der Liste auf der linken Seite werden alle Zertifikate angezeigt, die nicht akzeptiert werden. Diese befinden sich im "rejected"-Ordner.

In der Liste auf der rechten Seite werden alle Zertifikate angezeigt, die akzeptiert werden. Diese befinden sich im "certs"-Ordner.

Zum Verschieben der Zertifikate von einer Liste (bzw. Ordner) in die andere Liste, markieren Sie das entsprechende Zertifikat und verwenden Sie die Schaltflächen (Zertifikat verweigern) und (Zertifikat akzeptieren), um dieses zu verschieben.

Anmerkung:

Wird ein Zertifikat von der Liste "Akzeptiert" zu "Nicht akzeptiert" verschoben, hat dies keine unmittelbaren Auswirkungen wenn aktuell eine Verbindung mit dem Server besteht. Der Client lehnt den Server erst beim nächsten Verbindungsaufbau ab.

Wird ein Zertifikat aus einer der beiden Listen selektiert, werden dessen Zertifikatsdetails im unteren Bereich des Panels angezeigt ("Zertifikat Details").

Client und Server prüfen das Zertifikat ihres Partners und legen dieses, wenn es nicht bekannt ist, im eigenen "rejected"-Ordner ab. Wenn zum Beispiel der Client den Server nicht kennt, so legt er im client/PKI/CA/rejected Ordner eine Zertifikatdatei an.

Sowohl beim Client als auch beim Server kann der Ort des Zertifikatverzeichnisses mit dem Config-Eintrag certificateStore verändert werden.

Anmerkung:

Sowohl der Client als auch der Server müssen eine Schreibberechtigung auf den "rejected"-Ordner besitzen. Das User Interface braucht zusätzlich eine Schreibberechtigung im "certs"-Ordner, damit Zertifikate akzeptiert werden können.

Im Rahmen der SecureChannel-Services werden Zertifikate auch dann ausgetauscht, wenn die Sicherheitseinstellung auf None konfiguriert ist. D.h. ein Zertifikat wird immer ausgetauscht, auch wenn ohne Sicherheitseinstellung gearbeitet wird.

Eine Validierung der Zertifikate findet dann jedoch nicht statt. Dieser Vorgang wird automatisch durch den Kommunikationsstack bzw. durch das SDK durchgeführt.

Client/Server Zertifikat Erstellen

Das WinCC OA Panel zu Zertifikatsbehandlung bietet ebenso die Möglichkeit, ein eigenes Client-/Server-Zertifikat zu generieren (ein self-signed Zertifikat), wenn auf den Server nur ausgewählte Clients Zugriff haben sollen.

Werden Zertifikate bei einer CA (Certificate Authority), üblicherweise durch den IT-Administrator, erstellt, müssen diese laut OPC UA Spezifikation die vorgestellten Dateiendungen bzw. Formate besitzen.

Selbst erstellte Zertifikate enthalten die in der unteren Abbildung unten dargestellten Beispieleingabewerte.

Folgendes muss beachtet werden:

  • Alle Eingabefelder müssen ausgefüllt sein.

  • Der Zertifikatsname muss ohne Dateiendung eingetragen werden.

  • Der Zertifikatsname darf weder Leerzeichen noch die Sonderzeichen / \ ; ? < > * | : " ' enthalten.

Klicken Sie auf die Schaltfläche "Zertifikat Erstellen", um dieses zu generieren. Das Zertifikat wird automatisch im Verzeichnis data\opcua\client\PKI\CA\certs des WinCC OA Installationsverzeichnisses abgelegt, und wird somit akzeptiert.

Um ein Zertifikat zu löschen, muss dieses manuell aus dem entsprechenden Verzeichnis gelöscht werden.

Anmerkung:

Beim Erstellen von Zertifikaten muss beachtet werden, dass zuvor in das richtige Verzeichnis gewechselt wird. Per Default ist beim Öffnen des Panels das Client-Verzeichnis ausgewählt.

Anmerkung:

Beim Ausfüllen des Zertifikats verwendete Sonderzeichen werden im Zertifikatspanel möglicherweise nicht korrekt angezeigt.

Abbildung 2. Registerkarte für die Erstellung eines Client-Zertifikates

Dateiname

Dateiname des Zertifikats. Der Name muss ohne Endung angegeben werden.

Gültigkeitsdauer

Gültigkeitsdauer des Zertifikats in Tagen

Ländercode

Zweistelliger Ländercode, z.B. AT.

Provinz, Ort/Stadt, Organisation, Abteilung

Spezifische Angaben zu Ort, Firma etc.

Name

Name der Anwendung, z.B. WinCC OA Client.

Application URI

Uniform Resource Identifier für die Anwendung. Bei einem Server-Zertifikat ist die Application URI im folgenden Format anzugeben:

urn:<Server DNS Name>:WinCC_OA:<WinCC OA Projektname>:<OPC UA Server Nummer>

Server DNS Name entspricht dem unter DNS Name angegebenen Hostnamen. Bei WinCC OA Projektname muss das Projekt angegeben werden, in welchem der OPC UA Server gestartet wurde. Die OPC UA Server Nummer entspricht der Managernummer des OPC UA Servers.

DNS Name

Angabe des Hostnamen. Mehrere Hostnamen können durch Leerzeichen getrennt agegeben werden.

IP-Adresse

Mehrere IP-Adressen können durch Leerzeichen getrennt angegeben werden.

Verwaltung und Formate

Sowohl UA Server als auch Client benötigen ein Verzeichnis für die Zertifikate. Diese Verzeichnisse können beliebig mit dem Config-Eintrag certificateStore für Server und Client festgelegt werden. Die Struktur der Verzeichnisse ist vorgegeben und wird nachfolgend beschrieben.

Per Default sucht der UA Server sein PKI Zertifikatsverzeichnis in <WinCC_OA_Proj>/data/opcua/server und der Client in <WinCC_OA_Proj>/data/opcua/client. Existiert das entsprechende Verzeichnis nicht, wird zunächst in Subprojekten und dann im Installationsverzeichnis gesucht.

Beim Erstellen eines neuen Projekts werden ab 3.15 P008 die Zertifikatsverzeichnisse von Client und Server automatisch von der Version ins jeweilige Projekt kopiert. Damit werden im Projekt erstellte Zertifikate bzw. abgelehnte Zertifikate von Kommunikationspartnern automatisch per Default im Projektverzeichnis abgelegt.

Server

Nachfolgend werden Verzeichnisstruktur sowie Inhalt der Zertifikatverzeichnisse näher beschrieben.

Abbildung 3. Dateistruktur beim WinCC OA OPC UA Server
In der folgenden Tabelle wird der Verwendungszweck der einzelnen Verzeichnisse dargestellt.
Anmerkung: Der private Schlüssel des Zertifikats eines OPC UA-Clients oder -Servers darf kein Passwort haben. Andernfalls funktioniert der UA-Server oder -Client nicht ordnungsgemäß. Außerdem muss die private Schlüsseldatei, die sich im Verzeichnis "private" befindet, das gleiche Passwort wie die entsprechende Zertifikatsdatei mit der Endung .pem haben.
Verzeichnis Beschreibung
certs Hier werden Zertifikate des UA Servers und Zertifikate von vertrauenswürdigen Clients bzw. Zertifizierungsstellen (CA) abgelegt. Diese Dateien haben die Endung .der und sind X.509 Zertifikate, die den Public-Key enthalten.
clr

Hier werdenZertifikatsperrlisten (certificate revocation list) von CAs (Certificate Authority) abgelegt.

Beispiel: Es sollen alle Zertifikate der CA xyz akzeptiert werden, mit Ausnahme jener in diesem Verzeichnis.

private Hier werden Dateien mit der Endung .pem abgelegt. Diese Dateien sind X.509 Zertifikate, die den Private-Key enthalten, und müssen auf Dateiebene nur autorisierten Benutzern zugänglich gemacht werden (IT-Administrator legt entsprechende Zugriffsrechte fest).
rejected Hier werden alle abgelehnten Zertifikate von Kommunikationspartnern abgelegt. Durch einfaches Kopieren auf Dateiebene in das Verzeichnis certs kann man diese Zertifikate in die Liste der vertrauenswürdigen Zertifikate aufnehmen. Diese Dateien sollten auf Dateiebene nur autorisierten Benutzern zugänglich gemacht werden.

In den genannten Verzeichnissen werden die Zertifikate des WinCC OA Servers (cert - Verzeichnis) und der vertrauenswürdigen Clients (certs) bzw. abgelehnten Clients (rejected) abgelegt.

Client

Die Ablage, die Bedeutung und der Inhalt der Verzeichnisse sind analog zum Server.

In den Verzeichnissen werden die Zertifikate des WinCC OA UA Clients (certs) abgelegt und die vertrauenswürdigen Server (certs) bzw. die abgelehnten Server (rejected).

Abbildung 4. Dateistruktur beim WinCC OA OPC UA Client

Verwendung von Zertifikaten einer Zertifizierungsstelle

Zusätzlich zu selbst signierten Zertifikaten können vom WinCC OA Client und Server auch Zertifikate verwendet werden, die von einer Zertifizierungsstelle signiert werden. Für OPC UA werden hier einige bestimmte Felder benötigt, die auch überprüft werden. Schlägt diese Überprüfung fehl, ist keine sichere Kommunikation möglich. Eine detaillierte Beschreibung zum Inhalt der Zertifikate entnehmen Sie dem Kapitel 6.2 von Teil 6 (Mappings) der OPC UA Spezifikation.

In Kapitel 6.1 von Teil 4 (Services) der Spezifikation werden die Überprüfungen angegeben, die auf Client- und Server-Seite durchgeführt werden.

Wenn der Aufbau einer sichereren Kommunikation fehlschlägt, kann dies verschiedene Gründe haben. Häufige falsche Konfigurationen sind:

  • Das Zertifikat ist nicht auf der Liste der vertrauenswürdigen Zertifikate. Falls das Zertifikat vertrauenswürdig ist, fügen Sie es der Liste hinzu.
  • Die Überprüfung vom Hostnamen des Zertifikats auf Client-Seite schlägt fehl. In diesem Fall stimmt der Hostname oder die IP-Adresse der Server-URL nicht mit dem DNS-Namen oder IP-Adresse im Server-Zertifikat überein. Entweder muss das Server-Zertifikat angepasst werden, oder die Überprüfung auf Client-Seite übersprungen werden (siehe Config-Eintrag checkCertificateHost).
  • Die Überprüfung der Application URI auf Server-Seite schlägt fehl. In diesem Fall stimmt die Application URI im Client-Zertifikat nicht mit der vom Client verwendeten Application URI überein. Die Application URI des Clients kann mit dem Config-Eintrag applicationUri angepasst werden.
  • Die Zertifikatssperrliste (certificate revocation list) ist im PEM-Format, hat aber die falsche Dateiendung CRL. Hier muss die Datei auf die korrekte Endung umbenannt werden.