Sdílet prostřednictvím


Zabezpečení komunikace zprostředkovatele MQTT pomocí BrokerListener

Důležité

Tato stránka obsahuje pokyny ke správě komponent operací Azure IoT pomocí manifestů nasazení Kubernetes, které jsou ve verzi Preview. Tato funkce je poskytována s několika omezeními a neměla by se používat pro produkční úlohy.

Právní podmínky, které platí pro funkce Azure, které jsou ve verzi beta, verzi Preview nebo které zatím nejsou veřejně dostupné, najdete v Dodatečných podmínkách použití pro Microsoft Azure verze Preview.

Prostředek BrokerListener odpovídá koncovému bodu sítě, který zprostředkovatele zpřístupňuje klientům přes síť. Pro každého zprostředkovatele můžete mít jeden nebo více prostředků BrokerListener s více porty a různým řízením přístupu.

Každý port BrokerListener může mít vlastní ověřovací a autorizační pravidla, která definují, kdo se může připojit na daném portu naslouchacího procesu a jaké akce můžou u zprostředkovatele provádět. Prostředky BrokerAuthentication a BrokerAuthorization můžete použít k určení zásad řízení přístupu pro každý port naslouchacího procesu. Tato flexibilita umožňuje jemně vyladit oprávnění a role pro klienty MQTT na základě jejich potřeb a případů použití.

Tip

Výchozí nasazení zprostředkovatele MQTT je služba IP clusteru, která vyžaduje, aby se klienti připojili pomocí protokolu TLS (Transport Layer Security) a ověřili se pomocí tokenů účtu služby. Klienti, kteří se připojují mimo cluster , potřebují před připojením další konfiguraci .

Naslouchací procesy zprostředkovatele mají následující charakteristiky:

Seznam všech dostupných nastavení najdete v referenčních informacích k rozhraní API naslouchacího procesu zprostředkovatele.

Výchozí brokerListener

Když nasadíte operace Azure IoT, nasazení vytvoří prostředek BrokerListener s názvem výchozí. Tento naslouchací proces se používá pro šifrovanou interní komunikaci mezi komponentami operací IoT. Výchozí naslouchací proces je součástí výchozího zprostředkovatele.

  • Zveřejňuje službu ClusterIp na portu 18883.
  • Vyžaduje, aby klienti používali ověřování účtu služby Kubernetes.
  • automaticky spravovaný certifikát TLS.
  • Nenakonfiguruje žádné zásady autorizace klientů.

Upozornění

Aby nedošlo k narušení interní komunikace operací IoT, ponechte výchozí naslouchací proces beze změny a vyhrazený pro interní použití. Pro externí komunikaci vytvořte nový naslouchací proces. Pokud potřebujete službu použít ClusterIp , přidejte do výchozího naslouchacího procesu další porty beze změny stávajícího nastavení.

Pokud chcete zobrazit nebo upravit výchozí naslouchací proces, postupujte takto.

  1. Na webu Azure Portal přejděte do vaší instance ioT Operations.

  2. V části Součásti vyberte Zprostředkovatele MQTT.

    Snímek obrazovky znázorňující použití webu Azure Portal k zobrazení konfigurace Azure IoT Operations MQTT

  3. V seznamu naslouchacího procesu zprostředkovatele vyberte výchozí naslouchací proces.

    Snímek obrazovky znázorňující použití webu Azure Portal k zobrazení nebo úpravě výchozího naslouchacího procesu zprostředkovatele

  4. Zkontrolujte nastavení naslouchacího procesu, ale vyhněte se úpravám některého z existujících nastavení. Místo toho vytvořte nový port a podle potřeby ho nakonfigurujte.

Vyhněte se úpravám výchozího naslouchacího procesu zprostředkovatele.

Pokud chcete zabránit narušení interní komunikace operací IoT, ponechte výchozí naslouchací proces beze změny a vyhrazený pro interní použití. Pro externí komunikaci vytvořte nový naslouchací proces.

Vzhledem k tomu, že výchozí naslouchací proces zprostředkovatele používá typ ClusterIpslužby a pro každý typ služby můžete mít pouze jeden naslouchací proces, přidejte do výchozího naslouchacího procesu další porty, aniž byste museli měnit stávající nastavení, pokud potřebujete službu použítClusterIp.

