MQTT TLS Config Problem

@pmayer
Habe dann Mal die IP Adresse des Servers eingetragen

Dann kam das:

homegear.err
09/08/17 11:15:04.377 Module HomeMatic BidCoS: LAN-Konfigurationsadapter "IWIL-HM-CFG-LAN": Warning: !!!Not!!! sending (encrypted): K
09/08/17 11:15:25.381 MQTT Client: Error in file MQTT/Mqtt.cpp line 108 in function void Mqtt::start(): Certificate verification is enabled, but "caFile" and "caData" are not specified for the host "143.93.197.89".
09/08/17 11:15:25.388 RPC Server (Port 2001): Error in file RPC/RPCServer.cpp line 1700 in function void Rpc::RPCServer::getSocketDescriptor(): No IP address could be found.
09/08/17 11:15:25.442 RPC Server (Port 2002): Error in file RPC/RPCServer.cpp line 1700 in function void Rpc::RPCServer::getSocketDescriptor(): No IP address could be found.
09/08/17 11:15:25.495 RPC Server (Port 2003): Error in file RPC/RPCServer.cpp line 1700 in function void Rpc::RPCServer::getSocketDescriptor(): No IP address could be found.
09/08/17 11:15:25.504 UPnP Server: Error in file UPnP/UPnP.cpp line 189 in function void UPnP::getAddress(): No IP address could be found.
09/08/17 11:15:25.505 UPnP Server: Error: Could not get IP address.
09/08/17 11:15:25.505 Warning: Not starting server, because no suitable RPC server for serving the XML description is available (Necessary settings: No SSL, no auth, webserver enabled).

Kannst du damit was anfangen muss ich doch meine CA Files einbinden?

Habe mal mein fullchain.pem eingebunden als caFile:

homegear.err

09/08/17 11:26:10.683 MQTT Client: Error in file MQTT/Mqtt.cpp line 984 in function void Mqtt::connect(): Server's hostname does not match the server certificate.

Würde sagen das LE Zertifikat geht wohl doch nicht so ohne weiteres?

… oder vom Host wird ein anderens gesendet. Das kannst du mit openssl raus finden.
Damit hast du jetzt aber alles in der Hand um auch dein self-signed zu debuggen.

Würdest du für die config files “Preformated Text” zur formatierung wählen? Ich hatte das in den ganzen Posts für dich angepasst. 6. Icon in der Leiste beim Bearbeiten.

