Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

JSON Abruf endet mit Fehler SSL routines::tlsv1 alert

Begonnen von Rewe2000, 20 November 2024, 21:31:40

Vorheriges Thema - Nächstes Thema

Rewe2000

Hallo,

ich rufe regelmäßig mit JsonMod vom https://www.imis.bfs.de die aktuellen ODL Werte ab, seit heute 14:00 Uhr kommt ständig folgende Fehlermeldung:
2024.11.20 20:50:32 2: [Json_Strahlung_Abenberg] http request error:  SSL connect attempt failed error:0A00042E:SSL routines::tlsv1 alert protocol version
Gebe ich die URL am Browser (Firefox) ein, so erscheinen die Werte (für mich) fehlerfrei und aktuell:
https://www.imis.bfs.de/ogc/opendata/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=opendata:odlinfo_timeseries_odl_1h&outputFormat=application/json&viewparams=kenn:095761111&sortBy=end_measure+D&maxFeatures=1

type    "FeatureCollection"
features   
0   
type    "Feature"
id    "odlinfo_timeseries_odl_1h.fid-6d3bb78_1934b339899_-306e"
geometry   
type    "Point"
coordinates   
0    10.97
1    49.24
geometry_name    "geom"
properties   
id    "DEZ2991"
kenn    "095761111"
name    "Abenberg"
start_measure    "2024-11-20T18:00:00Z"
end_measure    "2024-11-20T19:00:00Z"
value    0.109
unit    "µSv/h"
validated    1
nuclide    "Gamma-ODL-Brutto"
duration    "1h"
totalFeatures    167
numberMatched    167
numberReturned    1
timeStamp    "2024-11-20T20:12:00.806Z"
crs   
type    "name"
properties   
name    "urn:ogc:def:crs:EPSG::4326"

So wie ich die Fehlermeldung interpretiere, habe ich da Probleme mit dem SSL Abruf, der TLS Protokollversion.
Könnt Ihr mir da bitte einen Tipp geben wie ich den Fehler wieder beheben kann. Muss ich da auf eine höhere TLS Version in Linux updaten?

Fhem läuft auf Raspi4 Bookworm und Fhem ist aktuell.
Im Device global ist bei mir das Attribut sslVersion     TLSv12:!SSLv3 gesetzt

Mein JsonMod-Device zum Abruf der Daten (disable 1 ist nur aktuell gesetzt):
Internals:
   API_LAST_MSG  SSL connect attempt failed error:0A00042E:SSL routines::tlsv1 alert protocol version
   API_LAST_RES 1732132232.18247
   DEF        https://www.imis.bfs.de/ogc/opendata/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=opendata:odlinfo_timeseries_odl_1h&outputFormat=application/json&viewparams=kenn:095761111&sortBy=end_measure+D&maxFeatures=1
   FUUID      631f444b-f33f-7df9-89bd-59a0564cc391e662
   NAME       Json_Strahlung_Abenberg
   NEXT       NEVER
   NR         520
   SOURCE     https://www.imis.bfs.de/ogc/opendata/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=opendata:odlinfo_timeseries_odl_1h&outputFormat=application/json&viewparams=kenn:095761111&sortBy=end_measure+D&maxFeatures=1 ()
   STATE      Abenberg: 0.110 µSv/h
   SVN        28481 2024-02-05 22:14:33 UTC
   TYPE       JsonMod
   eventCount 915
   CONFIG:
     IN_REQUEST 0
     SOURCE     https://www.imis.bfs.de/ogc/opendata/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=opendata:odlinfo_timeseries_odl_1h&outputFormat=application/json&viewparams=kenn:095761111&sortBy=end_measure+D&maxFeatures=1
     SECRET:
   READINGS:
     2024-11-20 14:05:01   Stand           20.11.2024 12:00 Uhr UTC
     2024-11-20 14:05:01   end_measure     2024-11-20T12:00:00Z
     2024-11-20 14:05:01   name            Abenberg
     2024-11-20 14:05:01   value           0.110
   hmccu:
Attributes:
   DbLogExclude .*
   disable    1
   group      Umwelt
   icon       hue_filled_bloom
   interval   5/30 * * * *
   readingList single(jsonPathf('$.features.0.properties.value', '%.3f'), 'value', 0);
single(jsonPath('$.features.0.properties.end_measure'), 'end_measure', 0);
single(jsonPath('$.features.0.properties.name'), 'name', 0)
   room       Wetter
   stateFormat name: value µSv/h
   userReadings Stand {my $Messende = ReadingsVal("Json_Strahlung_Abenberg","end_measure","");; return substr($Messende,8,2).".".substr($Messende,5,2).".".substr($Messende,0,4)." ".substr($Messende,11,5)." Uhr UTC"}

