繁体   English   中英

Tornado WebSocketHandler不会响应SSL请求

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM