Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MQTT-Bug with CA-Certificate #3425

Open
theo416 opened this issue Dec 7, 2024 · 21 comments
Open

MQTT-Bug with CA-Certificate #3425

theo416 opened this issue Dec 7, 2024 · 21 comments
Labels
bug Something isn't working Release16.0.0

Comments

@theo416
Copy link

theo416 commented Dec 7, 2024

The Problem

Bei der Angabe eines CA-Zertifikats im PEM-Format und anschließendem Neustart scheiterte die Verbindung zum MQTT-Broker.
Das X.509 CA-Zertifikat wurde mit openssl erstellt und von .crt in .pem umgewandelt, damit Konfiguration analog dem Konfigurationsbeispiel.
Die PKI funktioniert im restlichen Netzwerk für MQTT etc. problemlos!

Das Zertifikat wird laut Log erkannt.
MQTT-Verbindung kommt aber nicht zustande.

Der MQTT-Broker ist für TLS konfiguriert und wird auch schon damit verwendet.

Version

15.7.0

Logfile

[0d00h00m00s] 2024-12-07T17:43:09 <INF> [MAIN] =================================================  
[0d00h00m00s] 2024-12-07T17:43:09 <INF> [MAIN] ==================== Start ======================  
[0d00h00m00s] 2024-12-07T17:43:09 <INF> [MAIN] =================================================  
[0d00h00m00s] 2024-12-07T17:43:09 <INF> [MAIN] PSRAM size: 8388608 byte (8MB / 64MBit)  
[0d00h00m00s] 2024-12-07T17:43:09 <INF> [MAIN] Total heap: 4380067 byte  
[0d00h00m04s] 2024-12-07T17:43:13 <INF> [MAIN] Camera info: PID: 0x26, VER: 0x42, MIDL: 0x7f, MIDH: 0xa2  
[0d00h00m04s] 2024-12-07T17:43:13 <INF> [SDCARD] Basic R/W check started...  
[0d00h00m04s] 2024-12-07T17:43:13 <INF> [SDCARD] Basic R/W check successful  
[0d00h00m04s] 2024-12-07T17:43:13 <INF> [SNTP] TimeServer: <ntp-server> 
[0d00h00m04s] 2024-12-07T17:43:13 <INF> [SNTP] Configuring NTP Client...  
[0d00h00m04s] 2024-12-07T18:43:13 <INF> [SNTP] Time zone set to CET-1CEST,M3.5.0,M10.5.0/3  
[0d00h00m04s] 2024-12-07T18:43:13 <INF> [SNTP] time zone: +0100 Delta to UTC: 3600 seconds  
[0d00h00m04s] 2024-12-07T18:43:13 <INF> [SNTP] Time is already set: 2024-12-07 18:43:13  
[0d00h00m04s] 2024-12-07T18:43:13 <INF> [MAIN] CPU frequency: 160 MHz  
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [SDCARD] Folder/file presence check started...  
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [SDCARD] Folder/file presence check successful  
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [MAIN] Tag: 'v15.7.0', Release: v15.7.0 (Commit: 0d0b018+), Date/Time: 2024-02-17 00:15, Web UI: Release: v15.7.0 (Commit: 0d0b018+)  
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [MAIN] Reset reason: Via esp_restart  
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [WLANINI] SSID: <WLAN-SSID>
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [WLANINI] Password: XXXXXXXX  
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [WLANINI] Hostname: <Hostname>
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [WLANINI] RSSIThreshold: -75  
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [MAIN] WLAN config loaded, init WIFI...  
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [WIFI] Automatic interface config --> Use DHCP service  
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [WIFI] Set hostname to: <Hostname>  
[0d00h00m05s] 2024-12-07T18:43:14 <INF> [WIFI] Init successful  
[0d00h00m12s] 2024-12-07T18:43:21 <INF> [WIFI] Connected to: <WLAN-SSID>, RSSI: -76  
[0d00h00m14s] 2024-12-07T18:43:23 <INF> [WIFI] Assigned IP: <IP-Adresse> 
[0d00h00m25s] 2024-12-07T18:43:34 <INF> [MAIN] Device info: CPU cores: 2, Chip revision: 100  
[0d00h00m25s] 2024-12-07T18:43:34 <INF> [MAIN] SD card info: Name: 00000, Capacity: 14991MB, Free: 14966MB  
[0d00h00m27s] 2024-12-07T18:43:36 <INF> [MAIN] Initialization completed successfully  
[0d00h00m29s] 2024-12-07T18:43:38 <INF> [LOGFILE] Set log level to DEBUG  
[0d00h00m29s] 2024-12-07T18:43:38 <DBG> [MQTT] Digitizer interval is 5.0 minutes => setting MQTT LWT timeout to 12.5 minutes.  
[0d00h00m29s] 2024-12-07T18:43:38 <INF> [MQTT IF] using caCert: /config/certs/RootCA.pem  
[0d00h00m29s] 2024-12-07T18:43:38 <DBG> [MQTT IF] URI: mqtts://<mqtt-broker-fqdn>:8883, clientname: <Hostname>, user: <MQTT-User>, password: XXXXXXXX, maintopic: watermeter, last-will-topic: watermeter/connection, keepAlive: 750, RetainFlag: 1  
[0d00h00m29s] 2024-12-07T18:43:38 <INF> [MQTT IF] Init  
[0d00h00m29s] 2024-12-07T18:43:38 <INF> [MQTT IF] Client started, waiting for established connection...  
[0d00h00m29s] 2024-12-07T18:43:38 <INF> [MAINCTRL] Starting Flow...  
[0d00h00m29s] 2024-12-07T18:43:38 <DBG> [MAINCTRL] ----------------------------------------------------------------  
[0d00h00m29s] 2024-12-07T18:43:38 <INF> [MAINCTRL] Round #1 started  
[0d00h00m29s] 2024-12-07T18:43:38 <DBG> [FLOWCTRL] Status: Take Image (18:43:38)  
[0d00h00m29s] 2024-12-07T18:43:38 <DBG> [MQTT IF] Publish skipped. Client not initalized or not connected. (topic: watermeter/status)  
[0d00h00m29s] 2024-12-07T18:43:38 <DBG> [PSRAM] Init shared memory for step 'Take Image' (STBI buffers)  
[0d00h00m30s] 2024-12-07T18:43:39 <DBG> [OTA FILE] log_get_last_part_handler  
[0d00h00m33s] 2024-12-07T18:43:42 <DBG> [PSRAM] Allocated 18456 bytes in PSRAM for 'STBI'  
[0d00h00m33s] 2024-12-07T18:43:42 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m33s] 2024-12-07T18:43:42 <DBG> [PSRAM] Allocated 18456 bytes in PSRAM for 'STBI'  
[0d00h00m33s] 2024-12-07T18:43:42 <DBG> [PSRAM] Allocating memory (307215 bytes) for STBI (use shared memory in PSRAM)...  
[0d00h00m33s] 2024-12-07T18:43:42 <DBG> [PSRAM] Allocating memory (153615 bytes) for STBI (use shared memory in PSRAM)...  
[0d00h00m33s] 2024-12-07T18:43:42 <DBG> [PSRAM] Allocating memory (153615 bytes) for STBI (use shared memory in PSRAM)...  
[0d00h00m33s] 2024-12-07T18:43:42 <DBG> [PSRAM] Allocated 643 bytes in PSRAM for 'STBI'  
[0d00h00m33s] 2024-12-07T18:43:43 <DBG> [PSRAM] Allocated 643 bytes in PSRAM for 'STBI'  
[0d00h00m33s] 2024-12-07T18:43:43 <DBG> [PSRAM] Allocated 643 bytes in PSRAM for 'STBI'  
[0d00h00m33s] 2024-12-07T18:43:43 <DBG> [PSRAM] Allocating memory (921601 bytes) for STBI (use shared memory in PSRAM)...  
[0d00h00m34s] 2024-12-07T18:43:43 <DBG> [PSRAM] Part of shared memory used for STBI (PSRAM, part of shared memory) is free again  
[0d00h00m34s] 2024-12-07T18:43:43 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m34s] 2024-12-07T18:43:43 <DBG> [PSRAM] Part of shared memory used for STBI (PSRAM, part of shared memory) is free again  
[0d00h00m34s] 2024-12-07T18:43:43 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m34s] 2024-12-07T18:43:43 <DBG> [PSRAM] Part of shared memory used for STBI (PSRAM, part of shared memory) is free again  
[0d00h00m34s] 2024-12-07T18:43:43 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m34s] 2024-12-07T18:43:43 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m36s] 2024-12-07T18:43:45 <DBG> [C IMG BASIS] Not freeing (zwImage as there was never PSRAM allocated for it)  
[0d00h00m36s] 2024-12-07T18:43:45 <DBG> [PSRAM] Deinit shared memory for step 'Take Image' (STBI buffers)  
[0d00h00m36s] 2024-12-07T18:43:45 <DBG> [FLOWCTRL] Status: Aligning (18:43:45)  
[0d00h00m36s] 2024-12-07T18:43:45 <DBG> [MQTT IF] Publish skipped. Client not initalized or not connected. (topic: watermeter/status)  
[0d00h00m37s] 2024-12-07T18:43:46 <DBG> [PSRAM] Allocating tmpImage (921600 bytes, use shared memory in PSRAM)...  
[0d00h00m39s] 2024-12-07T18:43:48 <INF> [SNTP] Time is synced with NTP Server <ntp-server>: 2024-12-07 18:43:48  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Allocated 18456 bytes in PSRAM for 'STBI'  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Allocated 18456 bytes in PSRAM for 'STBI'  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Allocated 2319 bytes in PSRAM for 'STBI'  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Allocated 591 bytes in PSRAM for 'STBI'  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Allocated 591 bytes in PSRAM for 'STBI'  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Allocated 43 bytes in PSRAM for 'STBI'  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Allocated 43 bytes in PSRAM for 'STBI'  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Allocated 43 bytes in PSRAM for 'STBI'  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Allocated 4201 bytes in PSRAM for 'STBI'  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m40s] 2024-12-07T18:43:49 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Allocated 18456 bytes in PSRAM for 'STBI'  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Allocated 18456 bytes in PSRAM for 'STBI'  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Allocated 2063 bytes in PSRAM for 'STBI'  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Allocated 527 bytes in PSRAM for 'STBI'  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Allocated 527 bytes in PSRAM for 'STBI'  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Allocated 66 bytes in PSRAM for 'STBI'  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Allocated 66 bytes in PSRAM for 'STBI'  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Allocated 66 bytes in PSRAM for 'STBI'  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Allocated 3970 bytes in PSRAM for 'STBI'  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m44s] 2024-12-07T18:43:53 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
**[0d00h00m44s] 2024-12-07T18:43:53 <ERR> [MQTT IF] Other event id:**  
[0d00h00m44s] 2024-12-07T18:43:53 <WRN> [MQTT IF] Disconnected, trying to reconnect  
[0d00h00m46s] 2024-12-07T18:43:55 <DBG> [PSRAM] Freeing memory in PSRAM used for 'STBI'...  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [PSRAM] Shared memory used for tmpImage (PSRAM, part of shared memory) is free again  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [FLOWCTRL] Status: Digitalization of ROIs (18:44:01)  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [MQTT IF] Publish skipped. Client not initalized or not connected. (topic: watermeter/status)  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [CNN] doFlow after alignment  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [PSRAM] Allocating Tensor Arena (819200 bytes, use shared memory in PSRAM)...  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [TFLITE] CTfLiteClass::LoadModel  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [TFLITE] CTfLiteClass::ReadFileToModel: /sdcard/config/dig-cont_0700_s3_q.tflite  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [TFLITE] Loading Model /sdcard/config/dig-cont_0700_s3_q.tflite /size: 315504 bytes...  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [PSRAM] Allocating Model memory (1363148 bytes, use shared memory in PSRAM)...  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [TFLITE] CTfLiteClass::MakeAllocate  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [CNN] Processing Number 'main'  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [CNN] ROI #0 - TfLite  
[0d00h00m52s] 2024-12-07T18:44:01 <DBG> [CNN] CNN Type: DoubleHyprid10  
[0d00h00m55s] 2024-12-07T18:44:04 <DBG> [CNN] After Invoke  
[0d00h00m55s] 2024-12-07T18:44:04 <DBG> [CNN] ROI #1 - TfLite  
[0d00h00m55s] 2024-12-07T18:44:04 <DBG> [CNN] CNN Type: DoubleHyprid10  
[0d00h00m58s] 2024-12-07T18:44:07 <DBG> [CNN] After Invoke  
[0d00h00m58s] 2024-12-07T18:44:07 <DBG> [CNN] ROI #2 - TfLite  
[0d00h00m58s] 2024-12-07T18:44:07 <DBG> [CNN] CNN Type: DoubleHyprid10  
[0d00h01m00s] 2024-12-07T18:44:09 <DBG> [CNN] After Invoke  
[0d00h01m00s] 2024-12-07T18:44:09 <DBG> [CNN] ROI #3 - TfLite  
[0d00h01m00s] 2024-12-07T18:44:09 <DBG> [CNN] CNN Type: DoubleHyprid10  
[0d00h01m03s] 2024-12-07T18:44:12 <DBG> [CNN] After Invoke  
[0d00h01m03s] 2024-12-07T18:44:12 <DBG> [CNN] ROI #4 - TfLite  
[0d00h01m03s] 2024-12-07T18:44:12 <DBG> [CNN] CNN Type: DoubleHyprid10  
[0d00h01m06s] 2024-12-07T18:44:15 <DBG> [CNN] After Invoke  
[0d00h01m06s] 2024-12-07T18:44:15 <DBG> [CNN] ROI #5 - TfLite  
[0d00h01m06s] 2024-12-07T18:44:15 <DBG> [CNN] CNN Type: DoubleHyprid10  
**[0d00h01m07s] 2024-12-07T18:44:16 <ERR> [MQTT IF] Other event id:**  
[0d00h01m07s] 2024-12-07T18:44:16 <WRN> [MQTT IF] Disconnected, trying to reconnect  
[0d00h01m08s] 2024-12-07T18:44:17 <DBG> [CNN] After Invoke  
[0d00h01m08s] 2024-12-07T18:44:17 <DBG> [CNN] ROI #6 - TfLite  
[0d00h01m08s] 2024-12-07T18:44:17 <DBG> [CNN] CNN Type: DoubleHyprid10  
[0d00h01m11s] 2024-12-07T18:44:20 <DBG> [CNN] After Invoke  
[0d00h01m11s] 2024-12-07T18:44:20 <DBG> [CNN] ROI #7 - TfLite  
[0d00h01m11s] 2024-12-07T18:44:20 <DBG> [CNN] CNN Type: DoubleHyprid10  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [CNN] After Invoke  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [PSRAM] Shared memory used for Tensor Arena and model (PSRAM, part of shared memory) is free again  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [FLOWCTRL] Status: Post-Processing (18:44:23)  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [MQTT IF] Publish skipped. Client not initalized or not connected. (topic: watermeter/status)  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [CNN] getReadout _analog=0, _extendedResolution=0, prev=-1  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [CNN] getReadout(dig100) prev=0  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [CNN] getReadout#PointerEvalHybridNew()= 1  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [POSTPROC] handleAllowNegativeRate for device: main  
[0d00h01m14s] 2024-12-07T18:44:23 <INF> [POSTPROC] main: Raw: 000xx.xx, Value: xx.xxx, Status: no error  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [FLOWCTRL] Status: Sending MQTT (18:44:23)  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [MQTT IF] Publish skipped. Client not initalized or not connected. (topic: watermeter/status)  
[0d00h01m14s] 2024-12-07T18:44:23 <WRN> [MQTT SERVER] Unable to send Static Topics, we are not connected to the MQTT broker!  
[0d00h01m14s] 2024-12-07T18:44:23 <WRN> [MQTT SERVER] One or more MQTT topics failed to be published, will try sending them in the next round!  
[0d00h01m14s] 2024-12-07T18:44:23 <WRN> [MQTT SERVER] Unable to send System Topics, we are not connected to the MQTT broker!  
[0d00h01m14s] 2024-12-07T18:44:23 <WRN> [MQTT] One or more MQTT topics failed to be published!  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [MQTT IF] Publish skipped. Client not initalized or not connected. (topic: watermeter/status)  
[0d00h01m14s] 2024-12-07T18:44:23 <INF> [MAINCTRL] Round #1 completed (45 seconds)  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [MAINCTRL] CPU Temperature: 53°C  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [MAINCTRL] WIFI Signal (RSSI): -81dBm  
[0d00h01m14s] 2024-12-07T18:44:23 <DBG> [WIFI] Roaming: Start scan of all channels for SSID <WLAN-SSID>  
[0d00h01m17s] 2024-12-07T18:44:26 <DBG> [WIFI] Roaming: Current AP BSSID=xx:xx:xx:xx:xx:xx  
[0d00h01m17s] 2024-12-07T18:44:26 <DBG> [WIFI] Roaming: Scan completed, APs found with configured SSID: 1  
[0d00h01m17s] 2024-12-07T18:44:26 <DBG> [WIFI] Roaming: 1: SSID=<WLAN-SSID>, BSSID=xx:xx:xx:xx:xx:xx, RSSI=-82, CH=6, AUTH=WPA2 PSK  
[0d00h01m17s] 2024-12-07T18:44:26 <DBG> [WIFI] Roaming: Scan completed, stay on current AP  
**[0d00h01m22s] 2024-12-07T18:44:31 <ERR> [MQTT IF] Other event id:**  
[0d00h01m22s] 2024-12-07T18:44:31 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h01m37s] 2024-12-07T18:44:46 <ERR> [MQTT IF] Other event id:**  
[0d00h01m37s] 2024-12-07T18:44:46 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h01m37s] 2024-12-07T18:44:46 <ERR> [MQTT IF] Disconnected, multiple reconnect attempts failed, still retrying...**  
**[0d00h01m52s] 2024-12-07T18:45:01 <ERR> [MQTT IF] Other event id:**  
[0d00h01m52s] 2024-12-07T18:45:01 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h02m07s] 2024-12-07T18:45:16 <ERR> [MQTT IF] Other event id:**  
[0d00h02m07s] 2024-12-07T18:45:16 <WRN> [MQTT IF] Disconnected, trying to reconnect  
[0d00h02m12s] 2024-12-07T18:45:21 <DBG> [OTA FILE] log_get_last_part_handler  
**[0d00h02m22s] 2024-12-07T18:45:31 <ERR> [MQTT IF] Other event id:**  
[0d00h02m22s] 2024-12-07T18:45:31 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h02m37s] 2024-12-07T18:45:46 <ERR> [MQTT IF] Other event id:**  
[0d00h02m37s] 2024-12-07T18:45:46 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h02m52s] 2024-12-07T18:46:01 <ERR> [MQTT IF] Other event id:**  
[0d00h02m52s] 2024-12-07T18:46:01 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h02m52s] 2024-12-07T18:46:01 <ERR> [MQTT IF] Disconnected, multiple reconnect attempts failed, still retrying...**  
**[0d00h03m07s] 2024-12-07T18:46:16 <ERR> [MQTT IF] Other event id:**  
[0d00h03m07s] 2024-12-07T18:46:16 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h03m22s] 2024-12-07T18:46:31 <ERR> [MQTT IF] Other event id:**  
[0d00h03m22s] 2024-12-07T18:46:31 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h03m37s] 2024-12-07T18:46:47 <ERR> [MQTT IF] Other event id:**  
[0d00h03m38s] 2024-12-07T18:46:47 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h03m53s] 2024-12-07T18:47:02 <ERR> [MQTT IF] Other event id:**  
[0d00h03m53s] 2024-12-07T18:47:02 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h04m08s] 2024-12-07T18:47:17 <ERR> [MQTT IF] Other event id:**  
[0d00h04m08s] 2024-12-07T18:47:17 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h04m08s] 2024-12-07T18:47:17 <ERR> [MQTT IF] Disconnected, multiple reconnect attempts failed, still retrying...**  
**[0d00h04m23s] 2024-12-07T18:47:32 <ERR> [MQTT IF] Other event id:**  
[0d00h04m23s] 2024-12-07T18:47:32 <WRN> [MQTT IF] Disconnected, trying to reconnect  
[0d00h04m28s] 2024-12-07T18:47:37 <DBG> [OTA FILE] download_get_handler  
**[0d00h04m38s] 2024-12-07T18:47:47 <ERR> [MQTT IF] Other event id:**  
[0d00h04m38s] 2024-12-07T18:47:47 <WRN> [MQTT IF] Disconnected, trying to reconnect  
**[0d00h05m00s] 2024-12-07T18:48:09 <ERR> [MQTT IF] Other event id:**  
[0d00h05m00s] 2024-12-07T18:48:09 <WRN> [MQTT IF] Disconnected, trying to reconnect  
[0d00h05m10s] 2024-12-07T18:48:19 <DBG> [OTA FILE] delete_post_handler  
[0d00h05m10s] 2024-12-07T18:48:19 <DBG> [OTA FILE] File deleted: /config/config.ini  
[0d00h05m10s] 2024-12-07T18:48:19 <DBG> [OTA FILE] upload_post_handler  
[0d00h05m10s] 2024-12-07T18:48:19 <DBG> [OTA FILE] File saved: /config/config.ini  
[0d00h05m14s] 2024-12-07T18:48:23 <DBG> [OTA] handler_reboot  
[0d00h05m14s] 2024-12-07T18:48:23 <INF> [OTA] !!! System will restart within 5 sec!!!  
[0d00h05m14s] 2024-12-07T18:48:23 <INF> [OTA] Reboot triggered by Software (5s)  
[0d00h05m14s] 2024-12-07T18:48:23 <WRN> [OTA] Reboot in 5sec  
**[0d00h05m15s] 2024-12-07T18:48:24 <ERR> [MQTT IF] Other event id:**  
[0d00h05m15s] 2024-12-07T18:48:24 <WRN> [MQTT IF] Disconnected, trying to reconnect  
[0d00h05m24s] 2024-12-07T18:48:33 <DBG> [MAIN SERVER] info_get_handler

