[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 vor 3 Tagen ein Update über fhem Web gemacht. Vor dem Update konnte ich über https://IP:8283 auf fhem zugreifen. Nach dem Update kommt im Log beim Versuch sich mit https anzumelden diese Fehlermeldung.
FHEMWEB SSL/HTTPS error: Illegal seek
Hat jemand eine Idee Woran das liegen kann? Habe schon ein Update und Upgrade des RPI gemacht, auch den certs Ordner gelöscht und neu erstellt aber das hat alles nocht nichts gebracht.

Wenn ich https ausschalte in der fhem.cfg kann ich normal über http auf fhem zugreifen
Mfg Roland
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

sengelking

FHEM aud RaspberryPi

Patrik.S

Ohne weitrere Daten schwer einzugrenzen. Ein schneller Gegentest würde zumindest einen Punkt ausschließen.

Schau dir mal die Änderung in der Datei /opt/fhem/FHEM/TcpServerUtils.pm an aus diesem Thread    
FHEM/TcpServerUtils.pm: Featurewunsch stärkere TLS Verschlüsselung Webfrontend: http://forum.fhem.de/index.php/topic,35004.0.html

Aktuell steht da jetzt durch dein Update in Zeile 89 - 97
my $ret = IO::Socket::SSL->start_SSL($clientinfo[0], {
SSL_server => 1,
SSL_key_file => "$mp/certs/server-key.pem",
SSL_cert_file => "$mp/certs/server-cert.pem",
#SSL_version => 'SSLv23:!SSLv3:!SSLv2', #Forum #27565
SSL_version => 'TLSv12:!SSLv3', # Forum #35004
SSL_cipher_list => 'HIGH:!RC4:!eNULL:!aNULL',
Timeout => 4,
});


Aktiviere im ersten Versuch die auskommentierte Zeile
#SSL_version => 'SSLv23:!SSLv3:!SSLv2', #Forum #27565
und kommentieren die andere aus. Fhem restarten
Wenn das noch nicht geholfen hat, kommentiere die SSL_cipher_list aus. Fhem restarten

Zu den Details:
Welcher Browser wird verwendet?
Kann der Browser mind. TLSv1 und ist dieses auch aktiviert?
Im Firefox (36.0) about:config Default Einstellungen:
security.tls.version.min = 1
security.tls.version.max = 3
Im IE11 --> Internetoptionen-->Erweitert-->Häckchen bei den TLS Versionen an

Kennst Du dich mit Wireshark & TcpDump aus? Wenn ja starte eine Session und nimm alles für den Serverport 8283 auf.
Das "Client Hello" zeigt, womit der Browser die Verschlüsselung aufbauen will, da muss TLS1.0 stehen und optional noch eine höhere TLS Version und die unterstützten Cipher Suiten
Und das Server Hello zeigt, womit die Verbindung aufgebaut wurde oder eien "Fatal Handshake Error".

Roli1606

Zitat von: Patrik.S am 20 März 2015, 06:33:51

Aktiviere im ersten Versuch die auskommentierte Zeile
#SSL_version => 'SSLv23:!SSLv3:!SSLv2', #Forum #27565
und kommentieren die andere aus.

Danke das hat geholfen. Jetzt Funktioniert es wieder mit Verschlüsselung.

Noch zur Info,

das Problem ist überall aufgetreten. Üblicher weise benutze ich nur Firefox habe es aber auch mit IE und andFhem ausprobiert. Die Verbindung ging nirgendwo.
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

rudolfkoenig

Auf welchem Client OS (Version) lief der Browser, und welche Version hat er selbst?

Hintergrund der Frage ist, ob das die Mehrheit oder eine Minderheit betrifft.
Bleibt die Frage was besser ist: weniger Sicherheit fuer viele, oder viel fuer wenige.

schka17

#5
Hatte das Problem auch, windows 7 und 8.1 mit firefox und Internet Explorer, Ipad 3 mit IOS8.2 mit Safari und Iphone 6, dort verwende ich geofency und das ging nicht mehr mit SSL.

Gruß

Karl

Nachtrag, mit geofency fing es an, da das nicht mehr funktionierte habe ich versucht die Ursache herauszufinden und habe die anderen Systeme probiert.

Sent from my iPad using Tapatalk
M: Thinclient x64 Debian | CUL FS20, HMS100WD, HMS100TF, HMS100T, HMS100CO, S300, S555TH | OWServer DS1420, DS18B20, DS2408 | RFXCOM UVN128, THWR800, THGR228N,RTGR328, PCR800 |Jeelink PCA301 EC3000|CUNO+IR|HMLAN|HMUSB|CUL433 Somfy|mySensors|espEasy
S1:Raspberry mit BPM810, Jeelink EC3000

automatisierer

also ich hatte das problem bei meinen fhem installationen nicht.
1x auf BananaPi
1x auf Raspi

ich konnte auf meinen fhem's per https zugreifen. auf das von Roli1606 (ist mein Bruder und wir betreiben gemeinsam ein  LAN) konnte ich allerdings nicht per https zugreifen. Die aktuellen FHEM-Updates hatte ich auch drauf. Also muss das Problem mMn ja eventuell noch wo anders liegen...
Gruß
Ingo

Roli1606

Ich Habe es mit meinem Laptop Windows 8.1 mit Firefox 36.03 und IE 11 versucht. Mit meinem Android Smartphone Galaxy S3 (Android 4.3) mit Firefox und andFhem App jeweils die Aktuellste Version.
MFG Roland
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Patrik.S

Mein Clients können alle Problemlos zugreifen auf meinem Fhem Server, trotz der schärferen TLSv12 Einstellungen.
Mit FF (36.0.3) & IE11 auf dem Win7 Rechner und auch andFHEM und Opera auf dem Android Smartphone.

Es ist hier der Server der dicht macht, das zeigt auch das automatisierer unf Roli1606 jeweils nicht auf diesen Fhem Server zugreifen konnten.
Was dient denn als Server für die Fhem Installation? Ist es eine Fritz!Box, RPi, Windows oder Linux PC?
Damit kann man das Problem weiter einkreisen.

Es könnte auch an der Version des installierten Perl Moduls IO::Socket::SSL liegen.
Bei mir ist es $VERSION = '1.76'; und trotzdem funktioniert es fehlerfrei.

Erst viel Später kam der Support von TLSv11, TLSv12 als Handshake Protokoll.
http://cpansearch.perl.org/src/SULLR/IO-Socket-SSL-2.012/Changes
1.956 2013/11/10
- support TLSv11, TLSv12 as handshake protocols

Es gibt noch beliebig viele Probleme die auftreten können, siehe z.B. http://maulwuff.de/howto/ssl-debugging.html

An einem Netzwerkmitschnitt wäre ich sehr stark interessiert.
Vom Windowsrechner aus mit Wireshark https://www.wireshark.org/download.html, bei einem Linux System mit tcpdump
sudo tcpdump -i eth0 -w /var/tmp/tcpdump_fhem.cap port 8283

Aber auch nur eine Ausgabe des Handshakes würde ausreichen, das geht mit
openssl s_client -connect IP:8283 -ssl3    --> Da SSLv3 abgeschaltet ist, gibt's einen Fehler

CONNECTED(00000003)
3069379792:error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure:s3_pkt.c:1260:SSL alert number 40
3069379792:error:1409E0E5:SSL routines:SSL3_WRITE_BYTES:ssl handshake failure:s3_pkt.c:598:


openssl s_client -connect IP:8283 -tls1    --> Das sollte klappen und diese Zeile zeigen:
[......]
SSL-Session:
    Protocol  : TLSv1
[......]



Und wenn die OpenSSL Version neu genug ist auch mit:
openssl s_client -connect IP:8283 -tls1_1
[......]
SSL-Session:
    Protocol  : TLSv1.1
[......]


openssl s_client -connect IP:8283 -tls1_2
[......]
SSL-Session:
    Protocol  : TLSv1.2
[......]


Angabe ohne SSL/TLS Version zeigt, was ohne Vorgabe ausgehandelt wurde
openssl s_client -connect IP:8283
[......]
SSL-Session:
    Protocol  : TLSv1.2
[......]


@rudolfkoenig:
Als Workaround und/oder um allen gerecht zu werden könnte ja auch ein weiteres Define in die fhem.cfg für die zu nutzende SSL_version??
Die SSL_cipher_list mit hoher Verschlüsselung scheint ja bei keinem Probleme zu machen und muss nicht nach aussen geführt werden.

Roli1606

Habe IO::Socket::SSL in der $VERSION = '1.967'

Soll ich den Wireshark einfach hier hochladen?

MFg Roland
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Patrik.S

Hallo Roland,

ist es ein RPi wie in deiner Signatur angegeben??
Wie hast du das/die Perl Module installiert? Mit dem Perl cpan und über apt-get?
Das Repository vom RPi ist ja meist viel älter.

Wenn die Pakete über den Linux Installer gekommen sind, was sagt die Ausgabe aller Perl Pakete mit
dpkg-query -l |grep perl

Oder wenn mit cpan installiert, mit cpan die Ausgabe aller Pakete (großes O)
cpan -O

Den Wireshark kannst du nur dann hier hochladen, wenn dur während des mitschreibens keine anderen Sachen am Laufen hattest. Das würden wir dann alle sehen...  ;)
Du kannst aber auch für die Aufnahme mit einem Filter eingrenzen, das nur zum Fhem gelauscht wird.
ip.addr == <deine Fhem Server IP>
Das kannst du dann wahrscheinlich ohne Bedenken hochladen.