Vytvoření nových naslouchacích procesů zprostředkovatele

Pokud chcete vytvořit nový naslouchací proces, zadejte následující nastavení:

  • Název: Název naslouchacího procesu. Tento název je také název služby Kubernetes, pokud ho nepřepíšete.
  • Typ služby: Typ služby Kubernetes. Viz Typ služby.
  • Porty: Seznam portů, na které se mají naslouchat. Viz Porty.
  • Název služby (volitelné): Přepište název služby Kubernetes. Viz Název služby.

Příklad: Vytvoření nového naslouchacího procesu se dvěma porty

Tento příklad ukazuje, jak vytvořit nový naslouchací proces s typem LoadBalancer služby. Prostředek BrokerListener definuje dva porty, které přijímají připojení MQTT z klientů.

  1. Na webu Azure Portal přejděte do vaší instance ioT Operations.

  2. V části Součásti vyberte Zprostředkovatele MQTT.

  3. Vyberte naslouchací proces zprostředkovatele MQTT pro vytvoření loadbalanceru>.

    Zadejte následující nastavení:

    Nastavení Description
    Name Název prostředku BrokerListener.
    Service name Název služby Kubernetes Ponechte prázdný název naslouchacího procesu jako název služby.
    Typ služby LoadBalancer už je vybraný.
  4. V části Porty zadejte následující nastavení pro první port:

    Nastavení Popis
    Port Zadejte 1883.
    Ověřování Zvolte Žádné.
    Autorizace Zvolte Žádné.
    Protokol Zvolte MQTT.
    Protokol TLS Nepřidávejte.
  5. Vyberte Přidat položku portu a přidejte druhý port a zadejte následující nastavení:

    Nastavení Popis
    Port Zadejte 8883.
    Ověřování Zvolte výchozí.
    Autorizace Zvolte Žádné.
    Protokol Zvolte MQTT.
    Protokol TLS Vyberte Přidat.
  6. V podokně konfigurace protokolu TLS zadejte následující nastavení:

    Nastavení Popis
    Režim TLS Zvolte Automaticky.
    Název vystavitele Zadejte azure-iot-operations-aio-certificate-issuer.
    Druh vystavitele Zvolte ClusterIssuer.

    U ostatních nastavení ponechte výchozí nastavení a vyberte Použít.

  7. Vyberte Vytvořit naslouchací proces.

    Snímek obrazovky znázorňující použití webu Azure Portal k vytvoření zprostředkovatele MQTT pro naslouchací proces nástroje pro vyrovnávání zatížení

Typ služby

Každý prostředek BrokerListener se mapuje na službu Kubernetes. Typ služby určuje, jak je zprostředkovatel vystaven v síti. Mezi podporované typy služeb patří:

  • ClusterIp: Zveřejňuje zprostředkovatele na interní IP adrese clusteru. Klienti se můžou ke zprostředkovateli připojit z clusteru. Tento výchozí typ služby je určený pro výchozí naslouchací proces.
  • NodePort: Zpřístupňuje zprostředkovatele na IP adrese každého uzlu na statickém portu. Klienti se můžou připojit ke zprostředkovateli mimo cluster. Tento typ služby je užitečný pro vývoj a testování.
  • LoadBalancer: Zpřístupňuje zprostředkovatele externě. Služba má přiřazenou externí IP adresu, kterou můžou klienti použít pro připojení ke zprostředkovateli. Tento typ služby je nejběžnější pro produkční nasazení.

Pouze jeden naslouchací proces na typ služby

Je povolen pouze jeden naslouchací proces na jeden typ služby. Pokud potřebujete více připojení stejného typu služby, přidejte do existujícího naslouchacího procesu tohoto typu služby další porty.

Service name

Název služby je název služby Kubernetes přidružené ke zprostředkovateli. Pokud není zadaný, název naslouchacího procesu zprostředkovatele se použije jako název služby. Název služby musí být jedinečný v rámci oboru názvů.

Tip

Pokud chcete zabránit režijním nákladům na správu, doporučujeme ponechat název služby prázdný. Název naslouchacího procesu je jedinečný a můžete ho použít k identifikaci služby. Název služby použijte jako přepsání pouze v případech, kdy nemůžete službu pojmenovat po naslouchacím procesu.

Porty

