Ne pare rău, browserul dvs. nu acceptă JavaScript!
Autentificare

Cum configurezi verificarea certificatelor MQTTS și HTTPS pe un contor IAMMETER

Contoarele IAMMETER cu firmware i.91.065.9 sau ulterior pot verifica certificatul serverului când încarcă date prin MQTTS ori HTTPS. Aceasta adaugă verificarea lanțului de certificate și a numelui gazdei pentru conexiunile securizate de ieșire.

Articolul se concentrează pe configurarea încrederii TLS. Nu configurează topicuri MQTT, payload-uri JSON sau descoperirea Home Assistant. Pentru publicarea MQTT, vezi Contor MQTT: publică date IAMMETER către brokerul tău MQTT.

Pe această pagină

Alege un mod de verificare a certificatelor

Clienții MQTTS și HTTPS IAMMETER acceptă trei moduri de verificare a certificatului serverului:

Mod Lanț de certificate Numele gazdei serverului Utilizare
builtin Verificat cu CA rădăcină incluse în firmware Verificat Recomandat pentru servicii publice cu un lanț acceptat
custom Verificat cu o CA rădăcină PEM furnizată de utilizator Verificat PKI privată, certificate autosemnate sau rădăcini publice neincluse
none Neverificat Neverificat Numai compatibilitate temporară sau diagnosticare

Setările se aplică atunci când dispozitivul IAMMETER este client TLS și încarcă date către un broker MQTTS sau server HTTPS. Ele nu activează HTTPS pe serverul Web local al dispozitivului.

builtin

builtin este modul implicit. Este folosit dacă nu s-a salvat anterior o setare de verificare TLS și este restabilit după ștergerea configurației TLS CA sau resetarea dispozitivului la valorile din fabrică.

Firmware-ul conține aceste CA rădăcină:

  • DigiCert Global Root G2
  • ISRG Root X1

Dispozitivul verifică atât lanțul de certificate, cât și numele gazdei. Brokerul MQTTS sau serverul HTTPS trebuie să prezinte un certificat al cărui lanț ajunge la una dintre aceste rădăcini, iar Subject Alternative Name (SAN) trebuie să corespundă adresei serverului configurate.

Dacă adresa de încărcare este un IP, certificatul trebuie să conțină exact acel IP în SAN. Un nume DNS nu corespunde unei adrese IP, chiar dacă ambele indică același server.

custom

custom verifică lanțul și numele gazdei la fel ca builtin, dar acordă încredere certificatului CA PEM încărcat de administrator. Folosește-l când:

  • certificatul serverului este emis de o CA privată;
  • implementarea folosește un certificat de server autosemnat; sau
  • CA rădăcină publică necesară nu este inclusă în firmware.

Pentru o PKI privată, încarcă certificatul CA rădăcină. Serverul TLS trebuie totuși să trimită certificatele intermediare necesare în timpul negocierii. Un certificat de server autosemnat poate fi încărcat ca ancoră de încredere, dar SAN trebuie în continuare să corespundă numelui gazdei sau IP-ului configurat.

none

none stabilește în continuare o conexiune TLS criptată, dar nu verifică lanțul de certificate sau numele gazdei. Este similar comportamentului TLS vechi, fără autentificarea serverului.

Acest mod este vulnerabil la atacuri de tip man-in-the-middle. Folosește-l doar temporar pentru compatibilitate sau diagnosticare. În producție, preferă builtin sau custom.

Cerințe și limite importante

API-urile de configurare TLS CA necesită activarea Local Admin Security. Fiecare cerere trebuie să includă numele de utilizator și parola administratorului configurat prin HTTP Basic Authentication.

Computerul care rulează curl sau Swagger UI trebuie să poată accesa IP-ul local al dispozitivului. Clienții MQTTS și HTTPS folosesc în comun un mod de verificare și o CA personalizată, deci schimbarea se aplică modului securizat de încărcare folosit de dispozitiv.

Repornește dispozitivul după modificarea configurației TLS, astfel încât clientul de ieșire să fie recreat cu noile setări.

Exemplele folosesc aceste valori substituibile:

DEVICE_IP="192.168.1.80"
ADMIN_USER="admin"
ADMIN_PASSWORD="ExamplePassword1"

Înlocuiește-le cu adresa reală a dispozitivului și credențialele administratorului.

Verifică modul TLS curent

API:

GET /api/tls/ca/status

Exemplu:

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  "http://$DEVICE_IP/api/tls/ca/status"

Exemplu de răspuns:

{
  "successful": 1,
  "mode": "builtin",
  "customCaValid": 0,
  "customCaLength": 0,
  "customCaSha256": "",
  "restartRequiredAfterChange": 1
}

Răspunsul raportează modul selectat și, dacă există, lungimea și rezumatul SHA-256 al CA personalizate stocate.

Selectează verificarea builtin

API:

POST /api/tls/ca/select

Exemplu:

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  -X POST "http://$DEVICE_IP/api/tls/ca/select" \
  -H "Content-Type: application/json" \
  -d '{"mode":"builtin"}'

Repornește dispozitivul după un răspuns reușit.

Selectează none pentru diagnosticare temporară