Roli1606

#11
Hallo Patrik
ich bin mir nicht mehr ganz sicher wie ich die Pakete installiert habe, und was du genau meinst. Den Raspi habe ich mit dieser Anleitung eingerrichtethttp://www.meintechblog.de/2013/05/fhem-server-auf-dem-raspberry-pi-in-einer-stunde-einrichten/. Und die SSL Verschlüsselung mit der Anleitug aus dem WIKIhttp://www.fhemwiki.de/wiki/Raspberry_Pi_%26_HTTPS.

Zitatdpkg-query -l |grep perl
ergibt
ii  fhem                                  5.5                                                                                                                             all          GPL'd perl server for house automation.
ii  libalgorithm-diff-perl                1.19.02-2                                                                                                                       all          module to find differences between files
ii  libalgorithm-diff-xs-perl             0.04-2                                                                                                                          armhf        module to find differences between files (XS accelerated)
ii  libalgorithm-merge-perl               0.08-2                                                                                                                          all          Perl module for three-way merge of textual data
ii  libclass-isa-perl                     0.36-3                                                                                                                          all          report the search path for a class's ISA tree
ii  libdata-guid-perl                     0.046-1                                                                                                                         all          globally unique identifiers
ii  libdata-optlist-perl                  0.107-1                                                                                                                         all          module to parse and validate simple name/value option pairs
ii  libdevice-serialport-perl             1.04-2                                                                                                                          armhf        emulation of Win32::SerialPort for Linux/POSIX
ii  libdpkg-perl                          1.16.15+rpi1                                                                                                                    all          Dpkg perl modules
ii  libencode-locale-perl                 1.03-1                                                                                                                          all          utility to determine the locale encoding
ii  liberror-perl                         0.17-1                                                                                                                          all          Perl module for error/exception handling in an OO-ish way
ii  libfile-copy-recursive-perl           0.38-1                                                                                                                          all          Perl extension for recursively copying files and directories
ii  libfile-fcntllock-perl                0.14-2                                                                                                                          armhf        Perl module for file locking with fcntl(2)
ii  libfile-listing-perl                  6.04-1                                                                                                                          all          module to parse directory listings
ii  libfont-afm-perl                      1.20-1                                                                                                                          all          Font::AFM - Interface to Adobe Font Metrics files
ii  libhtml-form-perl                     6.03-1                                                                                                                          all          module that represents an HTML form element
ii  libhtml-format-perl                   2.10-1                                                                                                                          all          module for transforming HTML into various formats
ii  libhtml-parser-perl                   3.69-2                                                                                                                          armhf        collection of modules that parse HTML text documents
ii  libhtml-tagset-perl                   3.20-2                                                                                                                          all          Data tables pertaining to HTML
ii  libhtml-tree-perl                     5.02-1                                                                                                                          all          Perl module to represent and create HTML syntax trees
ii  libhttp-cookies-perl                  6.00-2                                                                                                                          all          HTTP cookie jars
ii  libhttp-daemon-perl                   6.01-1                                                                                                                          all          simple http server class
ii  libhttp-date-perl                     6.02-1                                                                                                                          all          module of date conversion routines
ii  libhttp-message-perl                  6.03-1                                                                                                                          all          perl interface to HTTP style messages
ii  libhttp-negotiate-perl                6.00-2                                                                                                                          all          implementation of content negotiation
ii  libio-socket-inet6-perl               2.69-2                                                                                                                          all          object interface for AF_INET6 domain sockets
ii  libio-socket-ip-perl                  0.16-2                                                                                                                          all          module for using IPv4 and IPv6 sockets in a protocol-independent                                                                                         way
ii  libio-socket-ssl-perl                 1.76-2                                                                                                                          all          Perl module implementing object oriented interface to SSL sockets
ii  liblocale-gettext-perl                1.05-7                                                                                                                          armhf        module using libc functions for internationalization in Perl
ii  liblwp-mediatypes-perl                6.02-1                                                                                                                          all          module to guess media type for a file or a URL
ii  liblwp-protocol-https-perl            6.03-1                                                                                                                          all          HTTPS driver for LWP::UserAgent
ii  libmailtools-perl                     2.09-1                                                                                                                          all          Manipulate email in perl programs
ii  libnet-http-perl                      6.03-2                                                                                                                          all          module providing low-level HTTP connection client
ii  libnet-libidn-perl                    0.12.ds-1                                                                                                                       armhf        Perl bindings for GNU Libidn
ii  libnet-ssleay-perl                    1.48-1                                                                                                                          armhf        Perl module for Secure Sockets Layer (SSL)
ii  libossp-uuid-perl                     1.6.2-1.3                                                                                                                       armhf        perl OSSP::UUID - OSSP uuid Perl Binding
ii  libparams-util-perl                   1.07-1                                                                                                                          armhf        Perl extension for simple stand-alone param checking functions
ii  libperl5.14                           5.14.2-21+rpi2+deb7u2                                                                                                           armhf        shared Perl library
ii  libsocket-perl                        2.002-1+rpi1                                                                                                                    armhf        networking constants and support functions
ii  libsocket6-perl                       0.23-1                                                                                                                          armhf        Perl extensions for IPv6
ii  libsub-exporter-perl                  0.984-1                                                                                                                         all          sophisticated exporter for custom-built routines
ii  libsub-install-perl                   0.926-1                                                                                                                         all          module for installing subroutines into packages easily
ii  libswitch-perl                        2.16-2                                                                                                                          all          switch statement for Perl
ii  libtext-charwidth-perl                0.04-7                                                                                                                          armhf        get display widths of characters on the terminal
ii  libtext-iconv-perl                    1.7-5                                                                                                                           armhf        converts between character sets in Perl
ii  libtext-wrapi18n-perl                 0.06-7                                                                                                                          all          internationalized substitute of Text::Wrap
ii  libtimedate-perl                      1.2000-1                                                                                                                        all          collection of modules to manipulate date/time information
ii  liburi-perl                           1.60-1                                                                                                                          all          module to manipulate and access URI strings
ii  libwww-perl                           6.04-1                                                                                                                          all          simple and consistent interface to the world-wide web
ii  libwww-robotrules-perl                6.01-1                                                                                                                          all          database of robots.txt-derived permissions
ii  libxml-namespacesupport-perl          1.09-3                                                                                                                          all          Perl module for supporting simple generic namespaces
ii  libxml-parser-perl                    2.41-1                                                                                                                          armhf        Perl module for parsing XML files
ii  libxml-sax-base-perl                  1.07-1                                                                                                                          all          base class for SAX drivers and filters
ii  libxml-sax-expat-perl                 0.40-2                                                                                                                          all          Perl module for a SAX2 driver for Expat (XML::Parser)
ii  libxml-sax-perl                       0.99+dfsg-2                                                                                                                     all          Perl module for using and building Perl SAX2 XML processors
ii  libxml-simple-perl                    2.20-1                                                                                                                          all          Perl module for reading and writing XML
ii  perl                                  5.14.2-21+rpi2+deb7u2                                                                                                           armhf        Larry Wall's Practical Extraction and Report Language
ii  perl-base                             5.14.2-21+rpi2+deb7u2                                                                                                           armhf        minimal Perl system
ii  perl-modules                          5.14.2-21+rpi2+deb7u2                                                                                                           all          Core Perl modules


