Sie sind auf Seite 1von 7

WebServer mit SSL Unterstützung

Version: 1.0
Template: templ_tecdoc_de_V1.0.docx
JIRA-ID: CDS-29361 Dateiname: templ_tecdoc_de_V1.0.docx

© 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.0.docx

© 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.0.docx

© 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.0.docx

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
WebServer.CipherList=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=SysFileMap.cfg, SysFileMap

[CmpRouter]
EnableLoopDetection=1
NumRouters=1

[CmpOpenSSL]
WebServer.Cert=server.cer
WebServer.PrivateKey=server.key
WebServer.CipherList=HIGH
Template: templ_tecdoc_de_V1.0.docx

[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:
http://slproweb.com/products/Win32OpenSSL.html
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 server.key 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 server.key -out server.csr
4. Preface vom Schlüssel entfernen. Für Serveranwendungen unbrauchbar.
>>> copy server.key server.key.org
5. Selbstsigniertes Zertifikat erzeugen. Ein Jahr gültig. Tage eventuell entsprechend anpassen
>>> openssl x509 -req -sha256 -days 365 -in server.csr -signkey server.key -out server.crt
6. Fingerprint des Zertifikates kopieren ausdrucken oder abschreiben
>>> openssl x509 -noout -in server.crt -fingerprint
7. Temporäre Dateien wieder löschen
>>> del server.csr
>>> del server.key.org
Nun liegen in diesem Ordner ein server.key und ein server.crt. 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.0.docx

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.0.docx

© 3S-Smart Software Solutions GmbH