我需要允许客户端连接到服务器10.0.4.160上的websocket。 10.0.4.160服务器上没有安装SSL,但它有一个在端口8080上运行的websocket。
我需要设置一个安全隧道,以允许客户端连接到websocket。
我在我的Windows Server 2008 R2上安装了stunnel,并更改了我的stunnel.conf文件,看起来喜欢这个
[websockets]
accept = 8443
connect = 8080
verify = 2
CAfile = ca-certs.pem
client = yes
我希望在端口8433上连接到服务器,并且stunnel将允许连接连接到端口8080
这是我在客户端控制台中使用的代码“当然,控制台位于我内部网络上的PC上”
var conn = new WebSocket('wss://10.0.4.160:8443');
conn.onopen = function(e) {
console.log("Connection established!");
};
conn.onmessage = function(e) {
console.log(e.data);
};
在服务器上,我打开一个命令行,然后执行它 telnet localhost 8080
我得到一个命令行,当我从控制台触发上面的代码时,我在服务器的命令行中看到了这个
但是几秒钟后我在控制台中出现了这个错误
WebSocket connection to 'wss://10.0.4.160:8443/' failed: Error in connection establishment: net::ERR_TIMED_OUT
如果我尝试使用conn.sent('Hello')
发送命令,我会收到此错误
VM289:2 Uncaught DOMException: Failed to execute 'send' on 'WebSocket': Still in CONNECTING state.
at Error (native)
at <anonymous>:2:6
at Object.InjectedScript._evaluateOn (<anonymous>:905:140)
at Object.InjectedScript._evaluateAndWrap (<anonymous>:838:34)
at Object.InjectedScript.evaluate (<anonymous>:694:21)
此外,我尝试通过添加debug = 7
这是我在stunnel控制台中得到的。我不明白有什么问题,因为日志显示客户端已连接但我无法从客户端向服务器发送消息
2015.08.16 16:40:06 LOG7[36]: Service [websockets] started
2015.08.16 16:40:06 LOG5[36]: Service [websockets] accepted connection from 10.0.4.195:21963
2015.08.16 16:40:06 LOG6[36]: s_connect: connecting 127.0.0.1:8080
2015.08.16 16:40:06 LOG7[36]: s_connect: s_poll_wait 127.0.0.1:8080: waiting 10 seconds
2015.08.16 16:40:06 LOG5[36]: s_connect: connected 127.0.0.1:8080
2015.08.16 16:40:06 LOG5[36]: Service [websockets] connected remote server from 127.0.0.1:50891
2015.08.16 16:40:06 LOG7[36]: Remote socket (FD=668) initialized
2015.08.16 16:40:06 LOG6[36]: SNI: sending servername: localhost
2015.08.16 16:40:06 LOG7[36]: SSL state (connect): before/connect initialization
2015.08.16 16:40:06 LOG7[36]: SSL state (connect): SSLv2/v3 write client hello A
我在这里做错了什么? 连接如何失败?