Zitatcpan -O

Ergebniss in der Datei angehängt. Ist zu lang um das hier einzufügen.

Gruß Roland

Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL

Patrik.S

Die Wireshark Analyse zeigt, dass der Zugriff auf den Fhem Server auf Port 8083 und nicht auf 8283 stattfindet.
Es sind 10 Client Hello in dem Mitschnitt. Hast du es 10 mal versucht oder ist da ein Client der es von sich aus ständig versucht?
Wie auch immer, es sieht nicht gut aus, denn alle 10 TCP SYN (Socket öffnen) vom Client 192.168.170.6 --> Fhem Server 192.168.170.10 mit dem anschließenden Client Hello (das vollkommen ok aussieht),
wird vom Fhem Server nicht etwa mit einem fehlgeschlagenen Server Hello / Fatal Error beantwortet, sondern auf TCP Ebene mit einem [RST, ACK]
RST == Reset beantwortet.

      1 0.000000    192.168.170.6         192.168.170.10        TCP      66     58020-->8083 [SYN] Seq=0 Win=8192 Len=0 MSS=1460 WS=256 SACK_PERM=1
      2 0.001817    192.168.170.10        192.168.170.6         TCP      66     8083-->58020 [SYN, ACK] Seq=0 Ack=1 Win=29200 Len=0 MSS=1460 SACK_PERM=1 WS=64
      3 0.001921    192.168.170.6         192.168.170.10        TCP      54     58020-->8083 [ACK] Seq=1 Ack=1 Win=65536 Len=0
      4 0.002163    192.168.170.6         192.168.170.10        SSL      261    Client Hello
      5 0.004011    192.168.170.10        192.168.170.6         TCP      60     8083-->58020 [ACK] Seq=1 Ack=208 Win=30272 Len=0
      6 0.011602    192.168.170.10        192.168.170.6         TCP      60     8083-->58020 [RST, ACK] Seq=1 Ack=208 Win=30272 Len=0



