HTTPS (SSL-Verbindungen)

Für die Verwendung von HTTPS gehen Sie folgendermaßen vor:

  1. Erstellen Sie ein neues WinCC OA-Projekt auf dem Server.

  2. Extrahieren Sie das Zertifikat vom Server: openssl s_client -connect localhost:443

  3. Importieren Sie das empfangene Zertifikat ins keystore:

    bin\keytool -import -file <path to file> -keystore lib\security\cacerts -alias WinCC OA -storepass xxxx
  4. Verbinden Sie sich über den Browser.

Anmerkung: Der Server benötigt eine Zertifikats-Datei, welche dem Client mitteilt mit wem er kommuniziert. Diese Datei muss im config Verzeichnis vorhanden sein und den Namen "certificate.pem" tragen. Das Format der Datei ist PEM.

Erstellung von Zertifikaten über eine Zertifizierungsstelle

Zuerst muss ein Anbieter (z.B. verisign.com) ausgewählt werden, über den das Zertifikat erlangt werden soll. Nach Eingabe der notwendigen firmenbezogenen Daten auf der Homepage ist eine CSR (Certificate Signing Request) Datei und zusätzlich ein Private-Key erforderlich.

  • Zum Generieren eines neuen Private-Keys öffnen Sie die Shell des Betriebssystems, gehen Sie in das /config Verzeichnis des Projektes:
cd <project_path>/config
  • und geben Sie das folgende Kommando ein:

openssl genrsa 2048 > privkey.pem
  • Die CSR Datei wird folgendermaßen erzeugt:

openssl req -new -key privkey.pem -out cert.csr –outform <gewünschtes Format von SSL Lieferanten>
  • Die folgenden Daten müssen angegeben werden:

  • Ländercode (z.B.: AT)

  • Bundesland (z.B.: Burgenland)

  • Stadt (z.B.: Eisenstadt)

  • Firmenname (z.B.: ETM professional control )

  • Organisationseinheit (optional, beispielsweise eine bestimmte Abteilung der Firma)

  • Common Name: [Host+Domain Name] (z.B.: www.etm.at)

  • Email Adresse (leer lassen)

  • Passwort (leer lassen)

  • Optional Company Name (leer lassen)

  • Die generierte CSR-Datei wird an den Anbieter übermittelt, welcher anschließend daraus ein Zertifikat erstellt. Das zugesandte Zertifikat muss in das /config-Verzeichnis des Projektes importiert werden.

  • Nun ist eine HTTPS-Verbindung zum Server möglich. Bei der Verschlüsselung wird eine Cipher-Suite verwendet.

Anmerkung:

Wenn bei der "certificate.pem"-Datei die Fehlermeldung "no start line" auftritt, kann es sein, dass in der Datei noch vor "BEGIN" ein BOM (Byte Order Mark) zur Erkennung der Byte-Reihenfolge eingefügt ist. Zur Fehlerbehebung, muss das Zertifikat mit einem Editor geöffnet werden, der ein BOM erkennen kann und das BOM entfernt werden.

Erstellung von selbstsignierten (self-signed) Zertifikaten

Hier wird das Zertifikat manuell erstellt. Es kann aber auch ein Panel verwendet werden - siehe Kapitel Panel für SSL-Zertifikate.

  • Erstellen Sie mit dem Panel den Zertifkatstyp "Zertifikat für den HTTP Server". Es wird hier ein Private-Key (privkey.pem) erstellt.

  • Gehen Sie in das /config-Verzeichnis des Projektes:cd project_path/config

Erstellen Sie den Root-Schlüssel

  • openssl genrsa -aes256 -out private/ca.key.pem 4096

  • Enter pass phrase for ca.key.pem: secretpassword Verifying - Enter pass phrase for ca.key.pem: secretpassword

Erstellen Sie das Root-Zertifikat

  • Verwenden Sie den Root-Schlüssel (ca.key.pem), um ein Root-Zertifikat zu erstellen (ca.cert.pem). Das Root-Zertifikat muss ein langes Verfallsdatum enthalten z.B. 30 Jahre. Wenn das Root-Zertifikat abläuft, sind die von der Zertifizierungsstelle signierten Zertifikate ungültig.

openssl req -config openssl.cnf
-key private/ca.key.pem
-new -x509 -days 10950 -sha256 -extensions v3_ca
-out certs/ca.cert.pem 

Verifizieren Sie das Root-Zertifikat

  • openssl x509 -noout -text -in certs/ca.cert.pem

Generieren Sie einen Privaten Schlüssel

  • Um einen privaten Schlüssel zu generieren, geben Sie das folgende Kommando ein:

    openssl genrsa 2048 > privkey.pem
  • Diese Datei wird im /config -Verzeichnis des Projektes erstellt. Geben Sie folgendes openSSL-Kommando ein, um ein neues selbst signiertes Zertifikat zu erstellen:

    openssl req -new -x509 -key privkey.pem -out certificate.pem -days 1095

    1095 Tage sind 3 Jahre (definiert den Gültigkeitszeitraum für das Zertifikat).

    Anmerkung:

    Der Private-Key muss RSA verschlüsselt und Base64 kodiert sein, um Zertifikatswarnungen zu unterbinden.

  • Als nächstes wird ein interaktiver Vorgang gestartet, in dem der Benutzer einige Angaben machen und diese mit Enter bestätigen muss. Wichtig für den HTTPS-Server ist der "Common Name". Für diesen muss die IP-Adresse des Servers eingetragen werden, ansonsten kann der Webbrowser das Zertifikat dem Server nicht zuordnen. Zum Beispiel:

    ========================== You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank. For some fields there will be a default value. If you enter '.', the field will be left blank. 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 Organizational Unit Name (eg, section) []:. Common Name (eg, YOUR name) []:192.168.129.1 Email Address []:. ==========================

    Darauffolgend wird die Datei certificate.pem im oben angegebenen Verzeichnis erstellt.