[英]Tornado WebSocketHandler won't respond to SSL request
我有一个像这样初始化的Tornado HTTPServer:
ssl_options = {
"certfile": "mycert.crt",
"keyfile": "mykey.key"
}
server = tornado.httpserver.HTTPServer(application, xheaders=True,
ssl_options=ssl_options)
它具有一个带有open()
方法的WebSocketHandler。
当我尝试从Chrome 30控制台通过Javascript打开安全的网络套接字连接时,例如
var sock = new WebSocket("wss://localhost:9001/mywebsocket");
连接未成功打开,没有日志输出,并且未调用WebSocketHandler的open()
。
如何在Tornado中打开并维护与Javascript客户端的安全(SSL)WebSocket连接?
尝试进行不安全的连接,例如
var sock = new WebSocket("ws://localhost:9001/mywebsocket");
在龙卷风日志中导致以下错误输出:
2013-10-08 13:59:55,305 tornado.general 820 : SSL Error on 8 ('192.168.149.27', 62851): [Errno 1] _ssl.c:490: error:1407609C:SSL routines:SSL23_GET_CLIENT_HELLO:http request
同样在这种情况下,连接不会成功open()
并且不会调用open()
。
附加信息:错误消息中IP后的数字(在上面的示例中为62851)随安全性或其他每个请求的增加而增加。 我不知道这个数字是多少,但它确实表明该请求至少正在到达服务器。
同样,从构造函数中删除ssl_options
并向服务器发出不安全的( ws://
)请求也可以解决此问题。
使用的证书是自签名的。 要通过curl与服务器的HTTP端点进行通信,我必须使用--insecure
标志。
如果您是从javascript控制台启动连接,则浏览器将没有机会向您显示自签名证书警告,也没有机会接受它。 如果您首先访问https://localhost:9001
并在那里接受证书,那行得通吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.