【问题标题】:Discord.py after the run shows SSLCertVerificationError. Mismatch of Git openssl lib and conda openssl versions. Windows 10Discord.py 运行后显示 SSLCertVerificationError。 Git openssl lib 和 conda openssl 版本不匹配。视窗 10
【发布时间】: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)')]

我已经尝试了一些解决问题的方法:

  1. 重新生成的机器人令牌
  2. 使时钟和数据精确到我所在的地区
  3. 更新了 conda 环境
  4. 在 conda 中升级证书(conda install --upgrade certifi)
  5. 更新了 git

这些都没有帮助,同样的问题出现了:(

我也看到了直接去python运行之类的解决方案:

install Certificate.command

但我不知道如何运行命令(抱歉用尽了)。

或者手动安装证书,但我有点担心这种方法可能会崩溃。

在超级困惑之后,我决定在git和conda中检查openssl版本,发现它们是不同的:

  1. 吉特:
$ 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
  1. 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


    【解决方案1】:

    好吧,正如我所说,您可以手动安装 SSL 证书。 检查这个:https://github.com/Rapptz/discord.py/issues/4159 - 适用于 windows

    在这里找到它SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1108) Discord/python

    我在这里下载了 PEM 认证:https://crt.sh/?id=1 然后将它们安装在我的本地计算机上,它有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-11
      • 2020-10-02
      • 1970-01-01
      • 2014-07-28
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      • 2013-04-28
      相关资源
      最近更新 更多