Expected Behavior

Ich würde erwarten, dass der ESP mit dem konfigurierten Zertifikat den Server validiert und sich anschließend mit diesem verbindet.

Screenshots

No response

Additional Context

Untenstehend der Log-Auszug des mosquitto-Brokers. Dieser könnte interessant sein. Der erste Such-Match führte zu openssl #22690.

2024-12-07T18:45:16: New connection from <ip-address-blurred>:54088 on port 8883.
2024-12-07T18:45:16: OpenSSL Error[0]: error:0A000126:SSL routines::unexpected eof while reading
2024-12-07T18:45:16: Client <unknown> disconnected: Protocol error.
… wiederholt sich
@theo416 theo416 added the bug Something isn't working label Dec 7, 2024
@SybexX
Copy link
Collaborator

SybexX commented Dec 7, 2024

@theo416 vielleicht hilft dir das weiter: #3211

@theo416
Copy link
Author

theo416 commented Dec 7, 2024

@SybexX Danke für die schnelle Hilfe. Die Issues habe ich selbst gar nicht gefunden, sorry...

Mein Server hat tatsächlich nur >= TLS1.3 akzeptiert. Nachdem ich dies auf TLS 1.2 umgestellt habe, ging es aber leider immernoch nicht.
Was ich noch herausgelesen habe, könnte es auch die Key-Size sein, die zu hoch ist (bei mir auch 4096).

