如何创建Python安全websocket客户端请求?

我的Python安全websocket客户端代码给了我以下异常:

[SSL:CERTIFICATE\u VERIFY\u FAILED]证书验证失败(\u SSL.c:748)

我已经创建了我的私有证书和签名证书,但我无法使用Python脚本连接到它,如下所示:

导入json
从websocket导入创建\u连接
类别订户:
def LISTENFORVER(自身):
尝试:
#ws=创建_连接(“wss://localhost:9080/websocket”)
ws=创建_连接(“wss://nbtstaging.westeurope.cloudapp.azure.com:9090/websocket”)
发送(“测试消息”)
尽管如此:
结果=ws.recv()
result=json.load(结果)
打印(“收到“%s”的%result)
ws.close()
例外情况除外,例如:
打印(“例外:”,格式(ex))
尝试:
订阅服务器().listenForever()
除:
打印(“发生异常:”)

我用python编写的https/wss服务器脚本和tornado,如下所示:

导入tornado.web
导入tornado.websocket
导入tornado.httpserver
导入tornado.ioloop
导入操作系统
导入ssl
ssl\u root=os.path.join(os.path.dirname(_文件,’ssl1_1020’))
类WebSocketHandler(tornado.websocket.WebSocketHandler):
def检查_原点(自身、原点):
返回真值
def打开(自):
通过
def on_消息(自我,消息):
self.write_消息(“您的消息是:”+消息)
打印(“收到的消息:”,格式(消息))
def on_关闭(自身):
通过
类IndexPageHandler(tornado.web.RequestHandler):
def get(自我):
self.render(“index.html”)
类应用程序(tornado.web.Application):
定义初始化(自):
处理程序=[
(r’/’,IndexPageHandler),
(r’/websocket’,WebSocketHandler),
]
设置={
“模板路径”:“模板”
}
tornado.web.Application.\uuuuu init\uuuuuuu(self,handlers,**设置)
ssl\u ctx=ssl.create\u default\u context(ssl.Purpose.CLIENT\u AUTH)
ssl\u ctx.load\u cert\u chain(ssl\u root+“/server.crt”,
ssl_root+“/server.pem”)
如果uuuu name uuuuuu=’\uuuuuuu main\uuuuuuu’:
ws_app=应用程序()
server=tornado.httpserver.httpserver(ws\u app,ssl\u options=ssl\u ctx,)
服务器监听(9081,“0.0.0.0”)
打印(“服务器已启动…”)
tornado.ioloop.ioloop.instance().start()

用于创建SSL签名证书的步骤:

openssl genrsa-des3-out server.key 1024
openssl rsa-in-server.key-out-server.pem
openssl req-new-nodes-key server.pem-out server.csr
openssl x509-req-days 365-in server.csr-signkey server.pem-out server.crt

最后我找到了一个解决方案,我更新了python客户端脚本,同时连接到安全web套接字url以忽略证书请求,如下所示:

导入ssl
导入websocket
ws=websocket.websocket(sslopt={“cert\u reqs”:ssl.cert\u NONE})
ws.connect(“wss://xxx.com:9090/websocket”)

发表评论