Ich versuche, OpenVPN so einzurichten, dass es Port 443 überwacht und dann den gesamten HTTPS-Verkehr mithilfe der port-share
Option an Apache weiterleitet. Relevante Konfigurations-Snippets sind:
OpenVPN
local ${PUBLIC_IP}
port 443
port-share localhost 443
Apache mit SSL
Listen localhost:443
Mein OpenVPN-Client stellt eine gute Verbindung her, aber beim Öffnen der HTTPS-fähigen Seite werden Fehler angezeigt. Firefox sagt:
SSL hat einen Datensatz erhalten, der die maximal zulässige Länge überschritten hat.
(Fehlercode: ssl_error_rx_record_too_long)
Sagt Curl
Curl: (35) Fehler: 140770FC: SSL-Routinen: SSL23_GET_SERVER_HELLO: Unbekanntes Protokoll
Die Anfrage endet bei Apache, da ich in den Fehlerprotokollen die folgenden Meldungen sehe:
[Wed Oct 06 01:10:20 2010] [error] [client 127.0.0.1] Invalid method in request \x16\x03\x01
[Wed Oct 06 01:11:04 2010] [error] [client 127.0.0.1] Invalid method in request \x16\x03\x01
[Wed Oct 06 01:11:51 2010] [error] [client 127.0.0.1] Invalid method in request \x16\x03\x01
Der Nachrichteneintrag für eine HTTPS-Verbindung lautet
Oct 6 01:13:21 ns1 openvpn[20154]: Re-using SSL/TLS context
Oct 6 01:13:21 ns1 openvpn[20154]: LZO compression initialized
Oct 6 01:13:21 ns1 openvpn[20154]: Control Channel MTU parms [ L:1544 D:140 EF:40 EB:0 ET:0 EL:0 ]
Oct 6 01:13:21 ns1 openvpn[20154]: Data Channel MTU parms [ L:1544 D:1450 EF:44 EB:135 ET:0 EL:0 AF:3/1 ]
Oct 6 01:13:21 ns1 openvpn[20154]: Local Options hash (VER=V4): 'c0103fa8'
Oct 6 01:13:21 ns1 openvpn[20154]: Expected Remote Options hash (VER=V4): '69109d17'
Oct 6 01:13:21 ns1 openvpn[20154]: TCP connection established with ${CLIENT_IP}:56203
Oct 6 01:13:21 ns1 openvpn[20154]: TCPv4_SERVER link local: [undef]
Oct 6 01:13:21 ns1 openvpn[20154]: TCPv4_SERVER link remote: ${CLIENT_IP}:56203
Oct 6 01:13:21 ns1 openvpn[20154]: ${CLIENT_IP}:56203 Non-OpenVPN client protocol detected
Oct 6 01:13:21 ns1 openvpn[20154]: TCP/UDP: Closing socket
Verwenden von httpd-2.2.3-43.el5.centos und openvpn-2.1.1-2.el5.
Was muss ich tun, damit die Portfreigabe funktioniert?
Update : Verwenden
port 443
port-share localhost 10443
und
Listen localhost:10443
macht keinen Unterschied.
Update 2 : Einige Befehlsausgaben
[root@ns1 ~]# openvpn --help | grep port-share
--port-share host port : When run in TCP mode, proxy incoming HTTPS sessions
[root@ns1 ~]# netstat -nltp | grep 443
tcp 0 0 127.0.0.1:10443 0.0.0.0:* LISTEN 20088/httpd
tcp 0 0 ${PUBLIC_IP}:443 0.0.0.0:* LISTEN 20066/openvpn