Der Issue wurde allerdings schon geschlossen. @LordGuilly wollte dies noch auf seinem alten Gerät nachsehen.

@SybexX
Copy link
Collaborator

SybexX commented Dec 7, 2024

@theo416 Ich persönlich nutze TLS nicht und habe es auch nicht ausprobiert, aber soweit ich weiß, sollten dafür folgende Einschränkungen gelten:

  • Der SSL/TLS-Server muss TLS 1.2 unterstützen.
  • Das Serverzertifikat muss über einen privaten RSA-Schlüssel (max. 2048 Bit) verfügen und das Zertifikat muss mit RSA- und SHA256-Hash signiert sein.

Möglicherweise gibt es noch weitere Einschränkungen, die mir aber nicht bekannt sind.

@theo416
Copy link
Author

theo416 commented Dec 7, 2024

@SybexX dann wird das wahrscheinlich mein Problem mit dem 4096 RSA-Schlüssel sein.
Ich werde die Verbindung also weiterhin über non-TLS laufen lassen.

Vielleicht würde der ESP hier auch an/über sein Hardwarelimit kommen. Kann das jemand bestätigen?
Wäre auch hilfreich, wenn diese Infos (Key-Typ, TLS-Version, Key-Size etc.) in der Hover-Hilfe angezeigt werden würden.