Každý naslouchací proces může mít více portů a každý port může mít vlastní nastavení pro ověřování, autorizaci, protokol a TLS.

Pokud chcete pro port použít vlastní nastavení ověřování nebo autorizace, musíte před použitím s naslouchacím procesem vytvořit odpovídající prostředky. Další informace najdete v tématu Konfigurace ověřování zprostředkovatele MQTT a konfigurace autorizace zprostředkovatele MQTT.

Pokud chcete použít protokol TLS, přečtěte si část Konfigurace protokolu TLS s automatickou správou certifikátů nebo konfigurace protokolu TLS s ručně prováděných oddíly správy certifikátů.

Použití stejného portu mezi naslouchacími procesy

Použití stejného čísla portu napříč různými naslouchacími procesy se nepodporuje. Každé číslo portu musí být jedinečné v rámci zprostředkovatele IoT Operations MQTT.

Pokud máte například naslouchací proces pomocí portu 1883, nemůžete vytvořit další naslouchací proces s portem 1883. Podobně výchozí naslouchací proces používá port 18883, takže nemůžete vytvořit další naslouchací proces s portem 18883.

Podpora pro WebSockets

Zprostředkovatel IoT Operations MQTT podporuje MQTT přes WebSockets. Pokud chcete povolit protokol WebSockets, nastavte pro WebSockets port protokol.

Konfigurace protokolu TLS s automatickou správou certifikátů

Pokud chcete povolit protokol TLS s automatickou správou certifikátů, zadejte nastavení protokolu TLS na portu naslouchacího procesu.

Ověření instalace nástroje cert-manager

Pomocí automatické správy certifikátů můžete ke správě certifikátu serveru TLS použít nástroj cert-manager. Ve výchozím nastavení je nástroj cert-manager nainstalovaný společně s operacemi IoT v cert-manager oboru názvů. Než budete pokračovat, ověřte instalaci.

  1. Pomocí kubectl zkontrolujte pody, které odpovídají popiskům aplikací nástroje cert-manager.

    kubectl get pods --namespace cert-manager -l 'app in (cert-manager,cainjector,webhook)'
    
    NAME                                           READY   STATUS    RESTARTS       AGE
    aio-cert-manager-64f9548744-5fwdd              1/1     Running   4 (145m ago)   4d20h
    aio-cert-manager-cainjector-6c7c546578-p6vgv   1/1     Running   4 (145m ago)   4d20h
    aio-cert-manager-webhook-7f676965dd-8xs28      1/1     Running   4 (145m ago)   4d20h
    
  2. Pokud se zobrazí pody, které jsou připravené a spuštěné, nainstaluje se cert-manager a je připravený k použití.

Tip

Pokud chcete instalaci dále ověřit, zkontrolujte v dokumentaci nástroje cert-manager a ověřte instalaci. Nezapomeňte použít cert-manager obor názvů.

Vytvoření vystavitele pro certifikát serveru TLS

Prostředek vystavitele cert-manageru definuje, jak se certifikáty vydávají automaticky. Cert-manager nativně podporuje několik typů vystavitelů. Podporuje také externí issuer typ pro rozšíření funkčnosti nad rámec nativně podporovaných vystavitelů. Zprostředkovatele MQTT můžete použít s jakýmkoli typem vystavitele cert-manageru.

Důležité

Během počátečního nasazení se operace IoT nainstalují s výchozím vystavitelem pro certifikáty serveru TLS. Tento vystavitel můžete použít pro vývoj a testování. Další informace najdete v tématu Výchozí kořenová certifikační autorita (CA) a vystavitel s využitím operací Azure IoT. Následující kroky se vyžadují jenom v případě, že chcete použít jiného vystavitele.

Přístup k vytvoření vystavitele se liší v závislosti na vašem scénáři. Následující části obsahují příklady, které vám pomůžou začít.

Vystavitel certifikační autority je užitečný pro vývoj a testování. Musí být nakonfigurovaný s certifikátem a privátním klíčem uloženým v tajném kódu Kubernetes.

Nastavení kořenového certifikátu jako tajného kódu Kubernetes

Pokud máte existující certifikát certifikační autority, vytvořte tajný klíč Kubernetes s certifikátem certifikační autority a soubory PEM privátního klíče certifikační autority. Spuštěním následujícího příkazu naimportujte certifikát certifikační autority jako tajný klíč Kubernetes a přeskočte další část.

