Python 3 SSL在OpenSSL安装后失败

Python 3 SSL在OpenSSL安装后失败,openssl,discord.py,python-3.8,aiohttp,ubuntu-20.04,Openssl,Discord.py,Python 3.8,Aiohttp,Ubuntu 20.04,每当我在安装openssl后尝试运行discord.py discord bot时 我得到了这个巨大的错误,据我所知,其要点是它找不到不和谐的证明。我用BASH和C++测试,它们连接得很好,但是我不能通过Python连接到任何服务器。我已经重新安装了Certifi和CA证书,还安装了PyOpenSSL并手动添加了签名密钥。问题可能是什么?我如何解决 Traceback (most recent call last): File "/home/valkyrie_pilot/.loca

每当我在安装openssl后尝试运行discord.py discord bot时 我得到了这个巨大的错误,据我所知,其要点是它找不到不和谐的证明。我用BASH和C++测试,它们连接得很好,但是我不能通过Python连接到任何服务器。我已经重新安装了Certifi和CA证书,还安装了PyOpenSSL并手动添加了签名密钥。问题可能是什么?我如何解决

Traceback (most recent call last):
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/aiohttp/connector.py", line 969, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs)  # type: ignore  # noqa
  File "/usr/lib/python3.8/asyncio/base_events.py", line 1050, in create_connection
    transport, protocol = await self._create_connection_transport(
  File "/usr/lib/python3.8/asyncio/base_events.py", line 1080, in _create_connection_transport
    await waiter
  File "/usr/lib/python3.8/asyncio/sslproto.py", line 529, in data_received
    ssldata, appdata = self._sslpipe.feed_ssldata(data)
  File "/usr/lib/python3.8/asyncio/sslproto.py", line 189, in feed_ssldata
    self._sslobj.do_handshake()
  File "/usr/lib/python3.8/ssl.py", line 944, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "./betterbot.py", line 285, in <module>
    valkyriebot.run(TOKEN)
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/discord/client.py", line 718, in run
    return future.result()
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/discord/client.py", line 697, in runner
    await self.start(*args, **kwargs)
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/discord/client.py", line 660, in start
    await self.login(*args, bot=bot)
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/discord/client.py", line 509, in login
    await self.http.static_login(token.strip(), bot=bot)
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/discord/http.py", line 293, in static_login
    data = await self.request(Route('GET', '/users/@me'))
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/discord/http.py", line 185, in request
    async with self.__session.request(method, url, **kwargs) as r:
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/aiohttp/client.py", line 1117, in __aenter__
    self._resp = await self._coro
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/aiohttp/client.py", line 520, in _request
    conn = await self._connector.connect(
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/aiohttp/connector.py", line 535, in connect
    proto = await self._create_connection(req, traces, timeout)
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/aiohttp/connector.py", line 892, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/aiohttp/connector.py", line 1051, in _create_direct_connection
    raise last_exc
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/aiohttp/connector.py", line 1020, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
  File "/home/valkyrie_pilot/.local/lib/python3.8/site-packages/aiohttp/connector.py", line 971, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host discord.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)')]```
回溯(最近一次呼叫最后一次):
文件“/home/valkyrie\u pilot/.local/lib/python3.8/site packages/aiohttp/connector.py”,第969行,在“包装”和“创建”连接中
返回等待自循环。创建连接(*args,**kwargs)#类型:忽略#noqa
文件“/usr/lib/python3.8/asyncio/base\u events.py”,第1050行,位于create\u connection中
传输,协议=等待自身。\u创建连接\u传输(
文件“/usr/lib/python3.8/asyncio/base\u events.py”,第1080行,在“创建连接”传输中
侍者
文件“/usr/lib/python3.8/asyncio/sslproto.py”,第529行,在收到的数据中
ssldata,appdata=self.\u sslpipe.feed\u ssldata(数据)
feedssldata中的文件“/usr/lib/python3.8/asyncio/sslproto.py”,第189行
赛尔夫:握手
文件“/usr/lib/python3.8/ssl.py”,第944行,在do_握手中
赛尔夫:握手
ssl.SSLCertVerificationError:[ssl:证书\u验证\u失败]证书验证失败:无法获取本地颁发者证书(\u ssl.c:1123)
上述异常是以下异常的直接原因:
回溯(最近一次呼叫最后一次):
文件“/betterbot.py”,第285行,在
valkyriebot.run(令牌)
文件“/home/valkyrie_pilot/.local/lib/python3.8/site packages/discord/client.py”,第718行,正在运行
返回future.result()
文件“/home/valkyrie_pilot/.local/lib/python3.8/site packages/discord/client.py”,第697行,在runner中
等待自我启动(*args,**kwargs)
文件“/home/valkyrie_pilot/.local/lib/python3.8/site packages/discord/client.py”,第660行,在开始处
等待self.login(*args,bot=bot)
文件“/home/valkyrie_pilot/.local/lib/python3.8/site packages/discord/client.py”,第509行,登录
等待self.http.static\u登录(token.strip(),bot=bot)
静态登录中的文件“/home/valkyrie_pilot/.local/lib/python3.8/site packages/discord/http.py”,第293行
data=wait self.request(路由('GET','/users/@me'))
文件“/home/valkyrie_pilot/.local/lib/python3.8/site packages/discord/http.py”,请求中的第185行
与self.\u session.request(方法、url、**kwargs)异步,作为r:
文件“/home/valkyrie_pilot/.local/lib/python3.8/site packages/aiohttp/client.py”,第1117行,在__
self.\u resp=等待self.\u coro
文件“/home/valkyrie_pilot/.local/lib/python3.8/site packages/aiohttp/client.py”,第520行,在请求中
conn=等待自检。\ U接头。连接(
文件“/home/valkyrie_pilot/.local/lib/python3.8/site packages/aiohttp/connector.py”,第535行,在connect中
proto=等待自我。创建连接(请求、跟踪、超时)
文件“/home/valkyrie\u pilot/.local/lib/python3.8/site packages/aiohttp/connector.py”,第892行,在创建连接中
_,proto=等待自我。创建直接连接(请求、跟踪、超时)
文件“/home/valkyrie\u pilot/.local/lib/python3.8/site packages/aiohttp/connector.py”,第1051行,在创建直接连接中
提出最后一次会议
文件“/home/valkyrie\u pilot/.local/lib/python3.8/site packages/aiohttp/connector.py”,第1020行,在创建直接连接中
transp,proto=等待自我。\u包装\u创建\u连接(
文件“/home/valkyrie\u pilot/.local/lib/python3.8/site packages/aiohttp/connector.py”,第971行,在“包装”和“创建”连接中
从exc提出客户端连接器证书错误(请求连接密钥,exc)
aiohttp.client_exceptions.ClientConnectorCertificateError:无法连接到主机discord.com:443 ssl:True[SSLCertVerificationError:(1),[ssl:CERTIFICATE_Verification_FAILED]CERTIFICATE Verification失败:无法获取本地颁发者证书(_ssl.c:1123)]```

出现此问题可能是因为您有一个新的VPS

我发现最好的解决办法是跑步
pip安装certifi
(确保您使用的Python for pip版本正确,有时可能是pip3)

完成后,只需运行:
sudo更新ca证书

如果您想知道什么是certifi,它是一个随请求预装的包,因此如果您有一个新的VPS,它不会安装。它是一个一次性包,因此安装完成后,您应该永远拥有必要的证书。如果您想自己检查它是什么,这里是


祝你有一个美好的一天,快乐地编码^ ^

stackoverflow规则:将重要的代码片段直接包含在问题中,不要强迫用户遵循链接。如果你愿意阅读问题,这是我的台式电脑,而不是VPS,我已经尝试重新安装certifi并更新ca证书