@SybexX
Copy link
Collaborator

SybexX commented Dec 7, 2024

@theo416 Ich habe mal in der konfig nachgeguckt "CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096", daher sollten 4096 Bits eigentlich auch funktionieren?

folgendes habe ich noch gefunden:
Der SSL/TLS sollte TLS 1.2 MFLN unterstützen, um den Puffer auf 1024 Byte zu begrenzen. Wenn MFLN nicht unterstützt wird, funktioniert es trotzdem gut, solange der Server keine Nachrichten über 1024 Byte sendet.

@theo416
Copy link
Author

theo416 commented Dec 7, 2024

@SybexX Oke interessant!

Ich habe gerade die Pakete mithilfe von Wireshark mitgeschnitten, um zu sehen, ob die Pakete < 1024 Byte sind (MFLN-Thematik). Dabei ist mir aber etwas anderes aufgefallen.
Folgenden Ablauf konnte ich erkennen:

  • Der ESP sendet ein TCP SYN an den Server → OK
  • Der Server bestätigt mit SYN+ACK → OK
  • Der ESP bestätigt mit einem ACK → OK, TCP-Handshake erfolgreich
  • 24ms darauf sendet der ESP ein FIN-Flag an den Server → Nicht OK; Er beendet die Verbindung
  • Der Server antwortet mit untenstehendem TLS-Fehler → OK, angemessene Reaktion
  • Der Server sendet ein ACK zum FIN des ESP → OK
  • Der ESP sendet zwei RST hinterher → Verbindung weg → OK