1 Like
Vom Host wird folgendes Gesendet
CONNECTED(00000003)
depth=2 O = Digital Signature Trust Co., CN = DST Root CA X3
verify return:1
depth=1 C = US, O = Let's Encrypt, CN = Let's Encrypt Authority X3
verify return:1
depth=0 CN = smarthome.yourownsolution.de
verify return:1
---
Certificate chain
 0 s:/CN=smarthome.yourownsolution.de
   i:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
 1 s:/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
   i:/O=Digital Signature Trust Co./CN=DST Root CA X3
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIFGzCCBAOgAwIBAgISA9ZxwL5jGt2xJjuvFrLflnJoMA0GCSqGSIb3DQEBCwUA
MEoxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MSMwIQYDVQQD
ExpMZXQncyBFbmNyeXB0IEF1dGhvcml0eSBYMzAeFw0xNzA5MDYxODMyMDBaFw0x
NzEyMDUxODMyMDBaMCcxJTAjBgNVBAMTHHNtYXJ0aG9tZS55b3Vyb3duc29sdXRp
b24uZGUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC6f4TspNKAfnsi
1WixEXeIJvqEXO1OR/E+jGgiwjtYAhEcb0XB547HchaK24QNzsIuKIIvoHLnw8cy
DxL+nFiD4LCOcaFXhHm/Rs6qzmLVMGN2Q1WK5LBzqNNZxuOvCQGaNoaJKm+nPZkr
Ks+d1q8/btAwR/GQFPDGowtpQYXR+7mCTKkMbHbUOyJc/Sl7KGwwAfN25RBDwnQa
DJcX0wREFOW1tmxUI6HX4P3xlLQiUWCjfGBd6ukUsGg2U9TYYE+xqG47m6jTbfql
FCGqYW9+K1dZMhuwu2mdB9V+qeN02u1r3yJIqkrl2Oxxk7JP8duCOh/fwemDxroV
PKHglmPxAgMBAAGjggIcMIICGDAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYI
KwYBBQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFBLQpYaQ
34nYvGy5klzGkbdFz+AHMB8GA1UdIwQYMBaAFKhKamMEfd265tE5t6ZFZe/zqOyh
MG8GCCsGAQUFBwEBBGMwYTAuBggrBgEFBQcwAYYiaHR0cDovL29jc3AuaW50LXgz
LmxldHNlbmNyeXB0Lm9yZzAvBggrBgEFBQcwAoYjaHR0cDovL2NlcnQuaW50LXgz
LmxldHNlbmNyeXB0Lm9yZy8wJwYDVR0RBCAwHoIcc21hcnRob21lLnlvdXJvd25z
b2x1dGlvbi5kZTCB/gYDVR0gBIH2MIHzMAgGBmeBDAECATCB5gYLKwYBBAGC3xMB
AQEwgdYwJgYIKwYBBQUHAgEWGmh0dHA6Ly9jcHMubGV0c2VuY3J5cHQub3JnMIGr
BggrBgEFBQcCAjCBngyBm1RoaXMgQ2VydGlmaWNhdGUgbWF5IG9ubHkgYmUgcmVs
aWVkIHVwb24gYnkgUmVseWluZyBQYXJ0aWVzIGFuZCBvbmx5IGluIGFjY29yZGFu
Y2Ugd2l0aCB0aGUgQ2VydGlmaWNhdGUgUG9saWN5IGZvdW5kIGF0IGh0dHBzOi8v
bGV0c2VuY3J5cHQub3JnL3JlcG9zaXRvcnkvMA0GCSqGSIb3DQEBCwUAA4IBAQAE
R5ZpG017w6EmezNm3P/5qLAPEGM0aJpk6WHcGeiDkyj9j/Q5MlfdhIldaMiX6+Ri
kl4jdMus/7eLbVYDJkmVl0BbZ6pgQyu+OM85gajFQeBscWKQi8vX2lBkg/OS1UxH
Ywut8fNiWzJrli+X7AvuwohSbfmvUP5wr0yJyzWBbDuyuDIhkOyh00QWWrDXI8nw
KRoRPKdT14OzenXtEljPIKvluGpIBvK3+jQQUC28rP0cfRCgFzmVajNkha8JOQur
M5AuYw3g5j5P7rNi1VK6vZHHaysG1h7DN7+cuJ8dhST7VjlWNfw0x9Iy5Rg0EY08
A03ojlIsQb2/Awa66W4C
-----END CERTIFICATE-----
subject=/CN=smarthome.yourownsolution.de
issuer=/C=US/O=Let's Encrypt/CN=Let's Encrypt Authority X3
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 3163 bytes and written 434 bytes
---
New, TLSv1/SSLv3, Cipher is ECDHE-RSA-AES256-GCM-SHA384
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : ECDHE-RSA-AES256-GCM-SHA384
    Session-ID: 10A6F3D704B20085819BD77B57B5F46439E4CA8555779E6DEC84175964106499
    Session-ID-ctx:
    Master-Key: DA84582121992DD119125432E371F55D1C08D032DD830B41D1A8FDB0B1B3201E3E0F9C8BCD3E8DB6F70E1C167EDF4CAB
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    TLS session ticket lifetime hint: 300 (seconds)
    TLS session ticket:
    0000 - 03 da 6c fc 96 83 c3 d7-55 41 56 c8 c3 c7 d4 c6   ..l.....UAV.....
    0010 - 3d c6 0a d8 a5 fd c2 ab-e4 b6 ad 55 14 fe b8 9c   =..........U....
    0020 - fa 69 18 c8 2d 90 7e 11-10 08 7d f7 51 c9 3c a2   .i..-.~...}.Q.<.
    0030 - ec d6 87 eb d2 51 89 35-6d 6c 7b b1 12 e6 a3 f0   .....Q.5ml{.....
    0040 - 93 79 37 70 49 99 70 fa-1d 77 a7 22 00 c7 d8 20   .y7pI.p..w."...
    0050 - 68 c6 44 61 1b 62 6f c3-04 81 37 c1 b8 c5 4d b5   h.Da.bo...7...M.
    0060 - 13 f1 0c 90 aa a2 0e 08-16 e0 dd a6 50 ba a8 08   ............P...
    0070 - 86 44 40 dc d1 cc 9a 90-d9 8e a0 34 c5 42 26 57   .D@........4.B&W
    0080 - d8 9c 55 7f 53 18 0a b7-0d 2e ab a0 18 9c 79 1f   ..U.S.........y.
    0090 - b3 cc 74 74 57 c8 ee 18-17 81 21 6a 6f 06 28 d5   ..ttW.....!jo.(.
    00a0 - 72 2a e7 ae bd c3 e8 5f-7c 7c b3 0c 43 f3 4c a5   r*....._||..C.L.

    Start Time: 1504863989
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---
closed

Passt ja irgendwie nicht ganz mein Server heißt ja IWILR3-3 und mein Client IWILR2-4

Habe dann mal mein selbst erstelltes Zertifikat wieder eingebunden und auch ein Client Zertifikat erstellt.

Das habe ich dann folgend eingebunden.

Homegear Conf
### TLS options ###

# Set to "true" to enable SSL encryption for MQTT.
enableSSL = true

# The path to the certificate authority's certificate
caFile = /etc/homegear/m2mqtt_ca.crt

# verifyCertificate checks if the server certificate received by the
# MQTT broker is signed by one of the root CAs in /etc/ssl/certs. If you use
# a self signed certificate, please put your root certificate in that
# directory. Only disable the verification for testing purposes. Without
# verification any attacker can pose as your MQTT broker.
# Default: verifyCertificate = true
verifyCertificate = true

# The path to the PEM encoded client certificate.
certPath = /etc/homegear/client.crt

# The path to the PEM encoded client keyfile.
keyPath = /etc/homegear/client.key

Nun bekomme ich folgende Meldung im Log angezeigt.

Log

09/08/17 13:06:41.579 MQTT Client: Error in file MQTT/Mqtt.cpp line 108 in function void Mqtt::start(): Could not load client certificate and key from "/etc/homegear/client.crt" and "/etc/homegear/client.key": Decryption has failed.

Danke @pmayer für den Tipp mit der Formatierung!

Ok,

hier muss glaube @sathya was sagen, in welchem Format homegear das client certificate erwartet.

Gerne!

Hallo @ZPascal,

ich habe jetzt nicht den ganzen Thread gelesen, aber die Zertifikate müssen im PEM-Format vorliegen und von einer (oder deiner) Zertifizierungsstelle signiert sein (Anleitung: https://wiki.ubuntuusers.de/CA/#Erstellen-der-neuen-CA).

Hier einmal drei Beispielzertifikate, mit denen es in jedem Fall funktionieren sollte: mqtt_certs.zip (7.3 KB).

Viele Grüße

Sathya

Nachtrag: Die zugehörigen Zeilen in der mqtt.conf:

### TLS options ###

# Set to "true" to enable SSL encryption for MQTT.
enableSSL = true

# The path to the certificate authority's certificate
caFile = /etc/homegear/mqttca.crt

# verifyCertificate checks if the server certificate received by the
# MQTT broker is signed by one of the root CAs in /etc/ssl/certs. If you use
# a self signed certificate, please put your root certificate in that
# directory. Only disable the verification for testing purposes. Without
# verification any attacker can pose as your MQTT broker.
# Default: verifyCertificate = true
verifyCertificate = true

# The path to the PEM encoded client certificate.
certPath = /etc/homegear/mqtt.crt

# The path to the PEM encoded client keyfile.
keyPath = /etc/homegear/mqtt.key

Nachtrag 2: Decryption has failed. => Ist dein Client-Key verschlüsselt? Die Datei muss anfangen mit -----BEGIN RSA PRIVATE KEY-----.

Hallo @sathya,

vielen Dank für deine Antwort! Meines Wissens fing die Datei mit der “–BEGIN RSA PRIVATE KEY-----” Zeile an. Leider kann ich aufgrund der Beendigung meiner Abschlussarbeit, diesen Lösungsversuch nicht mehr am System implementieren. Ich habe innerhalb meiner Arbeit, diesen Thread unter anderem als Quelle für die Implementierung der Verschlüsselung angegeben. Die Realisierung der Sicherheit wurde mittels einer Tunnel Verbindung zwischen den verschieden Devices realisiert. Ich hoffe dieser Thread kann anderen Usern der Software Homegear weiterhelfen und bedanke mich für den guten Support @pmayer @sathya! Des Weiteren würde ich dir gerne dir @sathya für das sehr gute Programm und die in die Programmierung investierte Zeit danken!

Viele Grüße
ZPascal

2 Likes