Porovnávané verzie

Kľúč

  • Tento riadok sa pridal
  • Riadok je odstránený.
  • Formátovanie sa zmenilo.

...

  • Sú dva redundantné aplikačné servery (fyzické alebo virtualizované) - Windows alebo Linux.
  • Na oboch serveroch sú spustené D2000 Servery ako redundantná aplikácia (Master/Standby).
  • Na oboch serveroch sú spustené MQTT brokery Eclipse Mosquitto, nakonfigurované v režime TLS s certifikátom podpísaným certifikačnou autoritou. Sú spustené bez konfigurácie výmeny správ medzi sebou, t.j. každý z nich je úplne nezávislý.
  • D2000 Kom proces má nakonfigurovanú linku TCP/IP-TCP Redundant, s nakonfigurovaným overovaním certifikátu MQTT servera brokera a s nakonfigurovanými certifikátmi. D2000 KOM je teda pripojený k obidvom MQTT serverom brokerom súčasne.
  • Ostatní MQTT klienti (PLC a iné zariadenia) sú pripojení aspoň k jednému z MQTT serverovbrokerov (t.j. umožňujú nakonfigurovať 2 IP adresy MQTT serverovbrokerov, voči ktorým sa snažia striedavo nadviazať spojenie).
  • Na overovanie totožnosti všetkých klientov sa používajú TLS certifikáty podpísaným certifikačnou autoritou.

...

Konfiguračný súbor mosquitto.conf

Príklad ukazuje pre konfiguráciu na Windows, cesty na OS Linux je nutné upraviť Linux Ubuntu (samotný konfiguračný súbor sa môže nachádzať napr. v /etc/mosquitto/mosquitto.conf). broker.conf sa nachádza v /etc/mosquitto/conf.d):

Info
titlebroker.conf
#MQTTS listener on port 8883
listener 8883
#broker certificate
certfile /etc/mosquitto/certs/broker.crt
#broker private key
keyfile /etc/mosquitto/certs/broker.key
#require valid certificates of clients
require_certificate true
#file with certificate authority's public key(s)
cafile /etc/mosquitto/ca_certificates/caMQTT.crt
#use CN (Common Name) of client certificate as username (and ignore MQTT username+password)
use_identity_as_username true
#password file is not used for username/password verification (due to use_identity_as_username true)
#password_file pwfile
#acl file with defined access rights
acl_file /etc/mosquitto/myacl.conf 


Príklad pre konfiguráciu na Windows:

Info
titlemosquitto.conf
#MQTTS listener on port 8883
listener 8883
#broker certificate
certfile c:\Program Files (x86)\mosquitto\broker.crt
#broker private key
keyfile c:\Program Files (x86)\mosquitto\broker.key
#require valid certificates of clients
require_certificate true
#file with certificate authority's public key(s)
cafile c:\Program Files (x86)\mosquitto\caMQTT.crt
#use CN (Common Name) of client certificate as username (and ignore MQTT username+password)
use_identity_as_username true
#password file is not used for username/password verification (due to use_identity_as_username true)
#password_file pwfile
#acl file with defined access rights
acl_file c:\Program Files (x86)\mosquitto\myacl.conf

...

Info
titlemyacl.conf
#user without username: anonymous is forbidden, but just to make sure: deny everything
topic deny

#MQTT Edge Node: writes to DATA/BIRTH/DEATH/ for myGroup/myEdgeNode (and its subdevices), subscribes NCMD/DCMD and queries the state of Host Application
user myEdge
topic write spBv1.0/myGroup/NDATA/myEdgeNode/#
topic write spBv1.0/myGroup/DDATA/myEdgeNode/# 
topic write spBv1.0/myGroup/NBIRTH/myEdgeNode/#
topic write spBv1.0/myGroup/DBIRTH/myEdgeNode/#
topic write spBv1.0/myGroup/NDEATH/myEdgeNode/#
topic write spBv1.0/myGroup/DDEATH/myEdgeNode/#
topic read spBv1.0/myGroup/NCMD/myEdgeNode/#
topic read spBv1.0/myGroup/DCMD/myEdgeNode/#
topic read spBv1.0/STATE/D2000komHA

#MQTT Host Application: reads/writes its STATE, reads everything (this might be more precisely specified based on topics above), writes commands for myEdgeNode (and its subdevices)
user myHost
topic readwrite spBv1.0/STATE/D2000komHA
topic read spBv1.0/#
topic write spBv1.0/myGroup/NCMD/myEdgeNode
topic write spBv1.0/myGroup/DCMD/myEdgeNode/#

...

Nasledovný postup popisuje vytvorenie kľúčov a TLS certifikátov pre MQTT brokera, MQTT klienta myPLC (PLC alebo iné zariadenie) a MQTT klienta myD2000 (D2000 KOM proces).

1.

...

1 Vytvorenie certifikačnej autority