Internet Protocol Version 4, Src: <server-ip>, Dst: <esp32-ip>
Transmission Control Protocol, Src Port: 8883, Dst Port: 52205, Seq: 1, Ack: 2, Len: 7
Transport Layer Security
    TLSv1.2 Record Layer: Alert (Level: Fatal, Description: Decode Error)
        Content Type: Alert (21)
        Version: TLS 1.2 (0x0303)
        Length: 2
        Alert Message
            Level: Fatal (2)
            Description: Decode Error (50)

Stellt sich also die Frage, wieso der ESP hier ein FIN-Flag sendet?! Ich werde nicht schlau daraus.

@SybexX
Copy link
Collaborator

SybexX commented Dec 7, 2024

@theo416 Ich habe noch etwas Unstimmiges gefunden, weiß aber nicht, ob es die Fehlerursache ist, ich habe mich noch nicht so intensiv mit MQTT beschäftigt.
@jomjol @caco3 Kann dies die Fehlerursache sein?
Unbenannt

caco3 added a commit that referenced this issue Dec 8, 2024
@caco3
Copy link
Collaborator

caco3 commented Dec 8, 2024

Danke @SybexX und @theo416 fürs Untersuchen.
Die Schwierigkeit ist, dass offenbar @LordGuilly der Einzige ist, der das jemals (in einer älteren version) getestet hat. Von uns Devs. konnte das mangels Infrastruktur und Wissen niemand testen.