Für Tipps wie ich den Fehler beheben kann bin ich dankbar.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

betateilchen

Das dürfte eher an Deiner Laufzeitumgebung liegen denn an JsonMod oder FHEM selbst.
Bei mir funktioniert die von Dir genannte URL fehlerfrei und ohne Auffälligkeiten im Log:

defmod t1 JsonMod https://www.imis.bfs.de/ogc/opendata/ows?service=WFS&version=1.1.0&request=GetFeature&typeName=opendata:odlinfo_timeseries_odl_1h&outputFormat=application/json&viewparams=kenn:095761111&sortBy=end_measure+D&maxFeatures=1
attr t1 readingList complete()

setstate t1 2024-11-21 08:03:46 .computedReadings timeStamp,features.0.id,features.0.geometry_name,crs.type,features.0.geometry.type,features.0.type,features.0.properties.start_measure,features.0.properties.end_measure,type,features.0.properties.value,features.0.properties.kenn,features.0.properties.unit,features.0.geometry.coordinates.0,features.0.properties.nuclide,features.0.properties.id,totalFeatures,features.0.geometry.coordinates.1,features.0.properties.name,numberMatched,features.0.properties.validated,features.0.properties.duration,crs.properties.name,numberReturned
setstate t1 2024-11-21 08:03:46 crs.properties.name urn:ogc:def:crs:EPSG::4326
setstate t1 2024-11-21 08:03:46 crs.type name
setstate t1 2024-11-21 08:03:46 features.0.geometry.coordinates.0 10.97
setstate t1 2024-11-21 08:03:46 features.0.geometry.coordinates.1 49.24
setstate t1 2024-11-21 08:03:46 features.0.geometry.type Point
setstate t1 2024-11-21 08:03:46 features.0.geometry_name geom
setstate t1 2024-11-21 08:03:46 features.0.id odlinfo_timeseries_odl_1h.fid-6d3bb78_1934d88b397_-6d91
setstate t1 2024-11-21 08:03:46 features.0.properties.duration 1h
setstate t1 2024-11-21 08:03:46 features.0.properties.end_measure 2024-11-21T06:00:00Z
setstate t1 2024-11-21 08:03:46 features.0.properties.id DEZ2991
setstate t1 2024-11-21 08:03:46 features.0.properties.kenn 095761111
setstate t1 2024-11-21 08:03:46 features.0.properties.name Abenberg
setstate t1 2024-11-21 08:03:46 features.0.properties.nuclide Gamma-ODL-Brutto
setstate t1 2024-11-21 08:03:46 features.0.properties.start_measure 2024-11-21T05:00:00Z
setstate t1 2024-11-21 08:03:46 features.0.properties.unit µSv/h
setstate t1 2024-11-21 08:03:46 features.0.properties.validated 1
setstate t1 2024-11-21 08:03:46 features.0.properties.value 0.108
setstate t1 2024-11-21 08:03:46 features.0.type Feature
setstate t1 2024-11-21 08:03:46 numberMatched 167
setstate t1 2024-11-21 08:03:46 numberReturned 1
setstate t1 2024-11-21 08:03:46 timeStamp 2024-11-21T07:03:46.163Z
setstate t1 2024-11-21 08:03:46 totalFeatures 167
setstate t1 2024-11-21 08:03:46 type FeatureCollection
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Zitat von: Rewe2000 am 20 November 2024, 21:31:40Im Device global ist bei mir das Attribut sslVersion     TLSv12:!SSLv3 gesetzt

Bei mir ist dieses Attribut in keiner meiner FHEM Installationen gesetzt.
Nimm es doch mal raus und teste dann nochmal.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Rewe2000

Hallo betateilchen,

vielen Dank für den Test.

Ich kann mich auch nicht erinnern in dieser Zeit gestern etwas umgestellt zu haben, das letzte Linux und Fhem Update hatte ich vor 2 Wochen durchgeführt.
Heute Morgen hatte ich dann noch Updates durchgeführt (Fhem und Linux) und meine Systeme komplett neu gestartet, hat aber nicht geholfen das Problem zu lösen.

Aus global habe ich das Attribut sslVersion entfernt, so wie ich die Commandref lese, sollte aber sslVersion  TLSv12:!SSLv3 eh Standard sein:
ZitatsslVersion
Setzt die akzeptierten Crypto-Algorithmen im TcpServices Hilfsmodul. Die Voreinstellung TLSv12:!SSLv3 wird als sicherer erachtet als die vorherige SSLv23:!SSLv3:!SSLv2, aber sie kann Probleme mit nicht ausreichend aktualisierten Netzwerk-Diensten verursachen.

