it:iot:mosquitto

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Obě strany předchozí revize Předchozí verze
Následující verze
Předchozí verze
it:iot:mosquitto [2023/01/04 20:42] Petr Nosekit:iot:mosquitto [2023/02/12 08:49] (aktuální) – [Zapnutí autentizace] Petr Nosek
Řádek 42: Řádek 42:
  
 <code bash> <code bash>
-docker exec -it mosqutto sh+docker exec -it mosquitto sh
 mosquitto_passwd -c /mosquitto/pwfile/pwfile majordomus mosquitto_passwd -c /mosquitto/pwfile/pwfile majordomus
 </code> </code>
Řádek 98: Řádek 98:
 function generate_der () { function generate_der () {
    echo "generate DER certificates for ESP8266"    echo "generate DER certificates for ESP8266"
-   openssl x509 -in server.crt -out cert.der -outform DER +   openssl x509 -in client.crt -out cert.der -outform DER 
-   openssl rsa -in server.key -out key.der -outform DER+   openssl rsa -in client.key -out key.der -outform DER
 } }
 +
 +function generate_server_pem () {
 +   echo "generate PEM certificates for Node RED"
 +   openssl x509 -in server.crt -out server-cert.pem
 +   openssl rsa -in server.key -out server-key.pem
 +}
 +
  
 generate_CA generate_CA
Řádek 106: Řádek 113:
 generate_client generate_client
 generate_der generate_der
 +generate_server_pem
 </code> </code>
  
Řádek 156: Řádek 164:
  
 </code> </code>
 +
 +
 +=== ESP8266, microPython a Mosquito přes SSL ===
 +
 +Po dlouhém bádání jsem se dopracoval k tomu, že je potřeba certifikát v binárním formátu DER. Nainstaloval jsem si mpfshell a nahrál do ESP8266 vygenerované certifikáty **cert.der** a **key.der**. Ještě je dobré si uvědomit, že by nemělo být připojeno nic jiného k portu s ESP8266, jinak to nebude fungovat.
 +
 +<code bash>
 +sudo pip3 install mpfshell
 +mpfshell -c "open ttyUSB0"
 +ls
 +put cert.der
 +put key.der
 +ls
 +</code>
 +
 +
 +Pak jsem musel upravid kód v microPythonu, aby načetl certifikáty a použil je při autentizaci.
 +
 +<code python>
 +with open("key.der", 'rb') as f:
 +            key = f.read()
 +            
 +with open("cert.der", 'rb') as f:
 +            cert = f.read()
 +
 +
 +ssl_params = dict()
 +ssl_params["cert"] = cert
 +ssl_params["key"] = key
 +
 +
 +mqttc = MQTTClient(CLIENT_NAME, BROKER_ADDR, 8883, USER, PASSWORD, ssl=True, ssl_params=ssl_params, keepalive=60)
 +    
 +</code>
 +
 +zdroje, ze kterých jsem čerpal:
 +
 +  * https://github.com/peterhinch/micropython-mqtt/issues/10
 +  * https://dev.to/bassparanoya/esp32-micropython-mqtt-tls-28fd
 +  * https://forum.micropython.org/viewtopic.php?f=18&t=11906#p65746
 +  * [[https://forum.pycom.io/topic/4775/solved-mqtt-and-tls|Solved mqtt and tls - ESP32]]
 +  * [[https://microcontrollerslab.com/esp32-esp8266-micropython-mqtt-publish-subscribe-ds18b20-readings/|ESP32 ESP8266 MicroPython MQTT Publish Subscribe DS18B20 Readings]]
 +  * [[https://randomnerdtutorials.com/micropython-mqtt-publish-ds18b10-esp32-esp8266/|MicroPython: MQTT – Publish DS18B20 Temperature Readings (ESP32/ESP8266)]]
 +
  
  
  • it/iot/mosquitto.1672864979.txt.gz
  • Poslední úprava: 2023/01/04 20:42
  • autor: Petr Nosek