(Gelöst) Warnung 'SSL_verify_mode'

Begonnen von Wolle02, 15 April 2017, 13:58:59

Vorheriges Thema - Nächstes Thema

Wolle02

Hallo zusammen,

seit geraumer Zeit finde ich im FHEM-Logfile immer wieder folgende Warnmeldung:

*******************************************************************
Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client
is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER
together with SSL_ca_file|SSL_ca_path for verification.
If you really don't want to verify the certificate and keep the
connection open to Man-In-The-Middle attacks please set
SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application.
*******************************************************************
  at /usr/local/FHEM/share/fhem/FHEM/HttpUtils.pm line 352.


Bislang hatte ich nie Zeit mal danach zu schauen aber nun wollte ich dieser SSL Problematik mal auf den Grund gehen. Leider bin ich dabei promt auf einen langen Schlauch gestoßen und auf diesem stehen geblieben.  ;)
Unter der Meldung steht ja, dass diese von HttpUtils.pm stammt; aber wie kann ich denn hier nun den SSL_verify_mode ändern?
Oder stammt die Meldung von einem anderen Modul und wird nur über HttpUtils.pm ausgegeben? Wenn ja, wie kann ich herausfinden welches Modul die Meldung erzeugt?

Danke fürs Wegweisen.

Gruß
Wolle

rudolfkoenig

#1
Ich habe es so verstanden, dass die bisherige Voreinstellung fuer SSL_verify_mode (SSL_VERIFY_NONE) der Bibliothek IO::Socket::SSL peinlich ist, und sie es aendern moechten. Ich habe eine Version eingecheckt, wo das explizit gesetzt ist, das sollte laut Doku reichen.

Ich habe mit was Altes ohne Versionsnummer, Version 2.016 und Version 2.027 von IO::Socket::SSL keine Probleme.
Kannst du bitte rauskriegen, welche Version von IO::Socket::SSL du installiert hast?

Falls ein FHEM-Modul das Zertifikat der Gegenseite verifizieren will, dann muss es beim Aufruf von HttpUtils_NonblockingGet $hash->{sslargs}{SSL_verify_mode} = SSL_verify_PEER setzen.


Wolle02

Hallo Rudi,

aha, dann ist wohl scheinbar meine Perlversion zu alt. Meine IO::Socket::SSL scheint die Version 1.84 zu sein. Hier finde ich auch folgende Einträge:

# global defaults
my %DEFAULT_SSL_ARGS = (
    SSL_check_crl => 0,
    SSL_version => 'SSLv23:!SSLv2',
    SSL_verify_callback => undef,
    SSL_verifycn_scheme => undef,  # don't verify cn
    SSL_verifycn_name => undef,    # use from PeerAddr/PeerHost
    SSL_npn_protocols => undef,    # meaning depends whether on server or client side
    SSL_honor_cipher_order => 0,   # client order gets preference
    SSL_cipher_list => 'ALL:!LOW',

    # default for SSL_verify_mode should be SSL_VERIFY_PEER for client
    # for now we keep the default of SSL_VERIFY_NONE but complain, if
    # somebody uses this implicit default
    # SSL_verify_mode => undef,  # set to undef to enable secure default
    SSL_verify_mode => SSL_VERIFY_NONE,
);


Na dann werde ich wohl mal ein Perlversionsupdate machen und dann schaun mer mal.

Vielen Dank derweil.

Wolle02

So, ich habe nun Perl von v5.16.0 auf v5.24.0 upgedatet; damit einhergehend wurde IO::Socket::SSL auf v2.037 upgedatet. Seither ist die Warnmeldung nicht mehr aufgetaucht.