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
Genau das Gleiche bei mir...
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 (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".
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.
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.
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
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
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
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 (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 (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.
Habe IO::Socket::SSL in der $VERSION = '1.967'
Soll ich den Wireshark einfach hier hochladen?
MFg Roland
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.
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/ (http://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 (http://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
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.
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
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
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
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.
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.
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
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
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',
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
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.
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
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
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
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
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?
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).
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
Zitat von: rudolfkoenig am 16 September 2015, 13:38:03
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).
Ah, danke für die Info. Hab die Änderung wieder rückgängig gemacht und steuere es jetzt über das global-Attribut.
Zitat von: Virsacer am 16 September 2015, 19:28:24
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
Ich denke bei dir fehlt ein !. Sollte dies nicht TLSv12:
!TLSv1:!SSLv3 heißen? Habs jetzt mal geändert, aber dann funktioniert es wieder nicht mehr. Im Log wird folgender Fehler ausgegeben: "FHEMWEB SSL/HTTPS error: Illegal seek"
Wenn ich in die global wieder SSLv23:!SSLv3:!SSLv2 reinschreibe, dann funktioniert es wieder
Zitat von: Fischei am 16 September 2015, 21:21:02
Ich denke bei dir fehlt ein !. Sollte dies nicht TLSv12:!TLSv1:!SSLv3 heißen? Habs jetzt mal geändert, aber dann funktioniert es wieder nicht mehr. Im Log wird folgender Fehler ausgegeben: "FHEMWEB SSL/HTTPS error: Illegal seek"
Nein, das war schon richtig ohne Ausrufezeichen: Du willst ja TLS 1.0 und TLS 1.2 erlauben, weil das dein Browser anscheinend noch nicht kann ;)
Hallo gemeinsam!
Also ich habe gerade 5.8 installiert. Als ich auf HTTPS gewechselt habe, wurde ich rausgekickt. Per Browser komme ich nicht mehr hinein, weder HTTPS noch HTTP. Ich hab versicht die AttrVal zu ändern wie hier beschrieben, nichts gebracht. Auch im fhem.cfg HTTPS auf 0 zurück oder wieder 1 bringt garnichts. Irgendjemand eine Idee wie ich sonst HTTPS deaktivieren könnte bzw. es mit HTTPS doch zum Laufen bringen könnte?
Vielen Dank