[gelöst] https Problem nach FHEM update

Begonnen von Roli1606, 19 März 2015, 20:49:17

Vorheriges Thema - Nächstes Thema

Roli1606

Ich habe mal noch ein paar sachen nachgeholt. Hier ist die Ausgabe von
find /usr/share/perl5/IO -name *.pm | xargs grep "\$VERSION.*="

root@raspberrypi:~# find /usr/share/perl5/IO -name *.pm | xargs grep "\$VERSION.*="
/usr/share/perl5/IO/Socket/INET6.pm:$VERSION = "2.69";
/usr/share/perl5/IO/Socket/IP.pm:our $VERSION = '0.16';
/usr/share/perl5/IO/Socket/SSL.pm:      $VERSION = '1.76';


und Hier Nochmal die Ausgabe von

sudo netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8083            0.0.0.0:*               LISTEN      2339/perl
tcp        0      0 0.0.0.0:8084            0.0.0.0:*               LISTEN      2339/perl
tcp        0      0 0.0.0.0:8085            0.0.0.0:*               LISTEN      2339/perl
tcp        0      0 0.0.0.0:1878            0.0.0.0:*               LISTEN      2339/perl
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      2219/sshd
tcp        0      0 0.0.0.0:631             0.0.0.0:*               LISTEN      2125/cupsd
tcp        0      0 0.0.0.0:7072            0.0.0.0:*               LISTEN      2339/perl
udp        0      0 0.0.0.0:5353            0.0.0.0:*                           2088/avahi-daemon:
udp        0      0 0.0.0.0:45053           0.0.0.0:*                           2088/avahi-daemon:
udp        0      0 0.0.0.0:631             0.0.0.0:*                           2125/cupsd
udp        0      0 192.168.170.10:123      0.0.0.0:*                           2182/ntpd
udp        0      0 127.0.0.1:123           0.0.0.0:*                           2182/ntpd
udp        0      0 0.0.0.0:123             0.0.0.0:*                           2182/ntpd


und dann noch
sudo fuser 8083/tcp

8083/tcp:             2339
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Patrik.S

Die /root/.cpan/ werden wohl nur eine Art Arbeitsverzeichnis für cpan selbst sein.

Interessant wäre, welche Module dein Fhem anzieht, wenn es gestartet wird.
Unter dem zusätzlichen Pfad /usr/local/share/perl/5.14.2/ werden sicher auch die anderen Modulew zu finden sein.


Auch wenn es wahrscheinlich nicht viel bringen wird, aber baue mal in die /opt/fhem/FHEM/TcpServerUtils.pm nach dem "use ..." Block am Anfang noch dieses Debugging ein:
use IO::Socket::SSL qw(debug3);

Damit entstehen ein paar wenige Zeilen in der fhem.log aber auch auf der Konsole auf StdOut.
Vielleicht gibt das ja etwas mehr Info.

Roli1606

Das einzige was im LOG Steht
´2015.03.22 20:51:22 1: FHEMWEB SSL/HTTPS error: Illegal seek
2015.03.22 20:51:23 1: FHEMWEB SSL/HTTPS error: Illegal seek
2015.03.22 20:51:23 1: FHEMWEB SSL/HTTPS error: Illegal seek
2015.03.22 20:51:23 1: FHEMWEB SSL/HTTPS error: Illegal seek
2015.03.22 20:51:23 1: FHEMWEB SSL/HTTPS error: Illegal seek
2015.03.22 20:51:23 1: FHEMWEB SSL/HTTPS error: Illegal seek
2015.03.22 20:51:23 1: FHEMWEB SSL/HTTPS error: Illegal seek
2015.03.22 20:51:23 1: FHEMWEB SSL/HTTPS error: Illegal seek
2015.03.22 20:51:23 1: FHEMWEB SSL/HTTPS error: Illegal seek
2015.03.22 20:51:23 1: FHEMWEB SSL/HTTPS error: Illegal seek


das stand vorher auch schon drin. Habe im Browser nur einmal auf reload gedrückt.
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Patrik.S

Ffem restartet??

Ok in der fhem.log steht das nicht.
Bei mir kommt "ungefragt" auf der Konsole (Putty) sowas:

DEBUG: .../IO/Socket/SSL.pm:1690: free ctx 33533720 open=31315616 33533720 31316080
DEBUG: .../IO/Socket/SSL.pm:1698: OK free ctx 33533720
DEBUG: .../IO/Socket/SSL.pm:1653: new ctx 33603120
DEBUG: .../IO/Socket/SSL.pm:1061: start handshake
DEBUG: .../IO/Socket/SSL.pm:569: starting sslifying
DEBUG: .../IO/Socket/SSL.pm:612: Net::SSLeay::accept -> -1
DEBUG: .../IO/Socket/SSL.pm:612: Net::SSLeay::accept -> 1
DEBUG: .../IO/Socket/SSL.pm:660: handshake done, socket ready


Roli1606