Nur für das Ausschlussverfahren. Nicht da da noch was anderes den Port benutzt
Was für Server Ports laufen denn auf dem RPi noch so und verbirgt sich hinter dem Port 8083 wirklich das erwartete Perl==Fhem?
sudo netstat -tulpn
Die Ausgabe sollte ergeben:
Aktive Internetverbindungen (Nur Server)
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      16382/perl


Und die Ausgabe von zeigt, wer den Port 8083 aufgemacht hat
sudo fuser 8083/tcp
und sollte auch die PID vom Perl ausgeben
8083/tcp:            16382


------------------------------------------------------------------------------

Deine Paketversion verwundert mich. Du hast geschrieben
ZitatHabe IO::Socket::SSL in der $VERSION = '1.967'
Und gleichzeitig zeigt die Ausgabe von dpkg -l | grep perl
Zitatii  libio-socket-ssl-perl                 1.76-2

Wenn ich nach der Version in den Perl IO::*** Modulen suche, finde ich diese Pakete und dessen Versionen
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/SSL.pm:      $VERSION = '1.76';
/usr/share/perl5/IO/Socket/IP.pm:our $VERSION = '0.16';


Mach mal eine Suche nach der SSL.pm, wie oft und wo er sie im System findet
find /  -name SSL.pm 2>/dev/null