kubectl create secret tls test-ca --cert tls.crt --key tls.key -n azure-iot-operations

Pokud certifikát certifikační autority nemáte, může certifikát certifikační autority vygenerovat správce certifikační autority za vás. Použití nástroje cert-manager k vygenerování certifikátu certifikační autority se označuje jako bootstrapping vystavitele certifikační autority s certifikátem podepsaným svým držitelem.

  1. Začněte vytvořením ca.yaml:

    apiVersion: cert-manager.io/v1
    kind: Issuer
    metadata:
      name: selfsigned-ca-issuer
      namespace: azure-iot-operations
    spec:
      selfSigned: {}
    ---
    apiVersion: cert-manager.io/v1
    kind: Certificate
    metadata:
      name: selfsigned-ca-cert
      namespace: azure-iot-operations
    spec:
      isCA: true
      commonName: test-ca
      secretName: test-ca
      issuerRef:
        # Must match Issuer name above
        name: selfsigned-ca-issuer
        # Must match Issuer kind above
        kind: Issuer
        group: cert-manager.io
      # Override default private key config to use an EC key
      privateKey:
        rotationPolicy: Always
        algorithm: ECDSA
        size: 256
    
  2. Vytvořte certifikát certifikační autority podepsaný svým držitelem pomocí následujícího příkazu:

    kubectl apply -f ca.yaml
    

Cert-manager vytvoří certifikát certifikační autority pomocí výchozích hodnot. Vlastnosti tohoto certifikátu můžete změnit úpravou specifikace certifikátu. Seznam platných možností najdete v dokumentaci k nástroji cert-manager.

Distribuce kořenového certifikátu

Předchozí příklad ukládá certifikát certifikační autority do tajného kódu Kubernetes s názvem test-ca. Certifikát můžete načíst ve formátu PEM z tajného kódu a uložit ho do souboru ca.crt pomocí následujícího příkazu:

kubectl get secret test-ca -n azure-iot-operations -o json | jq -r '.data["tls.crt"]' | base64 -d > ca.crt

Tento certifikát musí být distribuovaný a důvěryhodný všemi klienty. Například použijte --cafile příznak pro klienta Mosquitto.

Vytvoření vystavitele na základě certifikátu certifikační autority

Cert-manager potřebuje vystavitele na základě certifikátu certifikační autority vygenerovaného nebo importovaného v předchozím kroku. Vytvořte následující soubor takto issuer-ca.yaml:

apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
  name: my-issuer
  namespace: azure-iot-operations
spec:
  ca:
    # Must match secretName of generated or imported CA cert
    secretName: test-ca

Vytvořte vystavitele pomocí následujícího příkazu:

kubectl apply -f issuer-ca.yaml

Předchozí příkaz vytvoří vystavitele pro vystavování certifikátů serveru TLS. Poznamenejte si název a druh vystavitele. V příkladu je my-issuer název a druh je Issuer. Tyto hodnoty se později nastaví v prostředku BrokerListener.

Povolení automatické správy certifikátů TLS pro port

Následující příklad je prostředek BrokerListener, který umožňuje protokol TLS na portu 8884 s automatickou správou certifikátů.

  1. Na webu Azure Portal přejděte do vaší instance ioT Operations.

  2. V části Součásti vyberte Zprostředkovatele MQTT.

  3. Vyberte nebo vytvořte naslouchací proces. Pro každý typ služby můžete vytvořit pouze jeden naslouchací proces. Pokud už máte naslouchací proces stejného typu služby, můžete do existujícího naslouchacího procesu přidat další porty.

  4. Nastavení protokolu TLS můžete do naslouchacího procesu přidat výběrem protokolu TLS na existujícím portu nebo přidáním nového portu.

    Snímek obrazovky znázorňující použití webu Azure Portal k vytvoření zprostředkovatele MQTT pro naslouchací proces nástroje pro vyrovnávání zatížení s automatickými certifikáty TLS

    Zadejte následující nastavení:

    Nastavení Description
    Name Název prostředku BrokerListener. Zadejte aio-broker-loadbalancer-tls.
    Port Číslo portu, na kterém BrokerListener naslouchá připojení MQTT. Zadejte 8884.
    Ověřování Referenční informace k prostředkům ověřování.
    Autorizace Referenční informace k prostředkům autorizace.
    Protokol TLS Vyberte tlačítko Přidat.
    Název vystavitele Název vystavitele cert-manageru Povinný:
    Druh vystavitele Druh vystavitele cert-manageru Povinný:
    Skupina vystavitelů Skupina vystavitele cert-manageru Povinný:
    Algoritmus privátního klíče Algoritmus pro privátní klíč
    Zásady obměně privátních klíčů Zásady pro obměně privátního klíče
    Názvy DNS Alternativní názvy subjektu DNS pro certifikát
    Adresy IP IP adresy alternativních názvů subjektu pro certifikát.
    Název tajného klíče Tajný klíč Kubernetes obsahující klientský certifikát X.509
    Doba trvání Celková životnost certifikátu serveru TLS je ve výchozím nastavení 90 dnů.
    Prodloužit před Kdy začít obnovovat certifikát.
  5. Výběrem možnosti Použít uložíte nastavení protokolu TLS.

