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
- festzulegen, welche Zertifikate beim Server oder für den Client akzeptiert werden (siehe "Zertifikate Akzeptieren").
- neue Client-/Server-Zertifikate zu erstellen (siehe "Zertifikat Erstellen").
Öffnen Sie die Zertifikatsbehandlung über die Schaltfläche OPC UA Zertifikate in der Registerkarte OPCTreiber des Systemmanagements.
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.
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.
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.
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.
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.
Zertifikattyp (Certificate type)
Erstellen Sie ein Applikations- oder Benutzerzertifikat.
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.
| Verzeichnis | Beschreibung |
|---|---|
| trusted | Der Zertifikatspeicher, der vertrauenswürdige Zertifikate enthält. |
| /trusted/certs | Enthält X.509 v3-Zertifikate, die vertrauenswürdig sind. |
| /trusted/crl | Enthält X.509 v3-CRLs für die Zertifikate im Verzeichnis ./certs. |
| issuer | Der Zertifikatspeicher, der die für die Validierung erforderlichen CA-Zertifikate enthält. |
| /issuer/certs | Enthält für die Validierung erforderliche X.509 v3-Zertifikate. |
| /issuer/crl | Enthält X.509 v3-CRLs für die Zertifikate im Verzeichnis ./certs. |
| /rejected/certs | Enthält die X.509 v3-Zertifikate, die zurückgewiesen wurden. |
In den genannten Verzeichnissen werden die Zertifikate des WinCC OA Servers (cert - Verzeichnis) und der vertrauenswürdigen Clients (certs), CA-Zertifikate (issuer) bzw. abgelehnten Clients (rejected) abgelegt.
Client
Die Ablage, die Bedeutung und der Inhalt der Verzeichnisse sind analog zum Server.
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.
Migrationsleitfaden
- /PKI/ca/certs: Verschieben Sie Treiberzertifikate (Anwendung und Benutzer) in /own/certs.
- /PKI/ca/certs: Verschieben Sie CA-Zertifikate in /issuer/certs.
- /PKI/ca/certs: Verschieben Sie alle verbleibenden Zertifikate (Serveranwendung und Serverbenutzer) in /trusted/certs.
- /PKI/crl: Verschieben Sie alle *.crl-Dateien, die zu einer CA gehören, in /issuer/crl.
- /PKI/crl: Verschieben Sie alle anderen *.crl-Dateien in /trusted/crl.
- /PKI/private: Verschieben Sie alle Dateien in /own/private.
- /PKI/rejected: Verschieben Sie alle Dateien in
/rejected/certs.
Anmerkung:Sie müssen außerdem den Standard-Zertifikatsspeicher im Repository aktualisieren.
