Съжаляваме, вашият браузър не поддържа JavaScript!
Вход

Как да настроите проверката на MQTTS и HTTPS сертификати в електромер IAMMETER

Електромерите IAMMETER с фърмуер i.91.065.9 и по-нов могат да проверяват сертификата на сървъра при качване на данни чрез MQTTS или HTTPS. Това добавя проверка на веригата от сертификати и името на сървъра към защитените изходящи връзки.

Статията разглежда настройката на доверие за TLS. Тя не настройва MQTT теми, JSON payload или откриване в Home Assistant. За MQTT публикуване вижте MQTT електромер: публикувайте данни IAMMETER към своя MQTT брокер.

На тази страница

Изберете режим за проверка на сертификати

MQTTS и HTTPS клиентите на IAMMETER поддържат три режима за проверка на сертификата на сървъра:

Режим Верига от сертификати Име на сървъра Предназначение
builtin Проверява се с Root CA във фърмуера Проверява се Препоръчан за публични услуги с поддържана верига
custom Проверява се с PEM Root CA от потребителя Проверява се Частна PKI, самоподписани сертификати или невключени публични корени
none Не се проверява Не се проверява Само временна съвместимост или диагностика

Настройките важат, когато устройството IAMMETER е TLS клиент и качва данни към MQTTS брокер или HTTPS сървър. Те не включват HTTPS на локалния уеб сървър на устройството.

builtin

builtin е режимът по подразбиране. Използва се, когато не е запазена настройка за TLS проверка, и се възстановява след изтриване на TLS CA конфигурацията или фабрично нулиране.

Фърмуерът съдържа следните Root CA:

  • DigiCert Global Root G2
  • ISRG Root X1

Устройството проверява веригата от сертификати и името на сървъра. MQTTS брокерът или HTTPS сървърът трябва да представи сертификат с верига до един от тези корени, а Subject Alternative Name (SAN) трябва да съответства на настроения адрес на сървъра.

Ако адресът за качване използва IP, SAN на сертификата трябва да съдържа точно този IP адрес. DNS име не съответства на IP адрес, дори и двата да сочат към един сървър.

custom

custom проверява веригата и името като builtin, но се доверява на PEM CA сертификата, качен от администратора. Използвайте го, когато:

  • сертификатът на сървъра е издаден от частен CA;
  • инсталацията използва самоподписан сървърен сертификат; или
  • необходимият публичен Root CA не е включен във фърмуера.

За частна PKI качете нейния Root CA сертификат. TLS сървърът все пак трябва да изпрати необходимите междинни сертификати при ръкостискането. Самоподписан сървърен сертификат може да се качи като котва на доверие, но SAN трябва да съответства на настроеното име или IP.

none

none все още установява шифрована TLS връзка, но не проверява веригата или името на сървъра. Това е подобно на старото TLS поведение без удостоверяване на сървъра.

Режимът е уязвим към атаки с посредник. Използвайте го само временно за съвместимост или диагностика. В продукционна среда предпочитайте builtin или custom.

Изисквания и важни граници

API за конфигуриране на TLS CA изискват включена Local Admin Security. Всяка заявка трябва да съдържа настроеното администраторско име и парола чрез HTTP Basic Authentication.

Компютърът с curl или Swagger UI трябва да достига локалния IP на устройството. MQTTS и HTTPS клиентите споделят един режим на проверка и един собствен CA, така че промяната важи за използвания защитен режим на качване.

Рестартирайте устройството след промяна на TLS настройките, за да се създаде изходящият клиент с новата конфигурация.

Примерите използват тези заместители:

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

Заменете ги с реалния адрес на устройството и администраторските данни.

Проверете текущия TLS режим

API:

GET /api/tls/ca/status

Пример:

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

Примерен отговор:

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

Отговорът показва избрания режим и, ако има запазен собствен CA, неговата дължина и SHA-256 хеш.

Изберете проверка builtin

API:

POST /api/tls/ca/select

Пример:

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

