Tornado WebSocketHandler 不会响应 SSL 请求



我有一个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打开安全的websocket连接时,例如

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()

其他信息:错误消息中 IP 后面的数字(在上面示例中为 62851(随着每个请求(安全或其他(而增加。我不知道这个数字是多少,但它确实表明请求至少到达了服务器。

此外,从构造函数中删除ssl_options并向服务器发出不安全的(ws://(请求可以解决此问题。

正在使用的证书是自签名的。为了通过curl与服务器的HTTP端点进行通信,我必须使用--insecure标志。

如果您从 javascript 控制台启动连接,浏览器没有机会向您显示自签名证书警告并让您有机会接受它。 如果您先去https://localhost:9001并在那里接受证书,它是否有效?

相关内容

  • 没有找到相关文章

最新更新