-

TLS_SOCKET

Hinweis
Für diesen Funktionsbaustein ist eine neue Implementierung verfügbar, der die Firmware-Version 2021.3 oder neuer erfordert. Der neue FB kombiniert die Handhabung von TCP- und TLS-Kommunikation. Außerdem ermöglicht er die Kommunikation eines TCP/TLS-Servers mit mehreren Clients. Weitere Informationen finden Sie im Thema "TLS_SOCKET_2".

TypFunktionsbaustein
BeschreibungDer Funktionsbaustein öffnet und schließt einen TLS-Socket, der für die sichere IP-Kommunikation zwischen einem Server und einem Client über TLS (Transport Layer Security) verwendet wird.

Der TLS-Socket wird durch den Ausgangsparameter HANDLE repräsentiert. Dieses Handle muss an die Funktionsbausteine TLS_SEND und TLS_RECEIVE übergeben werden. Die FBs benötigen das Sockethandle für den sicheren Datenaustausch mit einem Kommunikationspartner.

Mit einer steigenden Flanke am Eingang ACTIVATE wird begonnen, einen Socket zu öffnen. Bei erfolgreichem Öffnen des Sockets und Verbindungsaufbau wird der Ausgang ACTIVE auf TRUE gesetzt. Solange ACTIVE = TRUE ist, kann das Sockethandle am Ausgang HANDLE für den Aufruf der Funktionsbausteine TLS_SEND/ TLS_RECEIVE verwendet werden.
Eine fallende Flanke an ACTIVATE schließt den Socket. Die Verbindung wird mittels eines Drei-Wege-Handshake beendet, d.h. es werden drei Telegramme zwischen Client und Server ausgetauscht. Während des Beendungsprozesses führt eine erneute steigende Flanke zu einem Bausteinfehler.

Der Eingang START_TLS legt fest, ob für den Datenaustausch über die Funktionsbausteine TLS_SEND und TLS_RECEIVE eine reine TCP-Verbindung oder eine TLS-Verbindung verwendet wird. Im typischen Anwendungsfall für den FB TLS_SOCKET liegt am Eingang START_TLS der Wert TRUE an, wenn der ACTIVATE-Eingang TRUE wird. In selteneren Fällen, wie zum Beispiel bei SMTP, wird an START_TLS eine steigende Flanke angelegt, während ACTIVATE auf TRUE gesetzt ist. Wenn nach erfolgreichem Verbindungsaufbau START_TLS = FALSE ist, verwenden die Funktionsbausteine TLS_SEND und TLS_RECEIVE eine TCP-Verbindung, um Daten zu senden bzw. zu empfangen. Die Eingänge SEND_SECURE bzw. RECEIVE_SECURE der Funktionsbausteine müssen dem Wert an START_TLS entsprechen. Liegt nach erfolgreichem Verbindungsaufbau eine steigende Flanke an START_TLS an, wird das TLS-Protokoll initialisiert. Das bedeutet, das TLS-Protokoll wird aufsetzend auf dem TCP-Protokoll verwendet. Solange START_TLS = TRUE, erfolgt das Senden und Empfangen von Daten über eine TLS-gesicherte Verbindung. Für die Initialisierung des TLS-Protokolls werden die Daten aus dem CONNECT_INFO-Eingang verwendet, die zum Zeitpunkt der FB-Aktivierung anlagen. Die vordefinierte Struktur am Eingang CONNECT_INFO enthält unter anderem die im Vertrauensspeicher (TrustStore) und Identitätsspeicher (IdentityStore) der Geräte enthaltenen Zertifikate für die Authentifizierung. (Eine Beschreibung der Werte am CONNECT_INFO und wie Sie Zertifikate im WBM der Steuerung verwalten und verknüpfen finden Sie weiter unten im Thema.)