Po nakonfigurování prostředku BrokerListener zprostředkovatel MQTT automaticky vytvoří novou službu se zadaným portem a povoleným protokolem TLS.

Volitelné: Konfigurace parametrů certifikátu serveru

Jedinými požadovanými parametry jsou Issuer název a Issuer druh. Všechny ostatní vlastnosti vygenerovaných certifikátů serveru TLS se vyberou automaticky. Zprostředkovatel MQTT však umožňuje přizpůsobení určitých vlastností podle stejné syntaxe jako certifikáty cert-manageru. Můžete například zadat algoritmus privátního klíče a zásady obměně. Tato nastavení jsou v tls.certManagerCertificateSpec podokně konfigurace protokolu TLS na webu Azure Portal nebo v podokně konfigurace protokolu TLS.

Úplný seznam těchto nastavení naleznete v tématu Zprostředkovatel listener CertManagerCertificateSpec ROZHRANÍ API.

Ověření nasazení

Pomocí kubectl zkontrolujte, jestli je spuštěná služba přidružená k prostředku BrokerListener. V předchozím příkladu je aio-broker-loadbalancer-tls název služby a obor názvů je azure-iot-operations. Následující příkaz zkontroluje stav služby:

$ kubectl get service my-new-tls-listener -n azure-iot-operations
NAME                           TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
aio-broker-loadbalancer-tls    LoadBalancer   10.X.X.X        172.X.X.X     8884:32457/TCP   33s

Připojení ke zprostředkovateli pomocí protokolu TLS

Po nakonfigurování certifikátu serveru je povolený protokol TLS. Testování pomocí Mosquitto:

mosquitto_pub -h $HOST -p 8884 -V mqttv5 -i "test" -t "test" -m "test" --cafile ca.crt

Argument --cafile umožňuje protokol TLS na klientovi Mosquitto a určuje, že klient by měl důvěřovat všem certifikátům serveru vydaným konkrétním souborem. Musíte zadat soubor, který obsahuje vystavitele nakonfigurovaného certifikátu serveru TLS.

Nahraďte $HOST příslušným hostitelem:

  • Pokud se připojujete ze stejného clusteru, nahraďte názvem služby (my-new-tls-listener v příkladu) nebo službou CLUSTER-IP.
  • Pokud se připojujete mimo cluster, použijte službu EXTERNAL-IP.

Nezapomeňte v případě potřeby zadat metody ověřování.

Výchozí kořenová certifikační autorita a vystavitel

Aby vám to pomohlo začít, nasadí se operace IoT s výchozím certifikátem certifikační autority pro rychlý start a vystavitelem pro certifikáty serveru TLS. Tento vystavitel můžete použít pro vývoj a testování. Další informace najdete v tématu Výchozí kořenová certifikační autorita a vystavitel pro certifikáty serveru TLS.

V produkčním prostředí musíte nakonfigurovat vystavitele certifikační autority s certifikátem od důvěryhodné certifikační autority, jak je popsáno v předchozích částech.

Konfigurace protokolu TLS s ruční správou certifikátů

Pokud chcete ručně nakonfigurovat zprostředkovatele MQTT tak, aby používal konkrétní certifikát TLS, zadejte ho v prostředku BrokerListener s odkazem na tajný klíč Kubernetes a nasaďte ho pomocí kubectl. Tento článek ukazuje příklad, který konfiguruje protokol TLS s certifikáty podepsanými svým držitelem pro testování.