Da kommt unter anderem das raus. Ich denke mal das ist die Relevante stelle.

DEBUG: .../IO/Socket/SSL.pm:1068: start handshake
DEBUG: .../IO/Socket/SSL.pm:618: starting sslifying
DEBUG: .../IO/Socket/SSL.pm:1407: SSL structure creation failed


Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Patrik.S

Eigentlich kann man wohl mit $Net::SSLeay::trace = 4 die Debug Ausgabe von SSLeay einschalten, aber bei mir ist da nichts dabei entstanden. Keine Ahnung ob ich das an der falschen Stelle eingebaut habe, selbst ein hartes ändern an zentraler Stelle in der /usr/lib/perl5/Net/SSLeay.pm in der Zeile hat nichts gebracht.
# 0=no warns, 1=only errors, 2=ciphers, 3=progress, 4=dump data
$Net::SSLeay::trace = 4;  # Do not change here, use
                          # $Net::SSLeay::trace = [1-4]  in caller


Du könntest in die neuere ./IO/Socket/SSL.pm Datei vor der Zeile 627 wo der Fehler "SSL structure creation failed" geworfen wird diese 6 DEBUG(2, ...); Zeilen einbauen:

DEBUG(2, "self: $self" );
DEBUG(2, "args: $args" );
DEBUG(2, "socket: $socket" );
DEBUG(2, "arg_hash: $arg_hash" );
DEBUG(2, "ctx: $ctx" );
DEBUG(2, "fileno: $fileno" );
                $ssl = ${*$socket}{'_SSL_object'} = Net::SSLeay::new($ctx->{context})
                        || return $socket->error("SSL structure creation failed");


Dadurch kommen nach dem "starting sslifying" noch 6 neue Zeilen auf StdOut, bei mir sehen die so aus:
DEBUG: .../IO/Socket/SSL.pm:569: starting sslifying
DEBUG: .../IO/Socket/SSL.pm:577: self: IO::Socket::SSL=GLOB(0x2539ba0)
DEBUG: .../IO/Socket/SSL.pm:578: args: HASH(0x2539cd8)
DEBUG: .../IO/Socket/SSL.pm:579: socket: IO::Socket::SSL=GLOB(0x2539ba0)
DEBUG: .../IO/Socket/SSL.pm:580: arg_hash: HASH(0x2539af8)
DEBUG: .../IO/Socket/SSL.pm:581: ctx: IO::Socket::SSL::SSL_Context=HASH(0x253a140)

DEBUG: .../IO/Socket/SSL.pm:582: fileno: 5

Aber das wird uns wahrscheinlich nicht weiterhelfen.....


