flT*_*flT 3 ssl websocket python-3.x
我是 Python 新手,但必须构建一个 Websocket API 才能工作。websockets 模块的网站说,此代码应该适用于安全的 websocket 连接(https://websockets.readthedocs.io/en/stable/intro.html)
但是,我无法让提供的代码工作..
import websockets
import asyncio
import pathlib
import ssl
ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_CLIENT)
ssl_context.load_verify_locations(pathlib.Path(__file__).with_name('localhost.pem'))
Run Code Online (Sandbox Code Playgroud)
我收到错误:
回溯(最近一次调用最后一次):
文件“/Applications/Python 3.7/apii.py”,第 7 行,在模块> ssl_context.load_verify_locations(pathlib.Path(__ file__).with_name('localhost.pem'))
FileNotFoundError: [Errno 2] 没有那个文件或目录
你能帮我吗?
附注。我根本不了解这个 ssl_context 代码。有人可以解释一下它背后的逻辑吗?
我从 docker 容器测试 websockets。我有 NAT ips(不能使用 LetsEncrypt),并且没有 * 域证书。如果我直接在 Firefox 中测试,它可以在没有任何证书的情况下正常工作。因此,应该允许在防火墙内禁用 SSL 以进行测试。
提炼:
import asyncio
import websockets
import ssl
:
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
async def logIn(uri, myjson):
async with websockets.connect(uri) as websocket:
await websocket.send(myjson)
async def logIn(uri, myjson):
async with websockets.connect(uri, ssl=ssl_context) as websocket:
await websocket.send(myjson)
resp = await websocket.recv()
print(resp)
myurl = f"wss://{args.server}:{args.port}"
print("connection url:{}".format(myurl))
# logdef is the json string I send in
asyncio.get_event_loop().run_until_complete(
logIn(myurl, logdef)
)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2210 次 |
最近记录: |