WebView.ewo - Zertifikatshandling
Um das webView.ewo mit SSL zu verwenden, muss ein SSL-Zertifikat gekauft werden oder eine Zertifizierungsstelle erstellt werden, die Root-CA in Windows importiert werden und ein Zertifikat ausgestellt werden.
Voraussetzungen
- Installieren Sie openSSL auf der Maschine.
- Zur Ausführung der Befehle ist eine Shell zur Betriebssystemebene erforderlich.
- Wählen Sie ein geeignetes Verzeichnis aus, in dem die Dateien abgelegt werden können.
Certificate Authority (CA)erstellen
- Erstellen Sie eine eigene OpenSSL CA und stellen Sie Zertifikate aus. Führen Sie das
folgende Kommando in einer Kommandozeile aus:
openssl genrsa -aes256 -out ca-key.pem 2048
Erstellen des Root-CA
-
Einen geheimen Key für die CA gibt es bereits. Es fehlt noch das Root-Zertifikat, das von den Clients später importiert werden muss, damit die von der CA ausgestellten Zertifikate im Browser als gültig erkannt werden. Das Root-Zertifikat "root-cert.pem" wird mit folgendem Befehl erzeugt. (ggf. wird das Passwort für den vorher erstellen Key abgefragt!)
openssl req -x509 -new -nodes -extensions v3_ca -key ca-key.pem -days 10950 -out root-cert.pem -sha512
WARNING:
can't open config file: ../output/../output/ssl/openssl.cnf Unable
to load config info from ../output/../output/ssl/openssl.cnf
-
Es gibt zwei Möglichkeiten dem entgegenzuwirken:
Durch die Angabe einer "config" und den Pfad der openssl.cnf-Datei:
config "c:/Siemens/Automation/winCC_OA/3.18/bin/openssl.cnf"
oder durch die Aktualisierung einer gloablen Pfadvariable:
set OPENSSL_CONF=C:\Siemens\Automation\WinCC_OA\3.18\bin\openssl.cnf
-
Die folgenden Angaben sind für das Root-CA-Zertifikat. Hier geht es um den Austeller und nicht um den Client:
Country Name (2 letter code)[AU]:AT State or Province Name (full name) [Some-State]:Burgenland Locality Name (eg, city) []:Eisenstadt Organization Name (eg, company) [Internet Widgits Pty Ltd]:etm.com Organizational Unit Name (eg, section) []:IT Common Name (eg, YOUR name) []:etm.net Email Address []:sslmaster@etm.com
Root-Zertifikat auf den Clients importieren (Windows):
Unter Linux können nur dateibasierte Zertifikate verwendet werden. Daher müssen unter Linux die Zertifikate nicht importiert werden. Kopieren Sie die erstellten Zertifikate ins config-Verzeichnis des Projektes.
-
Das Root-CA-Zertifikat kann direkt im Browser importiert werden, oder/und global am Computer über die Windows-Zertifikatsverwaltung Windows Cert Store. Öffnen Sie die Windows-Zertifikatsverwaltung über das Start-Menü - siehe Abbildung "Windows-Zertifikatsverwaltung öffnen" unterhalb. Alternativ öffnen Sie die Windows-Zertifikatsverwaltung über das Kommando
mmc
im Eingabeaufforderungsfenster.
Abbildung: Windows-Zertifikatsverwaltung öffnen
-
Importieren Sie beide sowohl das Root-CA-Zertifikat als auch später das weiter unten beschriebene Client-Zertifikat (Public Key "certificate.pem"):
Abbildung: Root-CA-Zertifikat importieren
Ein neues Zertifikat ausstellen
-
Ein neues Host-Zertifikat kann ausgestellt werden. Das Hier angeführte Beispielt geht davon aus, dass alles aus einem Ordern heraus gemacht wird. Die CA ist fertig und kann genutzt werden. Grundlage ist immer ein privater Schlüssel. Wie auch bei der CA wird ein Private Key erzeugt:
openssl genrsa -out privkey.pem 4096
Jetzt kann ein Passwort definiert werden. Das Passwort wird benötigt, um auf den Private Key zuzugreifen und einen Public Key zu erstellen. Das Passwort wird im laufenden Betrieb nicht benötigt.
Zertifikatsanfrage erstellen
-
Nun wird eine Zertifikatsanfrage erstellt, bei der die folgenden Attribute abgefragt werden: Country name, State or Province Name, Locality Name, Organization Name, Organizational Unit Name, Common Name and Email Address.
Das Feld "Common Name" muss den Servernamen des Servers tragen, für den es gültig sein soll. Verwenden Sie den Servernamen für das Common Name"-Feld. Der Servername kann ein vollständiger Domain- oder Hostname wie z.B.: abcd.001.etm.net sein. Um den Servernamen zu überprüfen, verwenden Sie den Debugger der WebEngine. Dieser wird automatisch mit dem WebViewEwo geöffnet, wenn das Attribut "webInspector" im Attributeditor auf "TRUE" gesetzt wurde.
Abbildung: Debugger der WebEngine
-
Das Challenge Passwort soll nicht gesetzt werden (lassen Sie es leer).
openssl req -new -key privkey.pem -out certificate.csr -sha512
-
Geben Sie die Informationen für die Zertifikatsanfrage ein.
-
Sobald die Zertifikatsanfrage "certificate.csr" fertiggestellt ist, kann sie von der CA verarbeitet werden. Dabei entsteht der öffentliche Schlüssel (Public Key)-Zertifikat. Dieser wird zusammen mit dem Private Key des Zertifikats für die Verschlüsselung benötigt.
-
Mit folgendem Befehl wird ein Public Key (Zertifikat) "certificate.pem" ausgestellt, der 365 Tage lang gültig ist:
openssl x509 -req -in certificate.csr -CA root-cert.pem -CAkey ca-key.pem -CAcreateserial -out certificate.pem -days 365 -sha512
-
Das Passwort für die CA wird erneut abgefragt. Die Zertifizierungsanfrage certificate.csr kann gelöscht werden – sie wird nicht mehr benötigt. Übrig bleiben Private Key und Public Key des neuen Zertifikats (privkey.pem und certificate.pem) sowie Private- und Public Key der CA (ca-key.pem und root-cert.pem)
- Importieren Sie den öffentlichen Schlüssel (Public Key) "certificate.pem"
über:
Certificates -> Personal -> Certificates -> All tasks -> Import
(siehe die Abbildung im Schritt "Root-Zertifikat auf den Clients importieren").
-
Starten Sie das Projekt und WebView.ewo
-
Überprüfen Sie, dass Ihre Zertifikate (Private Key und Public Key des neuen Zertifikats (privkey.pem und certificate.pem) sowie das Public Key der CA (root-cert.pem)) im Config-Verzeichnis des Projektes liegen.
-
Starten Sie Ihr Projekt und das webclient_http.ctl-Skript. Starten Sie danach das WebView.ewo. In der Abbildung unterhalb wird das Panel start.pnl: wincc_oa_path/panels/examples/js gestartet.
Abbildung: WebView.ewo