Bingo!
Das war die Ursache für mein Problem, jetzt funktioniert die Abfrage wieder.

Vielen Dank für den Tipp und deine Hilfe.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

passibe

Also der Server des bfs schafft TLS Version 1.3:
$ curl -vI https://www.imis.bfs.de/ogc/opendata/ows\?service\=WFS\&version\=1.1.0\&request\=GetFeature\&typeName\=opendata:odlinfo_timeseries_odl_1h\&outputFormat\=application/json\&viewparams\=kenn:095761111\&sortBy\=end_measure+D\&maxFeatures\=1
* Connected to www.imis.bfs.de (193.174.230.115) port 443
[...]
* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384 / [blank] / UNDEF

Das müsste doch heißen, dass
Zitat von: Rewe2000 am 21 November 2024, 10:51:32sslVersion  TLSv12:!SSLv3
dummerweise TLS Version 1.3 ausschließt? Was natürlich heutzutage Quatsch ist.

Müsste man die Empfehlung in der commandref (finde das grds. gar nicht so schlecht, dass das da steht) dann nicht auf
sslVersion TLSv13:TLSv12:!SSLv3ändern?
Wobei ich beim überfliegen der zugehörigen Doku noch nicht so ganz schlau daraus werde, ob TLSv12 jetzt automatisch TLSv13, also die höhere Version, mitumfasst.

Hab grade keine Zeit zum testen, aber vielleicht weiß das ja jemand hier und könnte dann auch die Commandref entsprechend anpassen, sollte der dortige Vorschlag tatsächlich TLS Version 1.3 ausschließen.

Rewe2000

Hallo,

was mich verwirrt, es macht einen Unterschied ob ich unter dem Attribut sslVersion TLSv12:!SSLv3 eintrage oder ob ich dieses lösche und somit die Standardeinstellung, gemäß Commandref TLSv12:!SSLv3 verwende. Eigentlich würde ich nach Studium der Doku hier als Anwender keinen Unterschied erwarten.

Es wäre prima wenn ein Kundiger mal nachgucken könnte, ob die Beschreibung in der Commandref noch so passt.
Wollte eben ein Ticket im passenden Forumsbereich hierzu eröffnen, aber leider kann ich unter Help for Global nicht erkennen, welcher Bereich das ist.

Zitat von: passibe am 21 November 2024, 17:17:53Hab grade keine Zeit zum testen, aber vielleicht weiß das ja jemand hier und könnte dann auch die Commandref entsprechend anpassen, sollte der dortige Vorschlag tatsächlich TLS Version 1.3 ausschließen.

sslVersion TLSv13:TLSv12:!SSLv3 Habe ich gerade bei mir getestet, es bringt folgenden Fehler bei Abruf der URL unter #1:
cannot set multiple SSL protocols in SSL_version at /usr/share/perl5/IO/Socket/SSL.pm line 670.
Aber wie schon geschrieben, nach Löschen des Attributes sslVersion funktioniert es Problemlos.

Gruß Reinhard
Fhem 6.3 auf Raspberry Pi4 SSD mit Raspbian Bookworm, Homematic, Homematic IP, CCU3 mit RapberryMatic, WAGO 750-880, E3DC S10E Hauskraftwerk, E3DC Wallbox, my-PV AC ELWA-E Heizstab, Fritz!Box 7590, KIA Bluelinky

passibe

Ne, wenn du es löschst greift der Standard von IO::Socket:SSL, der da lautet:
ZitatThe default SSL_version is 'SSLv23:!TLSv1:!TLSv1_1:!SSLv3:!SSLv2'. This means, that the handshake format is compatible to SSL2.0 and higher, but that the successful handshake is limited to TLS1.2 and higher, that is no SSL2.0, SSL3.0, TLS 1.0 or TLS 1.1 because these versions have serious security issues and should not be used anymore.

Ich glaube dieser Default ist damit aber gar nicht so schlecht?
Verstehe dann nicht ganz, was die Empfehlung in der Commandref bezwecken wollte – nur das Handshake-Format anheben?

betateilchen

Historisch gewachsen.
Das Attribut wurde zu einer Zeit eingeführt, zu der noch nicht alle FHEM-Installationen mit aktuellen ssl-libraries auf ihren Hardwareplattformen liefen.

Heute braucht das Attribut vermutlich wirklich niemand mehr. Aber wer es irgendwann mal gesetzt hat, denkt meist nicht daran, nach Updates zu prüfen, ob irgendwas noch gebraucht wird oder nach dem Update entbehrlich ist. Das ist nicht nur bei diesem Attribut so.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!