Ändere dann mal in der Datei /opt/fhem/FHEM/TcpServerUtils.pm die SSL_version auf diesen Wert, dann kann dein Server nur TLSv1, sollte aber auch wieder gehen und zumindest SSLv3/SSLv2 sind nicht möglich
my $ret = IO::Socket::SSL->start_SSL($clientinfo[0], {
....
SSL_version => 'TLSv1:!SSLv3:!SSLv2',


Der selbe Test mit TLSv1.1, ob das auch geht
my $ret = IO::Socket::SSL->start_SSL($clientinfo[0], {
....
SSL_version => 'TLSv11:!SSLv3:!SSLv2',

Roli1606

Bei mir kommen die Zeilen so raus

DEBUG: .../IO/Socket/SSL.pm:1074: start handshake
DEBUG: .../IO/Socket/SSL.pm:618: starting sslifying
DEBUG: .../IO/Socket/SSL.pm:627: 2
DEBUG: .../IO/Socket/SSL.pm:628: 2
DEBUG: .../IO/Socket/SSL.pm:629: 2
DEBUG: .../IO/Socket/SSL.pm:630: 2
DEBUG: .../IO/Socket/SSL.pm:631: 2
DEBUG: .../IO/Socket/SSL.pm:632: 2
DEBUG: .../IO/Socket/SSL.pm:1413: SSL structure creation failed


bei beiden  TLSV1 und  TLS11 Variante kommt die meldung

invalid SSL_version specified at usr/local/share/perl/5.14.2/IO/Socket/SSL.pm
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Roli1606

Mir ist gerade aufgefallen das ich mit keiner SSL Version mehr auf fhemweb zugreifen kann. Ich stelle erst mal eine sicherung wieder her damit überhaupt was läuft.
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Patrik.S

Ich wollte jetzt deinen Fall auf meinem RPi nachstellen und hatte gestern ein Update der Perl Installation angestoßen mit dem erwähnten Befehl
perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'

Aber die Installation bricht am Ende ab und vorher werden noch 48 Module nicht installiert mit dem Hinweis
....is part of the perl-5.20.0 distribution. To install that, you need to run
  force install warnings::register   --or--


Und davor kommt z.B. bei IP::Socket::SSL und einigen anderen sowas
Makefile:879: recipe for target 'test_dynamic' failed
make: *** [test_dynamic] Error 255
  SULLR/IO-Socket-SSL-2.012.tar.gz
  /usr/bin/make test -- NOT OK
//hint// to see the cpan-testers results for installing this module, try:
  reports SULLR/IO-Socket-SSL-2.012.tar.gz
Running make install
  make test had returned bad status, won't install without force



Am Ende knallt es dann bei
Running make install
  Make had returned bad status, install seems impossible


Lange Rede, kurzer Sinn. Ich kann deine Installation bei mir nicht nachstellen und gehe auf mein Backup zurück.

Was noch sein könnte, warum bei dir TLSv1 und TLSv11 nicht geht.
Hast du den problematischen Patch in der IP::Socket::SSL vorgenommen, wo ein $ in der Zeile entfernt wird?
Original:
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i
Neu:
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i


Roli1606

Ich bin gerade mit FHEM auf einen Cubietruck umgezogen. Werde in den nächsten Tagen den Raspi etwas verändern damit wir den Fehler weiter suchen können.

Fehlermeldungen hatte ich auch ein paar bei dem Update.

Melde mich wieder wenn ich die Problem Zeile in der IO::Socket:SSL untersucht habe.

Gruß Roland
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Roli1606

So mein FHEM hat bis heute auf dem Cubietruck problemlos gelaufen. Habe heute auch dort mal wieder ein Update in FHEM web durchgeführt und siehe da, das gleich Problem wie beim Raspi.

Ich habe dann mal nach der geänderten Zeile in der SSL.pm (ich denke du meintest IO::Socket::SSL und nicht IP::Socket...) auf dem alten Raspi gesucht. Da habe ich die Zeile nicht gefunden.
Dann habe ich auf dem Cubietruck danach gesucht. Dort habe ich die Datei an einem anderen Ort usr/share/Perl5/IO/Socket/SSL.pm gefunden. In Zeile 1490 habe ich dann das $ Zeichen entfernt. Nun kann ich wieder per FHEMWEB mit https zugreifen.

Schönen Gruß und frohe Ostern Roland
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Calle78

Ich hatte die gleiche Fehlermeldung aber die Ursache war bei mir anders gelagert.
Bei mir hat es durch ein Update in der TcpServerUtils.pm die einkommentierte Zeile
SSL_version => $SSLv23:!SSLv3:!SSLv2 gekillt. Nun stand in der Datei die Variable:
SSL_version => $sslVersion,
die definiert war als:
AttrVal("global", "sslVersion", "TLSv12:!SSLv3"));
Eine Änderung der Zeile zurück auf
AttrVal("global", "sslVersion", "SSLv23:!SSLv3:!SSLv2"));
hat mir den Zugriff per SSL wieder ermöglicht.
Hoffe das hilft jemandem

ciao Carlo
6,RPi4,Buster,HMLAN,HMIP,HUE,ZigBee,piVCCU,C868,C433,JEELINK,ESA2000,IRT1500,HMSECSC2,HMCCTC,HMSECSD,HM132030,HMSCI3FM,HMPB2WM55-2,FHT80,FBAHA,WithingsWS50,Jalousien,Siri,HMS100WD,Fritzbox,Harmony,Twilight,Weather,PushBullet,FHT-9998,HM-CC-TC,Trackr,RolloPort

Todo:ZWave(MieleOfen),LEDWIFI

Fischei

Zitat von: Calle78 am 03 August 2015, 00:16:45
Ich hatte die gleiche Fehlermeldung aber die Ursache war bei mir anders gelagert.
Bei mir hat es durch ein Update in der TcpServerUtils.pm die einkommentierte Zeile
SSL_version => $SSLv23:!SSLv3:!SSLv2 gekillt. Nun stand in der Datei die Variable:
SSL_version => $sslVersion,
die definiert war als:
AttrVal("global", "sslVersion", "TLSv12:!SSLv3"));
Eine Änderung der Zeile zurück auf
AttrVal("global", "sslVersion", "SSLv23:!SSLv3:!SSLv2"));
hat mir den Zugriff per SSL wieder ermöglicht.
Hoffe das hilft jemandem

ciao Carlo

Bei mir funktioniert es mit dieser Änderung auch wieder. Aber heißt das, dass dies jetzt nicht mehr so sicher ist?

rudolfkoenig

Vmtl. ja.
Aendern dieser Zeile ist in der aktuellen Version nicht mehr erforderlich, es gibt ein Attribut sslVersion (global bzw. fuer die Instanz, mit dem man HttpUtils aufruft).

Virsacer

Zitat von: Fischei am 16 September 2015, 13:22:26
Bei mir funktioniert es mit dieser Änderung auch wieder. Aber heißt das, dass dies jetzt nicht mehr so sicher ist?
Ja, SSL ist unsicher und sollte nicht mehr verwendet werden...
Und eigentlich sollten auch alle Browser inzwischen TLS können (zumindest Version 1)

Also versuchs mal mit "TLSv12:TLSv1:!SSLv3"
Und teste mit https://www.ssllabs.com/ssltest/index.html