Das Aufrufen der TLS_SEND/ TLS_RECEIVE-Funktionsbausteine mit dem Sockethandle während ACTIVE auf FALSE gesetzt ist, führt zu einem Fehler an den Funktionsbausteinen. Solange der ACTIVATE-Eingang gesetzt ist, bleibt der Socket geöffnet. Der Ausgang BUSY wird auf TRUE gesetzt, während ACTIVATE = TRUE und der Socket noch nicht geöffnet ist. Bei einer fallenden Flanke des ACTIVATE-Eingangs wird der Socket geschlossen und der Ausgang ACTIVE auf FALSE gesetzt (siehe hierzu auch die nachfolgenden Hinweise). Sollte eine erfolgreich aufgebaute Verbindung geschlossen werden, versucht der Funktionsbaustein diese Verbindung erneut aufzubauen (sofern ACTIVATE = TRUE bleibt).

Der Eingang IS_SRV legt fest, ob der Funktionsbaustein eine Verbindung als TCP-Server oder TCP-Client aufbaut.

  • Mit IS_SRV = TRUE erzeugt der Funktionsbaustein einen "horchenden" (listening) Socket (Server-Socket). Der Socket kann an einen lokalen Ethernet-Adapter (Angabe der IP-Adresse am Eingang BIND_IP) und einen Port (Eingang BIND_PORT) gebunden werden. Unter dieser IP-Adresse und Portnummer wartet anschließend der Server auf Anfragen der Clients- Falls erforderlich können die akzeptierten Clients über die Eingänge DEST_IP/DEST_PORTS limitiert werden. Bei geöffnetem (Server-) Socket sind nur 1:1 Verbindungen möglich. Das bedeutet, der Listening-Socket akzeptiert nur eine eingehende TLS-Verbindung.
  • Mit IS_SRV = FALSE wird ein Client-Socket erzeugt. In diesem Fall legen DEST_IP/DEST_PORT die IP-Adresse und den Port des Partner-Servers fest, mit dem kommuniziert werden soll.

WARNUNG
Unbeabsichtigter Betriebszustand des Geräts
Stellen Sie sicher, dass das Ändern der Ausgangsdaten nicht zu einem ungewollten oder gefährlichen Verhalten des Gesamtsystems führen kann.

Hinweise
  • Die Funktionsbausteine für die TLS-Kommunikation werden asynchron verarbeitet. Das bedeutet, die Funktionsbausteine erteilen Befehle und warten auf deren Verarbeitung.
  • Das mit dem Funktionsbaustein erzeugte TLS-Sockethandle ist nicht kompatibel mit dem TCP-Sockethandle, das mit dem Baustein TCP_SOCKET erzeugt wird. Das TLS-Sockethandle kann nur mit den Funktionsbausteinen TLS_SEND und TLS_RECEIVE verwendet werden, das TCP-Sockethandle nur mit den FBs TCP_SEND und TCP_RECEIVE.
  • Die Anzahl der gerade geöffneten TLS-Sockets wird in der Systemvariable TLS_ACTIVE_SOCKETS gespeichert (enthalten in der Datenliste des Steuerungsknotens und des 'PLC'-Knotens der ANLAGE).
  • Bei einem Warm- oder Kaltstart oder einem Reset der Steuerung, schließt die Firmware alle Sockets, die mit der entsprechenden TLS_SOCKET-Instanz geöffnet wurden.
  • Stellen Sie bei Steuerungen mit integrierter Firewall sicher, dass die Firewall nicht die für die Kommunikation benötigten Ports blockiert. Andernfalls kann keine Verbindung hergestellt werden.
  • Alle verwendeten IP-Adressen sind IPv4-Adressen. IPv4-Adressen bestehen aus 4 Zahlen (Werte von 0 bis 255), die durch Punkte voneinander getrennt sind.
  • Funktionsbausteine müssen instanziiert werden.
    Der FB-Instanzname muss in der 'Variablen'-Tabelle der POE deklariert werden, in welcher der FB verwendet werden soll. Der Instanzname muss innerhalb der POE eindeutig sein.
ParameterEingänge

ACTIVATE

IS_SRV

BIND_IP

BIND_PORT

DEST_IP

DEST_PORT

CONNECT_INFO

START_TLS

Ausgänge

HANDLE

ACTIVE

BUSY

ERROR

STATUS

USED_PORT
Zusätzliche InformationenVerwalten und Verknüpfen von Zertifikaten im TrustStore und IdentityStore