2015-05-16 101 views
0

我试图运行使用https和安全websockets(wss://)的聊天应用程序,并且出现以下错误。我正在使用我创建的自签名证书。如果我从chrome桌面访问我的site,它可以工作。如果我从Chrome ios访问同一网站,则会收到以下错误消息。另外,从Chrome ios,我得到了不可信证书的警告并接受它。所以我想让它适用于Chrome ios。python tornado SSLEOFError:EOF发生违反协议(_ssl.c:581)

[E 150516 14:01:56 http1connection:700] Uncaught exception 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/tornado/http1connection.py", line 691, in _server_request_loop 
    ret = yield conn.read_response(request_delegate) 
    File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 807, in run 
    value = future.result() 
    File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 209, in result 
    raise_exc_info(self._exc_info) 
    File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 810, in run 
    yielded = self.gen.throw(*sys.exc_info()) 
    File "/usr/local/lib/python2.7/dist-packages/tornado/http1connection.py", line 166, in _read_message 
    quiet_exceptions=iostream.StreamClosedError) 
    File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 807, in run 
    value = future.result() 
    File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 209, in result 
    raise_exc_info(self._exc_info) 
    File "<string>", line 3, in raise_exc_info 
SSLEOFError: EOF occurred in violation of protocol (_ssl.c:581) 

这里是我的代码

import tornado.ioloop 
import tornado.web 
import tornado.options 
import tornado.httpserver 
import os 
import tornado.websocket 

import ssl 
ssl.PROTOCOL_SSLv23 = ssl.PROTOCOL_TLSv1 

clients = [] 

class IndexHandler(tornado.web.RequestHandler): 
    @tornado.web.asynchronous 
    def get(request): 
    request.render("index.html") 

class WebSocketChatHandler(tornado.websocket.WebSocketHandler): 
    def open(self, *args): 
    print("open", "WebSocketChatHandler") 
    clients.append(self) 

    def on_message(self, message):   
    print message 
    for client in clients: 
     client.write_message(message) 

    def on_close(self): 
    clients.remove(self) 

application = tornado.web.Application([(r'/wschat', WebSocketChatHandler), (r'/', IndexHandler)]) 

data_dir = '/home/bob' 

#http_server = tornado.httpserver.HTTPServer(application) 
http_server = tornado.httpserver.HTTPServer(application, ssl_options={ 
    "certfile": os.path.join(data_dir, "myselfsigned.cer"), 
    "keyfile": os.path.join(data_dir, "myselfsigned.key"), 
}) 

if __name__ == "__main__": 
    tornado.options.parse_command_line() 
    http_server.listen(443) 
    tornado.ioloop.IOLoop.instance().start() 

我跑蟒蛇2.7.9,和龙卷风4.1。我怀疑我必须猴子补丁龙卷风,但我已经尝试过各种猴子补丁,并没有成功。有人可以帮助我修补猴子龙卷风,或者详细说明如何解决这个问题。另外,我是SSL新手,所以请向我解释,就像我5岁那样:)

非常感谢您的时间和耐心!

回答

相关问题