Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Mosquitto broker add-on - use_identity_as_username (HassOS)


teeko

Anbefalte innlegg

Noen MQTT-klienter benytter som kjent ikke brukernavn og password, men autentiserer seg kryptografisk basert på sertifikat. I disse tilfellene kan det være nyttig å benytte identiteten i klientsertifikatet som brukernavn i Mosquitto som vist i diverse guider på nettet. Mosquitto støtter dette gjennom å sette "use_identity_as_username true" i mosquitto.conf.

 

Siden mosquitto.conf ikke er direkte tilgjenglig for justeringer når Mosquitto kjøres som "add-on" under HassOS prøvde jeg å sette "use_identity_as_username: true" via brukergrensesnittet. Opsjonen satt via brukergrensesnittet hadde tilsynelatende ingen effekt, og resulterte i følgende oppføring i systemloggen til Home Assistant:

"WARNING (MainThread) [supervisor.addons.validate] Unknown options use_identity_as_username"

 

Noen som kjenner til en smidig måte å sette "use_identity_as_username true" når Mosquitte kjører som "add-on" under HassOS?

Endret av teeko
Lenke til kommentar
Del på andre sider

Ja, godt tenkt.

 

Prøvde å opprette en fil test.conf med linjen "use_identity_as_username true" i customization-katalogen /share/mosquitto

 

mosquitto $ pwd
/share/mosquitto
mosquitto $ ls
accesscontrollist  acl.conf           test.conf
mosquitto $ cat test.conf
use_identity_as_username true
mosquitto $
 

Og test.conf leses inn under oppstart at Mosquitto-addon

[10:44:12] INFO: Setup mosquitto configuration
[10:44:12] INFO: Found local users inside config
[10:44:12] INFO: Initialize Hass.io Add-on services
[10:44:12] INFO: Initialize Home Assistant discovery
[10:44:12] INFO: Start Mosquitto daemon
1596962652: Loading config file /share/mosquitto/acl.conf
1596962652: Loading config file /share/mosquitto/test.conf
1596962652: mosquitto version 1.6.3 starting
1596962652: Config loaded from /etc/mosquitto.conf.
1596962652: Loading plugin: /usr/share/mosquitto/auth-plug.so
1596962652: |-- *** auth-plug: startup
1596962652:  ├── Username/password checking enabled.
1596962652:  ├── TLS-PSK checking enabled.
1596962652:  └── Extended authentication not enabled.
1596962652: Opening ipv4 listen socket on port 1883.
1596962652: Opening ipv6 listen socket on port 1883.
1596962652: Opening websockets listen socket on port 1884.
1596962652: Opening ipv4 listen socket on port 8883.
1596962652: Opening ipv6 listen socket on port 8883.
1596962652: Opening websockets listen socket on port 8884.
1596962652: Opening ipv4 listen socket on port 1883.
1596962652: Error: Address in use

...men det ser ut som det blir en kollisjon mot slutten

 

 

Uten test.conf ser det slik ut:

[11:10:36] INFO: Setup mosquitto configuration
[11:10:36] INFO: Found local users inside config
[11:10:36] INFO: Initialize Hass.io Add-on services
[11:10:36] INFO: Initialize Home Assistant discovery
[11:10:36] INFO: Start Mosquitto daemon
1596964236: Loading config file /share/mosquitto/acl.conf
1596964236: mosquitto version 1.6.3 starting
1596964236: Config loaded from /etc/mosquitto.conf.
1596964236: Loading plugin: /usr/share/mosquitto/auth-plug.so
1596964236: |-- *** auth-plug: startup
1596964236:  ├── Username/password checking enabled.
1596964236:  ├── TLS-PSK checking enabled.
1596964236:  └── Extended authentication not enabled.
1596964236: Opening ipv4 listen socket on port 1883.
1596964236: Opening ipv6 listen socket on port 1883.
1596964236: Opening websockets listen socket on port 1884.
1596964236: Opening ipv4 listen socket on port 8883.
1596964236: Opening ipv6 listen socket on port 8883.
1596964236: Opening websockets listen socket on port 8884.
1596964236: Warning: Mosquitto should not be run as root/administrator.

