Autor Thema: HTTPMOD: SSL_verify_mode must be a number and not a string  (Gelesen 243 mal)

Offline Flachzange

  • Full Member
  • ***
  • Beiträge: 167
Ich musste bei einem HTTPMOD-Device SSL_verify_mode setzen:
attr <dev> SSL_verify_mode,SSL_VERIFY_NONE
Beim Auruf erscheint folgendes im Log und FHEM "steht" danach. Ich habe jetzt den Prozess nicht im Detail überprüft, aber FHEM ist danach nicht mehr erreichbar:

Zitat
SSL_verify_mode must be a number and not a string at /usr/share/perl5/IO/Socket/SSL.pm line 2386.

Ich habe mich jetzt mit

attr <dev> SSL_verify_mode,0
beholfen, aber ist halt unsauber.

Ist das ein Sonderfall bei mir gerade oder ein grundsätzliches Problem? Gut wäre ja, wenn der Fehler auch irgendwie gecatched würde.

Gruß
Chris

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25594
Antw:HTTPMOD: SSL_verify_mode must be a number and not a string
« Antwort #1 am: 17 September 2022, 15:20:37 »
Zitat
Gut wäre ja, wenn der Fehler auch irgendwie gecatched würde.
Etwas gemein von start_SSL, statt Fehlermeldung gleich die() aufzurufen.
Ich habe jetzt IO::Socket:SSL->start_SSL in eval gepackt, auch in der nichtblockierenden Variante.
Ich vermute noch ein Problem in HTTPMOD, da der von HttpUtils.pm jetzt zurueckgelieferte Fehler nicht ausgegeben wird.
Immerhin stuerzt FHEM nicht mehr ab.

Wegen den Werten fuer dieses Attribut habe ich in /usr/include/opsnssl/ssl.h Folgendes gefunden:
/*
 * use either SSL_VERIFY_NONE or SSL_VERIFY_PEER, the last 3 options are
 * 'ored' with SSL_VERIFY_PEER if they are desired
 */
# define SSL_VERIFY_NONE                 0x00
# define SSL_VERIFY_PEER                 0x01
# define SSL_VERIFY_FAIL_IF_NO_PEER_CERT 0x02
# define SSL_VERIFY_CLIENT_ONCE          0x04
# define SSL_VERIFY_POST_HANDSHAKE       0x08
Die Voreinstellung ist SSL_VERIFY_NONE bzw. 0, d.h.  attr <dev> sslArgs SSL_verify_mode,0 ist ueberfluessig.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18223
  • Stoppt den Unicode-Irrsinn!
Antw:HTTPMOD: SSL_verify_mode must be a number and not a string
« Antwort #2 am: 17 September 2022, 15:49:48 »
Ich vermute noch ein Problem in HTTPMOD, da der von HttpUtils.pm jetzt zurueckgelieferte Fehler nicht ausgegeben wird.

Hallo Rudi,
ich habe Deine neue Version mal getestet und in HTTPMOD eine zusätzliche Logausgabe für die Fehlermeldung eingebaut.

###################################
# read / parse new data from device
# - callback for non blocking HTTP
sub ReadCallback {
    my $huHash  = shift;                        # hash reference passed to HttpUtils_NonblockingGet
    my $err     = shift;                        # error message from HttpUtils_NonblockingGet
    my $body    = shift // '';                  # HTTP body received
    my $hash    = $huHash->{DEVHASH};           # our device hash
    my $name    = $hash->{NAME};                # our device name
    my $request = $hash->{REQUEST};             # hash ref to the request that was sent       
    my $context = $request->{'context'};        # attribute context (reading, get, set, sid)
    my $num     = $request->{'num'};
    my $type    = $request->{'type'};           # type of request that was sent (like get01, update or auth01)
    my $header  = $huHash->{httpheader} // '';  # HTTP headers received
    delete $huHash->{DEVHASH};
    $hash->{HttpUtils} = $huHash;               # make the httpUtils hash available in case anyone wants to use variables
    $hash->{BUSY}      = 0;

    Log3 $name, 5, "$name: ReadCallback called from " . FhemCaller();
++    Log3 $name, 5, "$name: error >>>>> $err";



In HTTPMOD scheint bei gesetztem Attribut sslArgs keine Fehlermeldung anzukommen:

2022.09.17 15:42:39 5: covid_germany: ReadCallback called from HttpUtils_Connect2NonblockingSSL
2022.09.17 15:42:39 5: covid_germany: error >>>>>

Im Erfolgsfall (wenn das Attribut sslArgs nicht gesetzt ist) sieht das an der Stelle so aus:

2022.09.17 15:44:11 5: covid_germany: ReadCallback called from __ANON__
2022.09.17 15:44:11 5: covid_germany: error >>>>>
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 25594
Antw:HTTPMOD: SSL_verify_mode must be a number and not a string
« Antwort #3 am: 17 September 2022, 16:11:30 »
Zitat
In HTTPMOD scheint bei gesetztem Attribut sslArgs keine Fehlermeldung anzukommen:
Wo Du Recht hast... $@ wird von HttpUtils_Close entfernt.
Habs gefixt.
Und revidiere meine Aussage bzgl Problem in HTTPMOD. :)

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 18223
  • Stoppt den Unicode-Irrsinn!
Antw:HTTPMOD: SSL_verify_mode must be a number and not a string
« Antwort #4 am: 17 September 2022, 16:16:23 »
sieht gut aus...

2022.09.17 16:14:57 5: covid_germany: ReadCallback called from HttpUtils_Connect2NonblockingSSL
2022.09.17 16:14:57 5: covid_germany: Read callback Error LogLvl set to 3, regex
2022.09.17 16:14:57 3: covid_germany: Read callback: Error: SSL_verify_mode must be a number and not a string at /usr/share/perl5/IO/Socket/SSL.pm line 2386.

-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Lesen gefährdet die Unwissenheit!