Wäre auch hilfreich, wenn diese Infos (Key-Typ, TLS-Version, Key-Size etc.) in der Hover-Hilfe angezeigt werden würden.

Das wäre auf jeden Fall sinnvoll, bedingt aber, dass wir es verstehen :)
Du kannst uns helfen, indem Du es in https://github.com/jomjol/AI-on-the-edge-device/blob/main/param-docs/parameter-pages/MQTT/CACert.md besser dokumentierst.

Der Buffer wurde vor 2 Jahren von @Slider0007 in b85e3b1#diff-6e8bbe681cd5657650e19160363d8373be48a263e692a7d15e075064e062c611R226 eingeführt. Mit der Migration zu ESP IDF 5.0.1 in 17ffd28#diff-6e8bbe681cd5657650e19160363d8373be48a263e692a7d15e075064e062c611R264 wurde er nur umbenannt.

Wir können CONFIG_MQTT_BUFFER_SIZE testweise mal auf 4096 erhöhen.
@theo416 Kannst Du mal den obersten Build von https://github.com/jomjol/AI-on-the-edge-device/actions?query=branch%3AIncreased-CONFIG_MQTT_BUFFER_SIZE ausprobieren? beachte, dass ich es selber nicht getestet habe!

@theo416
Copy link
Author

theo416 commented Dec 8, 2024

@caco3 Danke fürs Ändern der config.

Sobald wir das Problem behoben haben, werde ich die Hover-Hilfe auf jeden Fall (versuchen) anzupassen.

Ich habe gerade den Build Development-Branch: Increased-CONFIG_MQTT_BUFFER_SIZE (Commit: 8c5b77f+) ausprobiert. Es kommt aber genau das gleiche dabei raus.
Der Log, die TCP-Pakete und die Broker-Fehlernachricht sehen genau gleich aus!

Soweit ich das in der untenstehenden Codezeile sehen kann, überprüft der ESP den CN des Zertifikats gar nicht (was ein weiterer Grund für eine Verbindungsablehnung wäre).

mqtt_cfg.broker.verification.skip_cert_common_name_check = true;

Ich weiß nicht, wie wir den Fehler weiter eingrenzen könnten. Eventuell beim MQTT-Verbindungsaufbau mehr DEBUG-Nachichten ausgeben, bis wohin der Code überhaupt kommt?

@SybexX
Copy link
Collaborator

SybexX commented Dec 8, 2024

zu skip_cert_common_name_check steht in der esp-idf:
Überspringen Sie jegliche Validierung des CN-Felds des Serverzertifikats.
Dies verringert die Sicherheit von TLS und macht den MQTT-Client anfällig für MITM-Angriffe

@Slider0007
Copy link
Collaborator

Slider0007 commented Dec 8, 2024

Wir können CONFIG_MQTT_BUFFER_SIZE testweise mal auf 4096 erhöhen.
@theo416 Kannst Du mal den obersten Build von https://github.com/jomjol/AI-on-the-edge-device/actions?query=branch%3AIncreased-CONFIG_MQTT_BUFFER_SIZE ausprobieren? beachte, dass ich es selber nicht getestet habe!

@caco3: Nur das Ändern der sdkconfig hilft leider nicht, um hier was anderes zu testen, solange der Code nicht angepasst wird. Der Code schlägt die config. Ich persönlich habe TLS nur mit RSA2048 getestet. 4096 bisher nicht, daher kann ich nicht sagen, ob das überhaupt der limitierende Faktor ist. Nur die ESP Fehlermeldung hilft hier weiter. Auf der Console müssten ebenfalls zusätzliche Diagnose (inkl. Reject Reason) ausgegeben werden. @theo416 Daher wäre es hilfreich, die den Consolen Log zu sehen. (https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/error-codes.html)
Weiterer Debug könnte einkompliliert werden (Achtung LOGD):

Das X.509 CA-Zertifikat wurde mit openssl erstellt und von .crt in .pem umgewandelt,

@theo416: Wie/warum hast du gewandelt? Fileendung ist nicht wirklich relevant, nur Inhalt sollte Base64-ASCII-coded sein. Bitte prüfe, dass es am Ende eine Newline vorhanden ist. Auch wichtig: Only unencrypted and not password protected files are supported.

image

Soweit ich das in der untenstehenden Codezeile sehen kann, überprüft der ESP den CN des Zertifikats gar nicht (was ein weiterer Grund für eine Verbindungsablehnung wäre).

Normalerweise sollte die Verbindung deswegen nicht rejected werden. Außer du hast deinen Server sehr restritiv eingestellt. Ich weiß aber aus dem Stand nicht, ob dies überhaupt so konfiguriert werden könnte. Zwar nicht die sicherste Variante, aber dafür für den User einfacher zu handeln.

@theo416
Copy link
Author

theo416 commented Dec 8, 2024

@Slider0007 danke für deine Hilfe!
Ich habe das Zertifikat in .pem gewandelt, damit es genauso wie das Beispiel in der Hover-Hilfe konfiguriert ist, um Fehler zu vermeiden. Gewandelt habe ich es mittels openssl x509 -in RootCA.crt -out RootCA.pem -outform PEM. Ist mir dann auch aufgefallen, dass sich da am Dateiinhalt nichts ändert...
Das Zertifikat ist auch nicht passwortgeschützt. Newline am Ende existiert. Datei ist auch Base64-ASCII codiert.

