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
- Vaatimukset ja tärkeät rajaukset
- Tarkista nykyinen TLS-tila
- Valitse builtin-tarkistus
- Valitse none tilapäiseen diagnostiikkaan
- Lataa ja valitse oma CA
- Poista oma CA
- Käytä IAMMETER Swagger UI:ta
- Varmennetarkistuksen vianmääritys
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
- Avaa WEM API Test tietokoneella, joka pääsee laitteen paikalliseen IP-osoitteeseen.
- Anna laiteosoite, esimerkiksi
192.168.1.80, ja valitse Apply. - Valitse Authorize ja anna järjestelmänvalvojan käyttäjänimi ja salasana.
- Avaa ryhmä TLS CA - Authenticated.
- Tarkista nykyiset asetukset komennolla
GET /api/tls/ca/status. - Käytä latausta, valintaa tai poistoa tarpeen mukaan.
- 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.