...og fungerer ellers som det skal :-)

Endret av teeko
Lenke til kommentar
Del på andre sider

Siden konfigurasjonsfilene leses i alfabetisk rekkefølge prøvde jeg å døpe om test.conf til a.conf. Da ble den lest før acl.conf som antatt, men feilmeldingen til slutt var den samme.

 

Det er fristende å prøve å editere mosquitto.conf i Docker-kontaineren, men det hadde vært artig å få dette til på en måte som gjorde at Home Assistant fungerer "supervised".

Endret av teeko
Lenke til kommentar
Del på andre sider

OK - use_identity_as_username fungerer hos meg nå etter litt triksing

 

1. Slå av SSL-støtten som settes opp gjennom brukergrensesnittet til Mosquitto add-on.

Dette gjøres ved å spesifisere sertifikatfiler som ikke eksisterer:

logins:
  - username: elwiz
    password: hemmelig_passord
anonymous: false
customize:
  active: true
  folder: mosquitto
certfile: no_such_file_server.crt
keyfile: no_such_file_server.key
require_certificate: true
cafile: no_such_file_ca.crt

 

2. Lag en alternativ konfig for SSL-støtte

Ved å gjøre dette utenfor brukergrensesnittet fungerer use_identity_as_username

mosquitto $ pwd
/root/share/mosquitto
mosquitto $ ls
accesscontrollist  acl.conf           alt_ssl.conf
mosquitto $ cat alt_ssl.conf
listener 8883
protocol mqtt
cafile /ssl/ca.crt
certfile /ssl/server.crt
keyfile /ssl/server.key
require_certificate true
use_identity_as_username true
mosquitto $

3. Sett opp tilgang for aktuelle brukere.

Det ikke behov for å legge til brukernavn og passord, da autentisering gjøres gjennom sertifikatet

Eksempel: "tibber" under er en identitet hentet fra CN i klientsertifikatet (self-signed) jeg benytter for Tibber Pulse.

mosquitto $ cat accesscontrollist
user homeassistant
topic #

user tibber
topic write tibber
topic read tabber

user elwiz
topic read tibber
topic write tabber

That's it...

 

Slik ser det ut ved oppstart:

 

[20:09:46] INFO: Setup mosquitto configuration
[20:09:46] WARNING: SSL not enabled - No valid certs found!
[20:09:46] INFO: Found local users inside config
[20:09:46] INFO: Initialize Hass.io Add-on services
[20:09:46] INFO: Initialize Home Assistant discovery
[20:09:46] INFO: Start Mosquitto daemon
1596996586: Loading config file /share/mosquitto/acl.conf
1596996586: Loading config file /share/mosquitto/alt_ssl.conf
1596996586: mosquitto version 1.6.3 starting
1596996586: Config loaded from /etc/mosquitto.conf.
1596996586: Loading plugin: /usr/share/mosquitto/auth-plug.so
1596996586: |-- *** auth-plug: startup
1596996586:  ├── Username/password checking enabled.
1596996586:  ├── TLS-PSK checking enabled.
1596996586:  └── Extended authentication not enabled.
1596996586: Opening ipv4 listen socket on port 8883.
1596996586: Opening ipv6 listen socket on port 8883.
1596996586: Opening ipv4 listen socket on port 1883.
1596996586: Opening ipv6 listen socket on port 1883.
1596996586: Opening websockets listen socket on port 1884.
1596996586: Warning: Mosquitto should not be run as root/administrator.

 

Endelig kunne jeg slå av anonymous tilgang igjen....

Endret av teeko
Lenke til kommentar
Del på andre sider

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.