Valitettavasti selaimesi ei tue JavaScriptiä!
Kirjaudu sisään

MQTTS- ja HTTPS-varmenteiden tarkistuksen määrittäminen IAMMETER-energiamittarissa

IAMMETER-energiamittarit, joiden laiteohjelmisto on i.91.065.9 tai uudempi, voivat tarkistaa palvelimen varmenteen lähettäessään tietoja MQTTS:n tai HTTPS:n kautta. Se lisää varmenneketjun ja palvelinnimen tarkistuksen suojattuihin lähteviin yhteyksiin.

Artikkeli käsittelee TLS-luottamusasetuksia. Se ei määritä MQTT-aiheita, JSON-payloadeja tai Home Assistantin automaattista löytämistä. MQTT-julkaisun ohje on MQTT-energiamittari: julkaise IAMMETER-tiedot omaan MQTT-välittäjään.

Tällä sivulla

Valitse varmenteen tarkistustila

IAMMETERin MQTTS- ja HTTPS-asiakkaat tukevat kolmea palvelinvarmenteen tarkistustilaa:

Tila Varmenneketju Palvelinnimi Käyttötarkoitus
builtin Tarkistetaan laiteohjelmiston juuri-CA:illa Tarkistetaan Suositus julkisille palveluille, joiden ketjua tuetaan
custom Tarkistetaan käyttäjän PEM-juuri-CA:lla Tarkistetaan Yksityinen PKI, itse allekirjoitetut varmenteet tai puuttuvat julkiset juuret
none Ei tarkisteta Ei tarkisteta Vain tilapäinen yhteensopivuus tai diagnostiikka

Asetukset koskevat IAMMETER-laitetta sen toimiessa TLS-asiakkaana ja lähettäessä tietoja MQTTS-välittäjälle tai HTTPS-palvelimelle. Ne eivät ota HTTPS:ää käyttöön laitteen paikallisessa verkkopalvelimessa.

builtin

builtin on oletustila. Sitä käytetään, kun TLS-tarkistusasetusta ei ole aiemmin tallennettu. Se palautuu TLS CA -asetusten poistamisen tai tehdasasetusten palautuksen jälkeen.

Laiteohjelmisto sisältää nämä juuri-CA:t:

  • DigiCert Global Root G2
  • ISRG Root X1

Laite tarkistaa sekä varmenneketjun että palvelinnimen. MQTTS-välittäjän tai HTTPS-palvelimen on esitettävä varmenne, jonka ketju päättyy yhteen näistä juurista. Sen Subject Alternative Name (SAN) -arvon on vastattava määritettyä palvelinosoitetta.

Jos lähetysosoite on IP-osoite, varmenteen SAN-kentässä on oltava täsmälleen kyseinen IP. DNS-nimi ei vastaa IP-osoitetta, vaikka molemmat osoittaisivat samaan palvelimeen.

custom

custom tarkistaa ketjun ja palvelinnimen kuten builtin, mutta luottaa järjestelmänvalvojan lataamaan PEM CA -varmenteeseen. Käytä sitä, kun:

  • palvelinvarmenteen on myöntänyt yksityinen CA;
  • käytössä on itse allekirjoitettu palvelinvarmenne; tai
  • tarvittava julkinen juuri-CA puuttuu laiteohjelmistosta.

Yksityisessä PKI:ssä lataa sen juuri-CA-varmenne. TLS-palvelimen on edelleen lähetettävä tarvittavat välivarmenteet kättelyn aikana. Itse allekirjoitetun palvelinvarmenteen voi ladata luottamusankkuriksi, mutta sen SAN-arvon on silti vastattava määritettyä palvelinnimeä tai IP-osoitetta.

none

none muodostaa yhä salatun TLS-yhteyden, mutta ei tarkista varmenneketjua tai palvelinnimeä. Se vastaa vanhaa TLS-toimintaa ilman palvelimen todennusta.

Tämä tila on altis väliintulohyökkäyksille. Käytä sitä vain tilapäisesti yhteensopivuuteen tai diagnostiikkaan. Suosi tuotannossa tilaa builtin tai custom.

Vaatimukset ja tärkeät rajaukset

TLS CA -asetusrajapinnat edellyttävät Local Admin Securityn käyttöönottoa. Jokaisessa pyynnössä on oltava määritetty järjestelmänvalvojan käyttäjänimi ja salasana HTTP Basic Authentication -todennuksella.

Tietokoneen, jossa curl tai Swagger UI toimii, on päästävä laitteen paikalliseen IP-osoitteeseen. MQTTS- ja HTTPS-asiakkaat jakavat yhden tarkistustilan ja yhden oman CA:n, joten muutos koskee laitteen käyttämää suojattua lähetysmuotoa.

Käynnistä laite uudelleen TLS-asetusten muuttamisen jälkeen, jotta lähtevä asiakas luodaan uusilla asetuksilla.

Esimerkeissä käytetään näitä paikkamerkkejä:

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

Korvaa ne todellisella laiteosoitteella ja järjestelmänvalvojan tunnuksilla.

Tarkista nykyinen TLS-tila

API:

GET /api/tls/ca/status

Esimerkki:

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

Esimerkkivastaus:

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

Vastaus kertoo valitun tilan sekä mahdollisen tallennetun oman CA:n pituuden ja SHA-256-tiivisteen.