Vytvoření certifikační autority pomocí rozhraní příkazového řádku kroku

Krok je správce certifikátů, který vás rychle zprovozní při vytváření a správě vlastní privátní certifikační autority.

  1. Nainstalujte krok cli a vytvořte kořenový certifikát a klíč certifikační autority.

    step certificate create --profile root-ca "Example Root CA" root_ca.crt root_ca.key
    
  2. Vytvořte certifikát a klíč zprostředkující certifikační autority podepsaný kořenovou certifikační autoritou.

    step certificate create --profile intermediate-ca "Example Intermediate CA" intermediate_ca.crt intermediate_ca.key \
    --ca root_ca.crt --ca-key root_ca.key
    

Vytvoření certifikátu serveru

Pomocí rozhraní příkazového řádku kroku vytvořte certifikát serveru z certifikátu a klíče zprostředkující certifikační autority.

step certificate create mqtts-endpoint mqtts-endpoint.crt mqtts-endpoint.key \
--profile leaf \
--not-after 8760h \
--san mqtts-endpoint \
--san localhost \
--ca intermediate_ca.crt --ca-key intermediate_ca.key \
--no-password --insecure

mqtts-endpoint Tady jsou localhost alternativní názvy subjektu (SANs) pro front-end zprostředkovatele MQTT v Kubernetes a místních klientech. Pokud se chcete připojit přes internet, přidejte --san externí IP adresu. Příznaky --no-password --insecure se používají k testování, aby se přeskočí výzvy k zadání hesla a zakázala ochranu heslem pro privátní klíč, protože je uložená v tajném kódu Kubernetes. V produkčním prostředí použijte heslo a privátní klíč uložte do zabezpečeného umístění, jako je Azure Key Vault.

Požadavky na algoritmus klíče certifikátu

Podporují se klíče EC i RSA, ale všechny certifikáty v řetězu musí používat stejný algoritmus klíče. Pokud importujete vlastní certifikáty certifikační autority, ujistěte se, že certifikát serveru používá stejný algoritmus klíče jako certifikační autority.

Import řetězu certifikátů serveru jako tajného kódu Kubernetes

  1. Vytvořte úplný řetěz certifikátů serveru, ve kterém záleží na pořadí certifikátů. Certifikát serveru je první certifikát v souboru a zprostředkující je druhý.

    cat  mqtts-endpoint.crt intermediate_ca.crt  > server_chain.crt
    
  2. Vytvořte tajný klíč Kubernetes s řetězem certifikátů serveru a klíčem serveru pomocí kubectl.

    kubectl create secret tls server-cert-secret -n azure-iot-operations \
    --cert server_chain.crt \
    --key mqtts-endpoint.key
    

Povolení ruční správy certifikátů TLS pro port

Následující příklad ukazuje prostředek BrokerListener, který umožňuje tls na portu 8884 s ruční správou certifikátů.

  1. Na webu Azure Portal přejděte do vaší instance ioT Operations.

  2. V části Součásti vyberte Zprostředkovatele MQTT.

  3. Vyberte nebo vytvořte naslouchací proces. Pro každý typ služby můžete vytvořit pouze jeden naslouchací proces. Pokud už máte naslouchací proces stejného typu služby, můžete do existujícího naslouchacího procesu přidat další porty. Pokud chcete postupovat podle příkladu, zadejte název služby naslouchacího procesu jako mqtts-endpoint.

  4. Nastavení protokolu TLS můžete do naslouchacího procesu přidat výběrem protokolu TLS na existujícím portu nebo přidáním nového portu.

    Snímek obrazovky znázorňující použití webu Azure Portal k vytvoření zprostředkovatele MQTT pro naslouchací proces nástroje pro vyrovnávání zatížení s ručními certifikáty TLS

    Zadejte následující nastavení:

    Nastavení Popis
    Port Číslo portu, na kterém BrokerListener naslouchá připojení MQTT. Povinný:
    Ověřování Referenční informace k prostředkům ověřování.
    Autorizace Referenční informace k prostředkům autorizace.
    Protokol TLS Vyberte tlačítko Přidat.
    Název tajného klíče Tajný klíč Kubernetes obsahující klientský certifikát X.509
  5. Výběrem možnosti Použít uložíte nastavení protokolu TLS.