Tento krok je možné preskočiť, ak už máte existujúcu certifikačnú autoritu, prípadne vaše certifikáty podpisuje niekto iný. Parametrom -days sa určuje doba platnosti certifikátu. Parameter -keyout definuje názov súboru so súkromným kľúčom (ktorý je nutné chrániť pred odcudzením) a parameter -out  definuje názov certifikátu (ktorý je potrebné zverejniť).

...

Pri vytváraní kľúča je nutné zadať heslo, ktoré je jeho ochranou.

1.2 Nakopírovanie certifikátu certifikačnej autority

Certifikát certifikačnej autority (caMQTT.crt) je nutné nakopírovať tak, aby k nemu mal prístup D2000 KOM (najjednoduchšie do aplikačného adresára) a nastaviť cestu k nemu ako parameter "Certifikát partnera" (#APPDIR#\caMQTT.crt) v konfigurácii linky TCP/IP-TCP Redundant.

Certifikát certifikačnej autority (caMQTT.crt) je nutné nakopírovať na MQTT broker, aby pomocou neho MQTT broker vedel overovať platnosť certifikátov MQTT klientov (adresár /etc/mosquitto/ca_certificates).

Poznámka: V prípade redundantných MQTT brokerov a redundantných D2000 aplikačných serverov (a ďalších MQTT klientov) je nutné nakopírovať certifikát certifikačnej autority na všetky príslušné servery!

2.1 Vytvorenie kľúča a požiadavky na podpísanie certifikátu pre MQTT brokera

...

Súbor broker.crt (certifikát MQTT brokera) je spolu so súborom broker.key (súkromný kľúč MQTT brokera) a s certifikátom certifikačnej autority (caMQTT.crt) potrebné nakopírovať na MQTT serverbrokera (adresár /etc/mosquitto/certs). Súbor broker.key je navyše odporúčané chrániť (prístupovými právami, kryptovaním) tak, aby k nemu mal prístup iba užívateľ, pod ktorým beží MQTT broker.

Certifikát certifikačnej autority (caMQTT.crt) je nutné nakopírovať tak, aby k nemu mal prístup D2000 KOM (najjednoduchšie do aplikačného adresára) a nastaviť cestu k nemu ako parameter "Certifikát partnera" (#APPDIR#\caMQTT.crt) v konfigurácii linky TCP/IP-TCP Redundant.


3.1 Vytvorenie kľúča a požiadavky na podpísanie certifikátu pre MQTT klienta

...

Ak ste vyššie vytvorili certifikačnú autoritu, vytvárate certifikát (podpisujete certificate signing request). V opačnom prípade pošlete súbor myPLC.csr na podpis príslušnej certifikačnej autorita (napr. IT oddelenie firmy).
Parameter -days udáva dobu platnosti certifikátu v dňoch.

 openssl x509 -req -inmyPLCin myPLC.csr -CA caMQTT.crt -CAkey caMQTT.key -CAcreateserial -out myPLC.crt -days 1000

Súbor myPLC.crt (certifikát MQTT klienta) je spolu so súborom myPLC.key (súkromný kľúč MQTT klienta) a s certifikátom certifikačnej autority (caMQTT.crt) potrebné  potrebné nakopírovať na MQTT klienta. Súbor myPLC.key je navyše odporúčané chrániť (prístupovými právami, kryptovaním) tak, aby k nemu mal prístup iba užívateľ, pod ktorým beží MQTT klient. Súbor myPLC.crt je nutné nakopírovať aj na MQTT broker; pomocou neho bude overovaná totožnosť MQTT klienta.


4 Zopakovanie postupu pre D2000 MQTT klienta

Rovnako, ako bol vytvorený a podpísaný kľúč pre MQTT klienta myPLC, je nutné vytvoriť a podpísať kľúč pre MQTT klienta myD2000. Jeho verejný certifikát verejný certifikát (myD2000.crt) je opäť nutné nakopírovať do adresára MQTT brokera. Verejný certifikát (myD2000.crt) aj súkromný kľúč (myD2000.key) je nutné nakopírovať tak, aby k ním mal prístup D2000 KOM (najjednoduchšie do aplikačného adresára) a nastaviť cestu k ním ako parametre "Môj certifikát" (#APPDIR#\myD2000.crt) a "Môj kľúč" (#APPDIR#\myD2000.key) v konfigurácii linky TCP/IP-TCP Redundant.

Konfigurácia D2000 linky typu TCP/IP-TCP Redundant bude vyzerať takto:

Image Added

Poznámka: Súkromný kľúč pre D2000 MQTT klienta (myD2000.key) je odporúčané chrániť aj heslom, ktoré je potrebné zadať do poľa "Zdieľaný kľúč". Viac informácií je v popise linky TCP/IP-TCP Redundant.



Info
titleSúvisiace stránky:

Komunikačné protokoly

Protokol MQTT Client (Message Queue Telemetry Transport)

...