WebServer mit SSL Unterstützung
Version: 1.0
Template: templ_tecdoc_de_V1.[Link]
JIRA-ID: CDS-29361 Dateiname: templ_tecdoc_de_V1.[Link]
© 3S-Smart Software Solutions GmbH
INHALT
Seite
1 Einleitung 3
2 Zertifikatsverwaltung 3
2.1 Infrastruktur CmpOpenSSL im Dateisystem 4
2.2 Konfiguration CmpOpenSSL in der Laufzeitsystemkonfigurationsdatei
4
2.3 Erzeugung eines selbstsignierten Zertifikates 5
3 Hinweise 6
4 Glossar 6
Änderungshistorie 7
Template: templ_tecdoc_de_V1.[Link]
© 3S-Smart Software Solutions GmbH
CODESYS Inspiring Automation Solutions 3/7 WebServer mit SSL Unterstützung
Einleitung
1 Einleitung
Wenn die WebVisualisierung im Internet verwendet wird, sollten verschiedene Sicherheitsvorkehrungen
getroffen werden um eine Steuerung vor unerlaubtem Zugriff zu schützen.
Eine Bedienung einer Visualisierung sollte nur dann möglich sein, wenn zuvor eine Benutzerauthentifizierung
durchgeführt wurde. Damit die Anmeldedaten sicher zum WebServer übertragen werden können, sollten
Zugriffe auf die WebVisualisierung nur über verschlüsselte https Verbindungen (Port 443) gemacht werden.
Dies ist nur dann möglich, wenn der WebServer auch eine https Verbindung aufbauen kann. Ab Version V3.5
SP5 bietet der CODESYS WebServer diese Möglichkeit an. Hierzu wird die Laufzeitsystemkomponente
CmpOpenSSL verwendet.
In diesem Dokument wird beschrieben, welche Schritte durchzuführen sind, um den WebServer mit einer
sicheren Verbindung auszustatten.
2 Zertifikatsverwaltung
Um innerhalb des WebServers eine https Verbindung zu ermöglichen, muss ein Zertifikat erstellt worden sein
und dieses dem Laufzeitsystem bekannt gemacht werden. Ein solches Zertifikat dient der Sicherstellung, mit
der korrekten Steuerung zu kommunizieren, sowie als Basis für die Verschlüsselung der übertragenen Daten.
Im nachfolgenden Kapitel wird beschrieben, wie diese Bekanntmachung innerhalb der Konfigurationsdatei der
Steuerung erfolgt.
Damit ein Zertifikat vom Browser als sicher bewertet werden kann, muss dieses von einer Zertifizierungsstelle
signiert worden sein. In der Regel hat jeder Browser eine Liste von vertrauenswürdigen Zertifizierungsstellen.
Ein solches Zertifikat kann vom Browser selbst geprüft werden, so dass keine Warnmeldung im Browser
erscheint, wenn eine sichere Verbindung aufgebaut wird. Das Signieren eines Zertifikats von einer dieser
vertrauenswürdigen Zertifizierungsstellen erfolgt üblicherweise nicht kostenlos.
Alternativ ist auch ein selbst erstelltes Zertifikat möglich. Dies hat aber den Nachteil dass dieses Zertifikat im
Browser geprüft werden muss. Es wird ein Warnhinweis vom Browser ausgegeben (siehe Abbildung 2.1) dass
der Verbindung nicht vertraut wird. Es kann dann eine Ausnahme hinzugefügt werden, so dass dieser
Warnhinweis nicht jedes Mal erscheint, wenn diese Verbindung geöffnet wird. Um zu gewährleisten, dass
tatsächlich mit der richtigen Steuerung kommuniziert wird, ist es aber notwendig den Signaturwert des
Zertifikats mit dem Signaturwert des Zertifikats auf der eigenen Steuerung zu vergleichen!
Template: templ_tecdoc_de_V1.[Link]
© 3S-Smart Software Solutions GmbH
CODESYS Inspiring Automation Solutions 4/7 WebServer mit SSL Unterstützung
Zertifikatsverwaltung
Abbildung 2.1 (aus Mozilla Firefox)
Die Erstellung eines solchen Zertifikats wird in Kapitel 2.3 beschrieben.
2.1 Infrastruktur CmpOpenSSL im Dateisystem
Die Komponente CmpOpenSSL des Laufzeitsystems muss im Arbeitsverzeichnis der Steuerung auf die
Zertifikate und Privaten Schlüssel zugreifen können. Ein simpler kleiner Zertifikatsspeicher ist in Form einer
Ordnerstruktur vorgegeben. Diese Ordnerstruktur sieht folgendermaßen aus:
• PKI: Dieser Ordner ist das Überverzeichnis für die Public Key Infrastruktur. Standardmäßig ist dieses
Template: templ_tecdoc_de_V1.[Link]
Verzeichnis ./PKI/ im Arbeitspfad der Steuerung. Über die Einstellung „CertStoreBase“ kann dieser
Pfad geändert werden.
• PKI/cert: Dieser Ordner enthält die Zertifikate welche die Steuerung identifizieren.
• PKI/private: Dieser Ordner enthält die privaten Schlüssel für die Zertifikate im PKI/cert Ordner.
• PKI/crl: Dieser Ordner enthält die Rückruflisten der Zertifikats-Aussteller (CAs)
• PKI/trusted: Dieser Ordner enthält die Zertifikate der vertrauenswürdigen CAs
Für Zertifikate und private Schlüssel sind zwei Formate gebräuchlich. Die Unterscheidung zwischen diesen
Formaten (BASE64 und DER) erfolgt automatisch.
2.2 Konfiguration CmpOpenSSL in der Laufzeitsystemkonfigurationsdatei
Damit der Webserver eine gesicherte Verbindung zur Verfügung stellen kann (https), müssen die passenden
Einstellungen gesetzt werden. Dies geschieht in der Konfigurationsdatei des Laufzeitsystems. Hier sind die
Settings beschrieben:
• Cert: Dateiname des Zertifikats
• PrivateKey: Dateiname des privaten Schlüssels. Der private Schlüssel muss zum Zertifikat passen.
© 3S-Smart Software Solutions GmbH
CODESYS Inspiring Automation Solutions 5/7 WebServer mit SSL Unterstützung
Zertifikatsverwaltung
• CipherList: Verfügbare Verschlüsselungsalgorithmen für die https-Verbindung
(Standard: HIGH+DH -> Verfahren, die OpenSSL als High einstuft, und Diffie Hellman verwenden)
Folgende Einstellungen sind optional und müssen üblicherweise nicht eingestellt werden:
• Method: Auswahl der SSL/TLS Version (siehe TLS_METHOD_* Defines). (Standard: 9 TLS1.2 Server)
• VerifyMode: Prüfung der Gegenstelle (default: Nur Client prüft Gegenstelle.)
Wichtig: Damit eine SSL Verbindung mit dem Internet Explorer aufgebaut werden kann, ist die Einstellung
[Link]=HIGH zu setzen. Siehe Beispiel Konfigurationseinstellungen.
Eine minimale Konfiguration für das Laufzeitsystem könnte wie folgt aussehen:
[ComponentManager]
Component.1=CmpTargetVisuStub
Component.2=CmpCodeMeter
Component.3=CmpWebServer
Component.4=CmpWebServerHandlerV3
Component.5=CmpOpenSSL
[CmpSettings]
FileReference.0=[Link], SysFileMap
[CmpRouter]
EnableLoopDetection=1
NumRouters=1
[CmpOpenSSL]
[Link]=[Link]
[Link]=[Link]
[Link]=HIGH
Template: templ_tecdoc_de_V1.[Link]
[CmpWebServer]
ConnectionType=3
Hierbei gibt es für den ConnectionType die folgenden Möglichkeiten:
0: Nur http-Verbindungen möglich
1: Nur https-Verbindungen möglich
2: Sowohl http- als auch https-Verbindungen möglich
3: http- und https-Verbindungen möglich, wobei beim Zugriff über http automatisch auf https weitergeleitet wird
2.3 Erzeugung eines selbstsignierten Zertifikates
Das OpenSSL Toolkit kann hier für Windows heruntergeladen werden:
[Link]
An dieser Stelle ist das Light Paket ausreichend
© 3S-Smart Software Solutions GmbH
CODESYS Inspiring Automation Solutions 6/7 WebServer mit SSL Unterstützung
Hinweise
Auf vielen Linux-Plattformen ist das Toolkit bereits verfügbar. Ansonsten können Sie es über den Package-
Manager nachinstallieren.
Falls OpenSSL nicht in der Path-Umgebungsvariable aufgeführt ist, nehmen Sie den Pfad mit
auf. Im Fall der oben angegebenen Installation C:\OpenSSL-Win32\bin, oder der im Install angegebene Pfad.
Erzeugt wird ein Zertifikat mit 2048bit Schlüssel, SAH256 als Signierung, und einen SHA1 Fingerprint
Legen Sie nun einen Ordner an, in dem der Schlüssel und das Zertifikat abgelegt werden sollen, im Beispiel:
c:\example_cert:
1. Kommandozeile öffnen und in diesen Ordner wechseln
2. Private Schlüssel mit 2048bit Schlüsselbreite für das Zertifikat erzeugen
>>> openssl genrsa -out [Link] 2048
3. Signierungsanfrage für diese Schlüssel erzeugen. Die abgefragten Informationen
eingeben. "A challenge password" imd "An optional company name"
können frei gelassen werden
>>> openssl req -new -key [Link] -out [Link]
4. Preface vom Schlüssel entfernen. Für Serveranwendungen unbrauchbar.
>>> copy [Link] [Link]
5. Selbstsigniertes Zertifikat erzeugen. Ein Jahr gültig. Tage eventuell entsprechend anpassen
>>> openssl x509 -req -sha256 -days 365 -in [Link] -signkey [Link] -out [Link]
6. Fingerprint des Zertifikates kopieren ausdrucken oder abschreiben
>>> openssl x509 -noout -in [Link] -fingerprint
7. Temporäre Dateien wieder löschen
>>> del [Link]
>>> del [Link]
Nun liegen in diesem Ordner ein [Link] und ein [Link]. Dieses Paar umfasst das Zertifikat und den
privaten Schlüssel passend zu diesem Zertifikat.
3 Hinweise
Aktuell gibt es folgende offene Verbesserungsideen, die sowohl die Sicherheit als auch die
Benutzerfreundlichkeit der Webvisualisierung erhöhen:
•
Template: templ_tecdoc_de_V1.[Link]
CDS-36254: Standard http-Authentifizierung für einfache Benutzerverwaltungen
• CDS-31856: Kombination Benutzerverwaltung der Steuerung mit der Visualisierung
Unter anderem aus diesen Gründen ist es weiterhin empfehlenswert, nur über VPN auf die Webvisualisierung
zuzugreifen.
4 Glossar
OpenSSL Freie Software für Secure Socket Layer (SSL)
© 3S-Smart Software Solutions GmbH
CODESYS Inspiring Automation Solutions 7/7 WebServer mit SSL Unterstützung
Änderungshistorie
Änderungshistorie
Version Beschreibung Bearbeiter Datum
0.1 Erstellung StS 08.07.2014
0.2 Anpassung Einstellungen CmpOpenSSL an aktuellen Stand ASch 10.07.2014
0.3 Review und Vereinfachungen für Endanwender MP 14.07.2014
1.0 Freigabe nach formalem Review MN 14.07.2014
1.0 Nur Rechtschreibkorrekturen MN 21.11.2014
Template: templ_tecdoc_de_V1.[Link]
© 3S-Smart Software Solutions GmbH