Hallo zusammen,
ich hatte bis heute auf einem virtuellen Server (Debian Etch) einen Serverdienst laufen, der Anfragen von einem RFID-Lesegerät entgegennahm.
Das Lesegerät verschickt allerdings die Anfragen SSL-verschlüsselt auf Port 5909, so dass ich auf dem Server als root mit
1 | stunnel -d 5909 -r localhost:5910 & |
die Anfragen entschlüsselt und an Port 5910 weitergeleitet habe, auf dem der Serverdienst laucht. Das funktionierte soweit auch zufriedenstellend. Da ich aber heute den Server notgedrungen auf Lenny upgegradet habe, funktioniert die Weiterleitung nicht mehr. Ich kann mich nicht erinnern, damals großartig etwas eingestellt zu haben außer, dass ich ein Zertifikat erzeugt und ins richtige Verzeichnis geschoben habe.
Die /etc/stunnel/stunnel.conf habe ich angepasst:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | ; Sample stunnel configuration file by Michal Trojnara 2002-2006 ; Some options used here may not be adequate for your particular configuration ; Please make sure you understand them (especially the effect of chroot jail) ; Certificate/key is needed in server mode and optional in client mode cert = /etc/stunnel/stunnel.pem ;key = /etc/stunnel/mail.pem ; Protocol version (all, SSLv2, SSLv3, TLSv1) sslVersion = SSLv3 ; Some security enhancements for UNIX systems - comment them out on Win32 chroot = /var/lib/stunnel4/ setuid = stunnel4 setgid = stunnel4 ; PID is created inside chroot jail pid = /stunnel4.pid ; Some performance tunings socket = l:TCP_NODELAY=1 socket = r:TCP_NODELAY=1 ;compression = rle ; Workaround for Eudora bug ;options = DONT_INSERT_EMPTY_FRAGMENTS ; Authentication stuff ;verify = 2 ; Don't forget to c_rehash CApath ; CApath is located inside chroot jail ;CApath = /certs ; It's often easier to use CAfile ;CAfile = /etc/stunnel/certs.pem ; Don't forget to c_rehash CRLpath ; CRLpath is located inside chroot jail ;CRLpath = /crls ; Alternatively you can use CRLfile ;CRLfile = /etc/stunnel/crls.pem ; Some debugging stuff useful for troubleshooting debug = 7 output = /var/log/stunnel4/stunnel.log ; Use it for client mode ;client = yes ; Service-level configuration ;[pop3s] ;accept = 995 ;connect = 110 ;[imaps] ;accept = 993 ;connect = 143 ;[ssmtp] ;accept = 465 ;connect = 25 [https] accept = 443 connect = 80 TIMEOUTclose = 0 [rfid] accept = 5909 connect = 5910 ; vim:ft=dosini |
Nun starte ich den Dienst mittels
1 | /etc/init.d/stunnel4 start
|
Auf dem Server läuft ein MySQL-Server sowie phpmyadmin. Zum Test habe ich mal https aktiviert und versucht die Seite über https aufzurufen, was auch funktioniert. Firefox meckert zwar über ein nicht vertrauenswürdiges Zertifikat, was aber ok ist, da beim RFID-Leser standardmäßig die Überprüfung des Zertifikats deaktiviert ist. Wenn sich allerdings der RFID-Leser (192.168.1.39) verbinden will, erhalte ich folgende Fehlermeldung in der log-Datei von stunnel :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 2011.04.01 17:41:52 LOG7[13194:3083364016]: rfid accepted FD=14 from 192.168.1.39:56551 2011.04.01 17:41:52 LOG7[13194:3083172752]: rfid started 2011.04.01 17:41:52 LOG7[13194:3083172752]: FD 14 in non-blocking mode 2011.04.01 17:41:52 LOG7[13194:3083172752]: TCP_NODELAY option set on local socket 2011.04.01 17:41:52 LOG7[13194:3083172752]: Waiting for a libwrap process 2011.04.01 17:41:52 LOG7[13194:3083172752]: Acquired libwrap process #0 2011.04.01 17:41:52 LOG7[13194:3083172752]: Releasing libwrap process #0 2011.04.01 17:41:52 LOG7[13194:3083172752]: Released libwrap process #0 2011.04.01 17:41:52 LOG7[13194:3083172752]: rfid permitted by libwrap from 192.168.1.39:56551 2011.04.01 17:41:52 LOG5[13194:3083172752]: rfid accepted connection from 192.168.1.39:56551 2011.04.01 17:41:52 LOG7[13194:3083172752]: SSL state (accept): before/accept initialization 2011.04.01 17:41:52 LOG7[13194:3083172752]: SSL state (accept): SSLv3 read client hello B 2011.04.01 17:41:52 LOG7[13194:3083172752]: SSL state (accept): SSLv3 write server hello A 2011.04.01 17:41:52 LOG7[13194:3083172752]: SSL state (accept): SSLv3 write certificate A 2011.04.01 17:41:52 LOG7[13194:3083172752]: SSL state (accept): SSLv3 write server done A 2011.04.01 17:41:52 LOG7[13194:3083172752]: SSL state (accept): SSLv3 flush data 2011.04.01 17:41:52 LOG7[13194:3083172752]: SSL state (accept): SSLv3 read client key exchange A 2011.04.01 17:41:54 LOG7[13194:3083172752]: SSL alert (write): fatal: bad record mac 2011.04.01 17:41:54 LOG3[13194:3083172752]: SSL_accept: 1408F119: error:1408F119:SSL routines:SSL3_GET_RECORD:decryption failed or bad record mac 2011.04.01 17:41:54 LOG5[13194:3083172752]: Connection reset: 0 bytes sent to SSL, 0 bytes sent to socket 2011.04.01 17:41:54 LOG7[13194:3083172752]: rfid finished (0 left) |
und ich erhalte keine Nachrichtweiterleitung an Port 5910. Eine Internetrecherche nach der Fehlermeldung brachte mich nicht wirklich weiter, da ich bei dem Thema SSL auch nicht so bewandert bin. Was mich auch stutzig macht ist, dass der Port 5909 gar nicht geöffnet scheint:
1 2 3 4 5 6 7 8 9 10 | nmap 192.168.1.89 Starting Nmap 4.62 ( http://nmap.org ) at 2011-04-01 19:50 CEST Interesting ports on 192.168.1.89: Not shown: 1710 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 443/tcp open https 3306/tcp open mysql |
Trotzdem nimmt stunnel ja eine Verbindung von dem RFID-Lesegerät an?!
Hat jemand von Euch noch eine Idee woran es liegen könnte und kann mich in die richtige Richtung schubsen?
Gruß Cermit