Рестартирайте устройството след успешен отговор.

Изберете none за временна диагностика

API:

POST /api/tls/ca/select

Пример:

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

Отговорът предупреждава, че проверката на сървърния сертификат е изключена. Рестартирайте след промяната и се върнете към builtin или custom след диагностиката.

Качете и изберете собствен CA

Качването на CA и изборът на custom са отделни операции. Качването не променя автоматично активния режим.

Изисквания към файла за собствен CA

Качваният файл трябва да отговаря на всички изисквания:

  • PEM формат на сертификата;
  • сурово тяло на заявката, не JSON и не multipart/form-data;
  • Content-Type: application/x-pem-file;
  • дължина от 1 до 3072 байта, включително PEM заглавия, нови редове и празни знаци;
  • съдържа -----BEGIN CERTIFICATE----- и -----END CERTIFICATE-----;
  • не съдържа частен ключ.

Лимитът 3072 байта важи за цялото тяло на HTTP заявката. PEM файл от 3072 байта се приема, а от 3073 байта се отхвърля.

Проверете размера преди качване:

wc -c root-ca.pem

Стъпка 1: Качете CA

API:

POST /api/tls/ca/upload

Пример:

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

Примерен успешен отговор:

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

Устройството запазва CA в няколко KV блока и проверява дължината и SHA-256 хеша, преди да го маркира активен. Прекъснат запис не заменя предишния валиден CA.

Стъпка 2: Изберете custom

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

Устройството отхвърля заявката, ако няма запазен валиден собствен CA. Не преминава мълчаливо към none.

Стъпка 3: Рестартирайте и проверете

Рестартирайте от локалния уеб интерфейс или използвайте защитения API за рестарт:

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

След повторното свързване проверете статуса отново:

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

Потвърдете, че mode е custom, customCaValid е 1, а отчетените дължина и SHA-256 хеш съвпадат с качения сертификат.

Изтрийте собствения CA

API:

POST /api/tls/ca/delete

Пример:

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

Изтриването на собствения CA връща и режима към builtin. След изтриване рестартирайте устройството.

Използвайте IAMMETER Swagger UI

Същите API могат да се тестват без ръчно писане на curl команди:

IAMMETER WEM API Test - TLS CA

  1. Отворете WEM API Test на компютър с достъп до локалния IP на устройството.
  2. Въведете адреса, например 192.168.1.80, и изберете Apply.
  3. Изберете Authorize и въведете администраторското име и парола.
  4. Отворете групата TLS CA - Authenticated.
  5. Използвайте GET /api/tls/ca/status за текущата конфигурация.
  6. Използвайте качване, избор или изтриване според нуждата.
  7. Рестартирайте след промяна на режима или сертификата.

Страницата Swagger работи в браузъра и изпраща заявки директно от компютъра към IAMMETER устройството. Тя не използва IAMMETER Cloud като прокси, така че браузърът трябва да има пряка мрежова връзка до IP на устройството.

Отстраняване на проблеми с проверката на сертификати

admin security required

Включете Local Admin Security преди използване на TLS CA API. Тези настройки не могат да се променят анонимно.

custom CA is missing or invalid

Качете успешно валиден PEM CA, преди да изберете custom. Проверете /api/tls/ca/status и потвърдете, че customCaValid е 1.

TLS връзката е неуспешна в builtin или custom

Проверете всички следни условия:

  • настроеното име или IP съответства на SAN;
  • сертификатът е валиден в момента и времето на устройството е правилно;
  • сървърът изпраща необходимите междинни сертификати;
  • избраният Root CA е издал или чрез веригата се доверява на сървърния сертификат;
  • устройството е рестартирано след промяната на TLS.

TLS работи в none, но не в режимите с проверка

Това обикновено означава проблем с веригата, името на сървъра, срока на валидност или часовника на устройството. Оставянето на none скрива грешката при удостоверяване, но не я решава. Поправете сертификатната конфигурация или качете подходящ Root CA и използвайте custom.

Нагоре