Tornado WebSocketHandler不会响应SSL请求

2024-06-01 03:50:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Tornado HTTPServer初始化如下:

ssl_options = {
    "certfile": "mycert.crt",
    "keyfile": "mykey.key"
}
server = tornado.httpserver.HTTPServer(application, xheaders=True,
        ssl_options=ssl_options)

它有一个带有open()方法的WebSocketHandler。在

当我试图从chrome30控制台通过Javascript打开一个安全的websocket连接时,比如

^{pr2}$

{dles}没有成功打开连接^,而且没有成功打开cdlock。在

如何在Tornado中打开和维护与Javascript客户端的安全(SSL)WebSocket连接?

尝试不安全的连接,比如

var sock = new WebSocket("ws://localhost:9001/mywebsocket");

在Tornado日志中导致以下错误输出:

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标志。在


Tags: 服务器sslws错误数字openjavascripttornado
1条回答
网友
1楼 · 发布于 2024-06-01 03:50:42

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

相关问题 更多 >