Zu skip_cert_common_name_check: Wäre das nicht sinnvoller, hier eine Checkbox im Config-UI einzubauen? Stellt sich nur die Frage, wie sich dann das Programm verhalten würde.
Mein "MQTT Explorer" auf Windows verweigert die Verbindung, wenn das Zertifikat nicht stimmt. Erst wenn ich den Haken "Validate certificate" herausnehme, würde es funktionieren. Wäre dann aber für MITM-Angriffe wieder anfälliger.

Ich krame mal meinen TTL-Konverter heraus und melde mich dann mit dem Console-Log wieder bei euch.

@Slider0007
Copy link
Collaborator

Slider0007 commented Dec 8, 2024

den Haken "Validate certificate" herausnehme,

Wenn es da ohne Haken funktioniert, dann funktioniert es auch mit deaktiviertem Check, da genau das mit dem Flag ausgeschaltet wird. Es kann natürlich alles konfigurierbar gemacht werden. Man sieht aber auch jetzt schon, dass das die Mehrheit mit den aktuellen Einstellmöglichkeiten nicht versteht ;-) Könnte aber prinzipiell konfigurierbar gemacht werden.
Bezgl. Sicherheit (MITM attack) sehe ich das nicht so kritisch, da wir ja kein Atomkraftwerk betreiben ;-)

Ich krame mal meinen TTL-Konverter heraus und melde mich dann mit dem Console-Log wieder bei euch.

Das geht auch mit der Webconsole (Webinstaller)

@theo416
Copy link
Author

theo416 commented Dec 8, 2024

den Haken "Validate certificate" herausnehme,

Wenn es da ohne Haken funktioniert, dann funktioniert es auch mit deaktiviertem Check, da genau das mit dem Flag ausgeschaltet wird.

Das habe ich schon verstanden.
Wenn ich Validate certificate auf false (Aus) stelle, ist dass das gleiche wie skip_cert_common_name_check auf true zu stellen.
Diese Option gibt es auch bei sämtlichen anderen Programmen/Anwendungen und hat schon seinen Sinn.
Aber das ist hier jetzt zum Glück erstmal zweitranging 😜.

Hier der Output des Console-Logs:

I (29969) MQTT IF: using caCert: /config/certs/RootCA.pem
I (29989) MQTT IF: Init
I (30009) MQTT IF: Client started, waiting for established connection...
I (30039) MAINCTRL: Starting Flow...
E (30089) esp-tls-mbedtls: No server verification option set in esp_tls_cfg_t structure. Check esp_tls API reference
E (30089) esp-tls-mbedtls: Failed to set client configurations, returned [0x8017] (UNKNOWN ERROR)
E (30099) esp-tls: create_ssl_handle failed
E (30099) esp-tls: Failed to open new connection
E (30099) transport_base: Failed to open a new connection
E (30109) mqtt_client: Error transport connect
E (30109) MQTT IF: Other event id:
I (30119) MAINCTRL: Round #1 started
E (30129) MQTT IF: Other event id:0
W (30129) MQTT IF: Disconnected, trying to reconnect

Das sieht doch ganz interessant aus!

@Slider0007
Copy link
Collaborator

Slider0007 commented Dec 8, 2024

@theo416

Das ist interessant. Das sieht nach Fehlkonfiguration im ESP aus.
Vielleicht ist das mit der genutzen ESP-IDF Version 5.3.1 inzwischen anderst geregelt. Bisher war dies zumindest nicht notwendig. Ich persönlich nutze noch die ESP-IDF 5.2.1 und mit dieser Version muss dies (noch) nicht in der sdkconfig aktiviert werden.

Du kannst diesen Testbuild (https://github.com/jomjol/AI-on-the-edge-device/actions?query=branch%3AIncreased-CONFIG_MQTT_BUFFER_SIZE) testen und den Log posten. Ich habe da die entsprechenden Flags gesetzt und den Puffer wieder auf Originalgröße gesetzt.

@theo416
Copy link
Author

theo416 commented Dec 8, 2024

@Slider0007

Das sieht sehr gut aus! Mit deinem neuen Testbuild Development-Branch: Increased-CONFIG_MQTT_BUFFER_SIZE (Commit: dfdeac8+) bekomme ich folgende Ausgabe:

I (13949) MQTT IF: using caCert: /config/certs/RootCA.pem
I (13969) MQTT IF: Init
I (13979) MQTT IF: Client started, waiting for established connection...
I (13989) MAINCTRL: Starting Flow...
I (14029) MAINCTRL: Round #1 started
I (14729) MQTT IF: Connected to broker

Die Verbindung zum Broker steht!

2024-12-08T19:33:59: New connection from <esp-ip>:64467 on port 8883.
2024-12-08T19:34:00: New client connected from <esp-ip>:64467 as <Hostname> (p2, c1, k750, u'<MQTT-User>').

@Slider0007
Copy link
Collaborator

Slider0007 commented Dec 8, 2024

@theo416
Danke fürs Testen.

@caco3
Zur Info. Ich hatte der Einfachheit halber deinen Branch gekapert. Es scheinen zwei Flags zu fehlen, um unsichere TLS Verbindungen wieder zu unterstützen. Dies ist aktuell (wie bisher auch) weiterhin hard codiert.

@caco3
Copy link
Collaborator

caco3 commented Dec 9, 2024

Ich hatte der Einfachheit halber deinen Branch gekapert.

Super! Danke für euren Einsatz!

Mir ist nicht klar, wieso das eine unsichere TSL-Verbindung bedingt, das Zertifikat ist doch gültig! Oder ist das wie bei selbst-signierten SSL-Zertifikaten?
Gibt es ein Szenario wo das insecure und skip nicht benötigt werden? Sprich, ist es nötig, dass wir dazu Parameter einführen? Oder braucht das sowieso jeder?

Ich habe mal einen PR dafür angelegt: #3427

@Slider0007
Copy link
Collaborator

Slider0007 commented Dec 9, 2024

Ich würde das so interpretieren, dass das Flag CONFIG_ESP_TLS_INSECURE eine Art Master-Flag ist, um dann mit weiteren Flags teils unsichere Teilaspekte aktivieren zu können, wie z.B. die Deaktivierung der Server Verifikation (Schutz gegen MITM Attacken). Dies ist das einzige Umstand, welcher "unsicher" ist. Es wird nur das Zertifikat verifiziert (das Zerifikat muss gültig sein), aber nicht der Ursprung des Zerifikats. Somit ist die Verbindung potentiell unsicher, weil nicht klar ist, wo das Zerifikat her kommt. Daher meist interessant, wenn der Endpoint im Internet liegt.

siehe Beschreibung hier: https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/kconfig.html#config-esp-tls-insecure und https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-reference/kconfig.html#config-esp-tls-skip-server-cert-verify

Es könnte sein, dass das zweite Flag CONFIG_ESP_TLS_SKIP_SERVER_CERT_VERIFY in der sdkconfig nicht zwingend gesetzt werden muss, da dies bereits in Software passiert durch Setzen von

mqtt_cfg.broker.verification.skip_cert_common_name_check = true;

Die Server Verifikation könnte der Vollständigkeit halber natürlich auch konfigurierbar gemacht werden, ist aber dann eine weitere Konfigurationshürde / Fallstrick. Es sollte von den betreuen Devs eben auch verstanden werden können, ansonsten tut man sich keinen Gefallen. Ich persönlich würde es so lassen, da die meisten Ihr Zerifikat sowieso selbst generieren und wissen wo es herkommt. Für den Fall, dass einer die Verbindung kaperen sollte, weiß dieser eben einen Zählerstand ;-)

@SybexX
Copy link
Collaborator

SybexX commented Dec 9, 2024

@Slider0007 @theo416 wie erstellt ihr die Zertifikate, bei mir will es leider nicht funktionieren^^
meine Zertifikate habe ich nach folgender Anleitung erstellt: https://mosquitto.org/man/mosquitto-tls-7.html

@theo416
Copy link
Author

theo416 commented Dec 9, 2024

@SybexX Ich habe meine PKI so aufgebaut:

Dazu hier aufklappen

CA-Zertifikat erstellen

mkdir CA

Privaten Schlüssel erzeugen

openssl genrsa -des3 -out CA/RootCA.key

PEM pass Phrase vergeben, merken und geheim halten! Sehr sehr wichtig

Öffentlichen Schlüssel dazu erzeugen

openssl req -new -x509 -days <Gültigkeitsdauer in Tagen> -key CA/RootCA.key -out CA/RootCA.crt

Daten ausfüllen (müssen nicht unbedingt alle sein)
Common Name wird später immer als "friendly Name" angezeigt

Server-Zertifikat erstellen

mkdir Server-Certs

Privaten Schlüssel erzeugen

openssl genrsa -out Server-Certs/Server_mosquitto.key 4096

Config-File anlegen

Diesen Weg habe ich gewählt, damit ich mehrere DNS-Adressen etc. angeben kann (mit und ohne Domain...)

nano Server-Certs/Server_mosquitto.conf
[req]
distinguished_name = req_distinguished_name
req_extensions = v3_req
prompt = no

[req_distinguished_name]
C = DE
ST = <Bundesland>
O = <Firmenname ö.ä.>
CN = <friendly Server-Name>

[v3_req]
keyUsage = digitalSignature
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1 = mqtt-srv.org.lan
DNS.2 = mqtt-srv
DNS.3 = <Server-IP>
<Andere CNAME's etc.>

Certificate signing request anlegen

openssl req -new -key Server-Certs/Server_mosquitto.key -out Server-Certs/Server_mosquitto.csr -config Server-Certs/Server_mosquitto.conf

Zertifikat mit CA signieren

openssl x509 -req -sha256 -days <Gültigkeitsdauer in Tagen> \
  -in Server-Certs/Server_mosquitto.csr \
  -CA CA/RootCA.crt \
  -CAkey CA/RootCA.key \
  -CAcreateserial \
  -out Server-Certs/Server_mosquitto.crt \
  -extfile Server-Certs/Server_mosquitto.conf -extensions v3_req

Zertifikat auf MQTT-Broker laden

Die Dateien Server-Certs/Server_mosquitto.key und Server-Certs/Server_mosquitto.crt auf den Broker hochladen.

Zertifikat in Config aktivieren

nano /etc/mosquitto/conf.d/ssl.conf
listener 8883

cafile /etc/mosquitto/ca_certificates/RootCA.crt
keyfile /etc/mosquitto/certs/Server_mosquitto.key
certfile /etc/mosquitto/certs/Server_mosquitto.crt
tls_version tlsv1.2

@caco3 @Slider0007 Ich schließe mich da @Slider0007 im ersten Teil an.
Den Parameter skip_cert_common_name_check in das Config-File aufzunehmen wäre aber natürlich klasse.
Ich kenne sämtliche andere gebräuchliche Anwendungen (da fallen mir so einige spontan ein), bei denen man hier den Flag setzen kann.

Hier ein kurzer Auszug aus ESP-IDF:
grafik

Was halten die anderen Devs davon? Die Hover-Hilfe könnte ich dazu auch erstellen, wenn ihr mir kurz erklärt, wie :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Release16.0.0
Projects
None yet
Development

No branches or pull requests

4 participants