Valitse builtin-tarkistus

API:

POST /api/tls/ca/select

Esimerkki:

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

Käynnistä laite uudelleen onnistuneen vastauksen jälkeen.

Valitse none tilapäiseen diagnostiikkaan

API:

POST /api/tls/ca/select

Esimerkki:

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

Vastaus varoittaa, että palvelinvarmenteen tarkistus on poistettu käytöstä. Käynnistä laite uudelleen tilan vaihtamisen jälkeen ja palaa diagnostiikan lopuksi tilaan builtin tai custom.

Lataa ja valitse oma CA

CA:n lataaminen ja tilan custom valinta ovat erillisiä toimintoja. Lataaminen ei vaihda aktiivista tilaa automaattisesti.

Oman CA-tiedoston vaatimukset

Ladattavan tiedoston on täytettävä kaikki seuraavat vaatimukset:

  • PEM-varmennemuoto;
  • raaka pyynnön runko, ei JSON eikä multipart/form-data;
  • Content-Type: application/x-pem-file;
  • pituus 1–3072 tavua, mukaan lukien PEM-otsakkeet, rivinvaihdot ja välilyönnit;
  • sisältää -----BEGIN CERTIFICATE----- ja -----END CERTIFICATE-----;
  • ei sisällä yksityistä avainta.

3072 tavun raja koskee koko HTTP-pyynnön runkoa. 3072 tavun PEM hyväksytään; 3073 tavun tiedosto hylätään.

Tarkista tiedoston koko ennen lataamista:

wc -c root-ca.pem

Vaihe 1: Lataa CA

API:

POST /api/tls/ca/upload

Esimerkki:

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

Esimerkki onnistuneesta vastauksesta:

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

Laite tallentaa CA:n useisiin KV-lohkoihin ja tarkistaa tallennetun pituuden sekä SHA-256-tiivisteen ennen sen merkitsemistä aktiiviseksi. Keskeytynyt kirjoitus ei korvaa edellistä kelvollista CA:ta.

Vaihe 2: Valitse custom

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

Laite hylkää pyynnön, jos kelvollista omaa CA:ta ei ole tallennettu. Se ei vaihda hiljaisesti tilaan none.

Vaihe 3: Käynnistä uudelleen ja tarkista

Käynnistä laite uudelleen paikallisesta verkkokäyttöliittymästä tai suojatulla uudelleenkäynnistysrajapinnalla:

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

Kun laite muodostaa yhteyden uudelleen, kysy tilaa uudestaan:

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

Varmista, että mode on custom, customCaValid on 1 ja ilmoitettu pituus sekä SHA-256-tiiviste vastaavat ladattua varmennetta.

Poista oma CA

API:

POST /api/tls/ca/delete

Esimerkki:

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

Oman CA:n poistaminen palauttaa myös tilan builtin. Käynnistä laite uudelleen poistamisen jälkeen.

Käytä IAMMETER Swagger UI:ta

Samoja rajapintoja voi testata kirjoittamatta curl-komentoja käsin:

IAMMETER WEM API Test - TLS CA

  1. Avaa WEM API Test tietokoneella, joka pääsee laitteen paikalliseen IP-osoitteeseen.
  2. Anna laiteosoite, esimerkiksi 192.168.1.80, ja valitse Apply.
  3. Valitse Authorize ja anna järjestelmänvalvojan käyttäjänimi ja salasana.
  4. Avaa ryhmä TLS CA - Authenticated.
  5. Tarkista nykyiset asetukset komennolla GET /api/tls/ca/status.
  6. Käytä latausta, valintaa tai poistoa tarpeen mukaan.
  7. Käynnistä laite uudelleen tilan tai varmenteen muutoksen jälkeen.

Swagger-sivu toimii selaimessa ja lähettää pyynnöt suoraan tietokoneelta IAMMETER-laitteelle. Se ei välitä niitä IAMMETER Cloudin kautta, joten selaimella on oltava suora verkkoyhteys laitteen IP-osoitteeseen.

Varmennetarkistuksen vianmääritys

admin security required

Ota Local Admin Security käyttöön ennen TLS CA -rajapintoja. Asetuksia ei voi muuttaa nimettömänä.

custom CA is missing or invalid

Lataa kelvollinen PEM CA onnistuneesti ennen tilan custom valintaa. Kysy /api/tls/ca/status ja varmista, että customCaValid on 1.

TLS-yhteys epäonnistuu tilassa builtin tai custom

Tarkista kaikki seuraavat:

  • määritetty palvelinnimi tai IP vastaa varmenteen SAN-arvoa;
  • varmenne on voimassa ja laitteen aika on oikein;
  • palvelin lähettää tarvittavat välivarmenteet;
  • valittu juuri-CA on myöntänyt palvelinvarmenteen tai luottaa siihen ketjun kautta;
  • laite käynnistettiin uudelleen TLS-asetusten muutoksen jälkeen.

TLS toimii tilassa none, mutta ei tarkistavissa tiloissa

Tämä viittaa yleensä varmenneketjun, palvelinnimen, voimassaoloajan tai laitteen kellon ongelmaan. Tilan none pitäminen päällä peittää todennusvirheen, mutta ei korjaa sitä. Korjaa varmenteiden käyttöönotto tai lataa oikea juuri-CA ja käytä tilaa custom.

Ylös