API:

POST /api/tls/ca/select

Exemplu:

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  -X POST "http://$DEVICE_IP/api/tls/ca/select" \
  -H "Content-Type: application/json" \
  -d '{"mode":"none"}'

Răspunsul avertizează că verificarea certificatului serverului este dezactivată. Repornește dispozitivul după schimbarea modului și revino la builtin sau custom după diagnosticare.

Încarcă și selectează o CA personalizată

Încărcarea unei CA și selectarea custom sunt operații separate. Încărcarea nu schimbă automat modul activ.

Cerințe pentru fișierul CA personalizat

Fișierul încărcat trebuie să îndeplinească toate aceste cerințe:

  • format certificat PEM;
  • corp brut al cererii, nu JSON și nu multipart/form-data;
  • Content-Type: application/x-pem-file;
  • lungime între 1 și 3072 octeți, inclusiv antete PEM, sfârșituri de linie și spații;
  • conține -----BEGIN CERTIFICATE----- și -----END CERTIFICATE-----;
  • nu conține o cheie privată.

Limita de 3072 octeți se aplică întregului corp HTTP. Un PEM de 3072 octeți este acceptat; unul de 3073 octeți este respins.

Verifică dimensiunea fișierului înainte de încărcare:

wc -c root-ca.pem

Pasul 1: Încarcă CA

API:

POST /api/tls/ca/upload

Exemplu:

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  -X POST "http://$DEVICE_IP/api/tls/ca/upload" \
  -H "Content-Type: application/x-pem-file" \
  --data-binary @root-ca.pem

Exemplu de răspuns reușit:

{
  "successful": 1,
  "length": 1939,
  "sha256": "64-character SHA-256 digest",
  "message": "CA uploaded; select custom mode and restart"
}

Dispozitivul stochează CA în mai multe blocuri KV și verifică lungimea salvată și rezumatul SHA-256 înainte de a o marca activă. O scriere întreruptă nu înlocuiește CA validă anterioară.

Pasul 2: Selectează custom

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  -X POST "http://$DEVICE_IP/api/tls/ca/select" \
  -H "Content-Type: application/json" \
  -d '{"mode":"custom"}'

Dispozitivul respinge cererea dacă nu este stocată o CA personalizată validă. Nu revine în tăcere la none.

Pasul 3: Repornește și verifică

Repornește dispozitivul din interfața Web locală sau folosește API-ul protejat de repornire:

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  "http://$DEVICE_IP/api/restart?reset=false"

După reconectare, interoghează din nou starea:

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  "http://$DEVICE_IP/api/tls/ca/status"

Confirmă că mode este custom, customCaValid este 1, iar lungimea și rezumatul SHA-256 raportate corespund certificatului încărcat.

Șterge CA personalizată

API:

POST /api/tls/ca/delete

Exemplu:

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  -X POST "http://$DEVICE_IP/api/tls/ca/delete"

Ștergerea CA personalizate restabilește și modul builtin. Repornește dispozitivul după ștergere.

Folosește IAMMETER Swagger UI

Aceleași API-uri pot fi testate fără scrierea manuală a comenzilor curl:

IAMMETER WEM API Test - TLS CA

  1. Deschide WEM API Test pe un computer care poate accesa IP-ul local al dispozitivului.
  2. Introdu adresa dispozitivului, de exemplu 192.168.1.80, și selectează Apply.
  3. Selectează Authorize și introdu numele de utilizator și parola administratorului.
  4. Deschide grupul TLS CA - Authenticated.
  5. Folosește GET /api/tls/ca/status pentru configurația curentă.
  6. Folosește încărcarea, selectarea sau ștergerea, după nevoie.
  7. Repornește dispozitivul după schimbarea modului sau certificatului.

Pagina Swagger rulează în browser și trimite cereri direct de la acel computer către dispozitivul IAMMETER. Nu le intermediază prin IAMMETER Cloud, deci browserul trebuie să aibă conectivitate directă la IP-ul dispozitivului.

Depanează verificarea certificatelor

admin security required

Activează Local Admin Security înainte de a folosi API-urile TLS CA. Aceste setări nu pot fi modificate anonim.

custom CA is missing or invalid

Încarcă cu succes o CA PEM validă înainte de a selecta custom. Interoghează /api/tls/ca/status și confirmă că customCaValid este 1.

Conexiunea TLS eșuează în builtin sau custom

Verifică toate aspectele următoare:

  • numele gazdei sau IP-ul configurat corespunde SAN;
  • certificatul este valabil în prezent și ora dispozitivului este corectă;
  • serverul trimite certificatele intermediare necesare;
  • CA rădăcină selectată a emis sau acordă încredere, prin lanț, certificatului serverului;
  • dispozitivul a fost repornit după schimbarea configurației TLS.

TLS funcționează în none, dar eșuează în modurile cu verificare

Aceasta indică de obicei o problemă de lanț de certificate, nume de gazdă, perioadă de valabilitate sau ceas al dispozitivului. Menținerea none ascunde eșecul autentificării, dar nu îl rezolvă. Corectează implementarea certificatului sau încarcă CA rădăcină potrivită și folosește custom.

Sus