Připojení ke zprostředkovateli pomocí protokolu TLS

Pokud chcete otestovat připojení TLS s klientem Mosquitto, publikujte zprávu a předejte kořenový certifikát certifikační autority v parametru --cafile.

mosquitto_pub -d -h localhost -p 8885 -i "my-client" -t "test-topic" -m "Hello" --cafile root_ca.crt

Nezapomeňte zadat položky, jako je uživatelské jméno a heslo, pokud je povolené ověřování zprostředkovatele MQTT.

Client my-client sending CONNECT
Client my-client received CONNACK (0)
Client my-client sending PUBLISH (d0, q0, r0, m1, 'test-topic', ... (5 bytes))
Client my-client sending DISCONNECT

Tip

Pokud chcete použít localhost, musí být port dostupný na hostitelském počítači. Příklad: kubectl port-forward svc/mqtts-endpoint 8885:8885 -n azure-iot-operations. S některými distribucemi Kubernetes, jako je K3d, můžete přidat přesměrovaný port s k3d cluster edit $CLUSTER_NAME --port-add 8885:8885@loadbalancer.

Pokud se chcete připojit ke zprostředkovateli, musíte distribuovat kořen důvěryhodnosti, označovaný také jako sada důvěryhodnosti, všem klientům. V tomto případě je kořenem důvěryhodnosti kořenová certifikační autorita podepsaná svým držitelem vytvořená v rozhraní příkazového řádku kroku. Aby klient ověřil řetěz certifikátů serveru, vyžaduje se distribuce kořenového adresáře důvěryhodnosti. Pokud jsou klienti MQTT úlohami v clusteru Kubernetes, musíte také vytvořit objekt ConfigMap s kořenovou certifikační autoritou a připojit ho do podu.

Použití externí IP adresy pro certifikát serveru

Pokud se chcete připojit pomocí protokolu TLS přes internet, musí mít certifikát serveru zprostředkovatele MQTT svůj externí název hostitele nebo IP adresu jako síť SAN. V produkčním prostředí jsou tyto informace obvykle názvem DNS nebo dobře známou IP adresou. Během vývoje/testování možná nevíte, jaký název hostitele nebo externí IP adresa se přiřadí před nasazením. Pokud chcete tento problém vyřešit, nasaďte nejprve naslouchací proces bez certifikátu serveru, vytvořte certifikát serveru a tajný klíč s externí IP adresou a naimportujte tajný kód do naslouchacího procesu.

Pokud se pokusíte nasadit ukázkový naslouchací proces manual-tls-listener TLS, ale odkazovaný tajný klíč server-cert-secret Kubernetes neexistuje, vytvoří se přidružená služba, ale pody se nespustí. Služba se vytvoří, protože operátor musí rezervovat externí IP adresu pro naslouchací proces.

kubectl get svc mqtts-endpoint -n azure-iot-operations
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
mqtts-endpoint         LoadBalancer   10.X.X.X        172.X.X.X     8885:30674/TCP      1m15s

Toto chování se očekává při importu certifikátu serveru. V protokolech správce stavu se uvádí, že zprostředkovatel MQTT čeká na certifikát serveru.

kubectl logs -l app=health-manager -n azure-iot-operations
...
<6>2023-11-06T21:36:13.634Z [INFO] [1] - Server certificate server-cert-secret not found. Awaiting creation of secret.

Poznámka:

Obecně platí, že v distribuovaném systému nejsou protokoly podů deterministické a měly by se používat s opatrností. Správný způsob, jak se dostat k informacím, je prostřednictvím událostí Kubernetes a stavu vlastních prostředků, které jsou v backlogu. Představte si předchozí krok jako dočasné alternativní řešení.

I když front-endové pody nejsou vzhůru, externí IP adresa je už dostupná.

kubectl get svc mqtts-endpoint -n azure-iot-operations
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
mqtts-endpoint         LoadBalancer   10.X.X.X        172.X.X.X     8885:30674/TCP      1m15s

Odsud postupujte podle stejných kroků jako dříve, abyste vytvořili certifikát serveru s touto externí IP adresou --san a stejným způsobem vytvořili tajný klíč Kubernetes. Po vytvoření tajného kódu se automaticky naimportuje do naslouchacího procesu.