Bei mir wird sie genau nur einmal gefunden:
/usr/share/perl5/IO/Socket/SSL.pm

Und dein Perl cpan ist "lauffähig". Hast du darüber schon mal Paket installiert. Bei meinem RPi habe ich cpan bisher noch gar nicht konfiguriert und führt mich durchen einen Einrichtungsdialog.

Ich denke das du hier also schon die neuere IO::Socket::SSL 1.967 drauf hast, über cpan installiert und die 1.76 ist mit der Paket Installation von libio-socket-ssl-perl gekommen.

Das sollte aber alles gar kein Problem darstellen und nicht der Grund hier sein.

Roli1606

Der Port im ersten Beitrag war ein Tippfehler Fhem läuft auf dem Standard Port 8083.

ich habe heute morgen ein CPAN Update Prozess gestartet der noch immer läuft.
Hab da bei Google einen befehle gefunden.
perl -MCPAN -e 'CPAN::Shell->install(CPAN::Shell->r)'
der läuft nun schon ein paar Stunden.

ich habe da anscheinend 2 Pakete installiert in Verschiedenen Versionen.
in der angehängten txt ist die IO::Socket::SSL auch drin mit der Version die ich geschrieben habe.

Nach der Datei suche ich gleich wenn der Update Prozess durchgelaufen ist.

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

Roli1606

Hier die ausgabe der Suche habe die Datei anscheinend 6 mal drin.
/root/.cpan/build/IO-Socket-SSL-2.012-4cAydY/blib/lib/IO/Socket/SSL.pm
/root/.cpan/build/IO-Socket-SSL-2.012-4cAydY/lib/IO/Socket/SSL.pm
/root/.cpan/build/IO-Socket-SSL-1.967-ggLBdc/blib/lib/IO/Socket/SSL.pm
/root/.cpan/build/IO-Socket-SSL-1.967-ggLBdc/lib/IO/Socket/SSL.pm
/usr/local/share/perl/5.14.2/IO/Socket/SSL.pm
/usr/share/perl5/IO/Socket/SSL.pm
Cubietruck mit Stefanius Image
FHEM 5.8
HMLAN
und CUL