【发布时间】:2021-03-28 15:09:51
【问题描述】:
我在这个问题中遇到了一个类似的问题(证书验证失败),我试图运行一个 python 机器人来解决不和谐: Discord.py SSLCertVerificationError
我的问题:
Traceback (most recent call last):
File "c:/Users/ska19/BlackJack/Coding_Projects/DiscordBots/.vscode/Anekdotemain.py", line 15, in <module>
bot.run(settings['token'])
File "C:\Users\ska19\Anaconda3\lib\site-packages\discord\client.py", line 708, in run
return future.result()
File "C:\Users\ska19\Anaconda3\lib\site-packages\discord\client.py", line 687, in runner
await self.start(*args, **kwargs)
File "C:\Users\ska19\Anaconda3\lib\site-packages\discord\client.py", line 650, in start
await self.login(*args, bot=bot)
File "C:\Users\ska19\Anaconda3\lib\site-packages\discord\client.py", line 499, in login
await self.http.static_login(token.strip(), bot=bot)
File "C:\Users\ska19\Anaconda3\lib\site-packages\discord\http.py", line 291, in static_login
data = await self.request(Route('GET', '/users/@me'))
File "C:\Users\ska19\Anaconda3\lib\site-packages\discord\http.py", line 185, in request
async with self.__session.request(method, url, **kwargs) as r:
File "C:\Users\ska19\Anaconda3\lib\site-packages\aiohttp\client.py", line 1012, in __aenter__
self._resp = await self._coro
File "C:\Users\ska19\Anaconda3\lib\site-packages\aiohttp\client.py", line 483, in _request
timeout=real_timeout
File "C:\Users\ska19\Anaconda3\lib\site-packages\aiohttp\connector.py", line 523, in connect
proto = await self._create_connection(req, traces, timeout)
File "C:\Users\ska19\Anaconda3\lib\site-packages\aiohttp\connector.py", line 859, in _create_connection
req, traces, timeout)
File "C:\Users\ska19\Anaconda3\lib\site-packages\aiohttp\connector.py", line 1004, in _create_direct_connection
raise last_exc
File "C:\Users\ska19\Anaconda3\lib\site-packages\aiohttp\connector.py", line 986, in _create_direct_connection
req=req, client_error=client_error)
File "C:\Users\ska19\Anaconda3\lib\site-packages\aiohttp\connector.py", line 939, in _wrap_create_connection
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: certificate has expired (_ssl.c:1076)')]
我已经尝试了一些解决问题的方法:
- 重新生成的机器人令牌
- 使时钟和数据精确到我所在的地区
- 更新了 conda 环境
- 在 conda 中升级证书(conda install --upgrade certifi)
- 更新了 git
这些都没有帮助,同样的问题出现了:(
我也看到了直接去python运行之类的解决方案:
install Certificate.command
但我不知道如何运行命令(抱歉用尽了)。
或者手动安装证书,但我有点担心这种方法可能会崩溃。
在超级困惑之后,我决定在git和conda中检查openssl版本,发现它们是不同的:
- 吉特:
$ openssl version -a
OpenSSL 1.1.1h 22 Sep 2020
built on: Tue Sep 22 14:26:00 2020 UTC
platform: mingw64
options: bn(64,64) rc4(16x,int) des(long) idea(int) blowfish(ptr)
compiler: gcc -m64 -Wall -O3 -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DAESNI_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM -DUNICODE -D_UNICODE -DWIN32_LEAN_AND_MEAN -D_MT -DZLIB -DZLIB_SHARED -DNDEBUG -D__MINGW_USE_VC2005_COMPAT -DOPENSSLBIN="\"/mingw64/bin\""
OPENSSLDIR: "/mingw64/ssl"
ENGINESDIR: "/mingw64/lib/engines-1_1"
Seeding source: os-specific
- Conda 提示:
OpenSSL 1.1.1d 10 Sep 2019
built on: Fri Sep 27 14:07:54 2019 UTC
platform: VC-WIN64A
options: bn(64,64) rc4(16x,int) des(long) idea(int) blowfish(ptr)
compiler: cl /Zi /Fdossl_static.pdb /Gs0 /GF /Gy /MD /W3 /wd4090 /nologo /O2 -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_CPUID_OBJ -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DKECCAK1600_ASM -DRC4_ASM -DMD5_ASM -DVPAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DX25519_ASM -DPOLY1305_ASM
OPENSSLDIR: "C:\ci\openssl_1569593028961\_h_env\Library"
ENGINESDIR: "C:\ci\openssl_1569593028961\_h_env\Library\lib\engines-1_1"
Seeding source: os-specific
可能我的问题的解决方案是在 conda 环境中更新 openssl dir 或将 git openssl dir 设置为默认值 但是在与最初的问题发生了几个小时的冲突之后,我的想法就投降了:(
以防万一,我的代码(无关紧要):
import discord
from discord.ext import commands
from config import settings
bot = commands.Bot(command_prefix= settings['prefix'])
@bot.command()
async def hello(ctx):
author = ctx.message.author
await ctx.send(f'Hello, {author.mention}!')
bot.run(settings['token'])
配置文件:
settings = {
'token': token,
'bot': 'AnekdoteBot',
'id': id,
'prefix': '!'
}
谁能帮我找到解决办法?
【问题讨论】:
标签: python-3.x git openssl windows-10 conda