khl.py khl.py
主页
文档
示例
  • khl.py (opens new window)
  • khl.py.docs (opens new window)
KOOK (opens new window)
主页
文档
示例
  • khl.py (opens new window)
  • khl.py.docs (opens new window)
KOOK (opens new window)
  • 机器人

    • 初始化
    • 命令
    • 定时任务
    • 在玩状态
  • 消息

    • 消息类型
    • 上传和发送文件或图片
    • 卡片消息
  • 频道

    • 获取频道对象
    • 主动发送消息
  • 用户

    • 获取机器人用户对象
    • 获取用户对象和发送私聊信息
    • 机器人下线
  • 服务器

    • 获取服务器对象
    • 服务器角色操作
    • 设置用户昵称
  • 事件

    • 事件基础处理
  • 其他

    • KOOK客户端获取各类ID
    • 多文件注册机器人命令
    • 配置python的venv虚拟环境
    • 获取图片链接
    • 尝试自己调用api
    • OpenSSL本地证书无法获取错误
      • 1. 问题说明
      • 2. 解决办法
        • 2.1 更新本地ca包
        • 2.2 查看本地主机的链接
        • 2.3 检测python的ssl模块
        • 2.4 解决错误
      • 3.完美!
        • MAC下更常见?
  • docs
  • 其他
musnows
2025-09-20
目录

OpenSSL本地证书无法获取错误

# 1. 问题说明

在某些情况下,运行khl.py的时候,会遇到aiohttp无法获取到本地证书的错误,其核心的报错如下

ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)
完整错误日志
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 340, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 340, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 340, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 340, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 340, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 340, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 340, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 340, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 340, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 340, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]
Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 40, in <module>
    cert=Cert(cafile=certifi.where())  # 使用certifi的证书
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Cert.__init__() got an unexpected keyword argument 'cafile'
Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 40, in <module>
    cert=Cert(cafile=certifi.where())  # 使用certifi的证书
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Cert.__init__() got an unexpected keyword argument 'cafile'
Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 42, in <module>
    cert=Cert(certifi.where())  # 新版本去掉了 cafile 参数名
         ^^^^^^^^^^^^^^^^^^^^^
TypeError: Cert.__init__() takes 1 positional argument but 2 were given

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 48, in <module>
    bot = Bot(
          ^^^^
TypeError: Bot.__init__() got an unexpected keyword argument 'api_base_url'
Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 37, in <module>
    bot = Bot(
          ^^^^
TypeError: Bot.__init__() got an unexpected keyword argument 'api_base_url'
Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 37, in <module>
    bot = Bot(
          ^^^^
TypeError: Bot.__init__() got an unexpected keyword argument 'api_base_url'
Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 36, in <module>
    bot = Bot(
          ^^^^
TypeError: Bot.__init__() got an unexpected keyword argument 'api_base_url'
Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 36, in <module>
    bot = Bot(
          ^^^^
TypeError: Bot.__init__() got an unexpected keyword argument 'api_base_url'
KOOK机器人启动中...
Traceback (most recent call last):
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1283, in _wrap_create_connection
    return await self._loop.create_connection(*args, **kwargs, sock=sock)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1112, in create_connection
    transport, protocol = await self._create_connection_transport(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 1145, in _create_connection_transport
    await waiter
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 575, in _on_handshake_complete
    raise handshake_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/sslproto.py", line 557, in _do_handshake
    self._sslobj.do_handshake()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/ssl.py", line 979, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)

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

Traceback (most recent call last):
  File "/www/wwwroot/main/src/main.py", line 281, in <module>
    bot.run()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 493, in run
    self.loop.run_until_complete(self.start())
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/asyncio/base_events.py", line 653, in run_until_complete
    return future.result()
           ^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/bot/bot.py", line 486, in start
    await self.client.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/client.py", line 369, in start
    await asyncio.gather(self.handle_pkg(), self.gate.run(self._pkg_queue))
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/gateway.py", line 39, in run
    await self.receiver.start()
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 106, in start
    await self._get_gateway(cs)
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/khl/receiver.py", line 79, in _get_gateway
    async with cs.get(f"{API}/gateway/index",
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 1488, in __aenter__
    self._resp: _RetType = await self._coro
                           ^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 770, in _request
    resp = await handler(req)
           ^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/client.py", line 725, in _connect_and_send_request
    conn = await self._connector.connect(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 642, in connect
    proto = await self._create_connection(req, traces, timeout)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1209, in _create_connection
    _, proto = await self._create_direct_connection(req, traces, timeout)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1581, in _create_direct_connection
    raise last_exc
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1550, in _create_direct_connection
    transp, proto = await self._wrap_create_connection(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/www/server/pyporject_evn/src_venv/lib/python3.11/site-packages/aiohttp/connector.py", line 1285, in _wrap_create_connection
    raise ClientConnectorCertificateError(req.connection_key, exc) from exc
aiohttp.client_exceptions.ClientConnectorCertificateError: Cannot connect to host www.kaiheila.cn:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1002)')]

如果你知道证书和CA的含义,那么大概能猜到这个报错是什么意思。

所有站点的ssl证书,都需要经过CA机构的认证和颁发。操作系统会默认内嵌已有CA机构的公钥,以用于解密CA颁发的证书中的数字签名。

因为CA机构是内嵌在操作系统本地的,如果一个证书的颁发机构不在本地已有CA中,该站点的SSL证书可能是自签名证书,就会被报不安全。因为在默认情况下,自签名证书是不被认可的。

# 2. 解决办法

这个问题的原因并非你的主机上缺少CA证书,而大概率是python无法在本地ssl证书应该存在的路径中,找到证书。

参考博客:https://blog.musnow.top/posts/3348986841/ (opens new window) 可以解决

此问题在MacOS、CentOS操作系统中非常常见,几乎必现,在Ubuntu中一般不会有此问题。

下面介绍在CentOS中解决此问题的步骤。

# 2.1 更新本地ca包

先 yum install ca-certificates,已经装过的话那就是 yum update ca-certificates 如果不行再 pip3 install certifi

操作完毕上面的步骤,发现本地已经安装了最新版本的ca-certificates,python也有安装certifi包

$ yum update ca-certificates
Repository extras is listed more than once in the configuration
Warning: failed loading '/etc/yum.repos.d/epel.repo', skipping.
Last metadata expiration check: 8:42:37 ago on Thu 23 Feb 2023 03:09:14 PM UTC.
Dependencies resolved.
Nothing to do.
Complete!

$ pip3.10 install  certifi
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: certifi in ./.local/lib/python3.10/site-packages (2022.12.7)

$ pip3.10 install  certifi -U
Defaulting to user installation because normal site-packages is not writeable
Requirement already satisfied: certifi in ./.local/lib/python3.10/site-packages (2022.12.7)

# 2.2 查看本地主机的链接

于是尝试使用如下命令,看看主机是否能成功连接到kaiheila.cn(kookapp.cn) 并认证ssl证书

openssl s_client -connect www.kookapp.cn:443 -showcerts

输出了如下的信息

depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = "DigiCert, Inc.", CN = RapidSSL Global TLS RSA4096 SHA256 2022 CA1
verify return:1
depth=0 CN = *.kookapp.cn
verify return:1
CONNECTED(00000003)
---
Certificate chain
 0 s:CN = *.kookapp.cn
   i:C = US, O = "DigiCert, Inc.", CN = RapidSSL Global TLS RSA4096 SHA256 2022 CA1
-----BEGIN CERTIFICATE-----
MIIHkTCCBXmgAwIBAgIQCUlurlf6m1VXsuISNqlT8DANBgkqhkiG9w0BAQsFADBc
MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xNDAyBgNVBAMT
K1JhcGlkU1NMIEdsb2JhbCBUTFMgUlNBNDA5NiBTSEEyNTYgMjAyMiBDQTEwHhcN
MjIwNjE1MDAwMDAwWhcNMjMwNjE1MjM1OTU5WjAXMRUwEwYDVQQDDAwqLmtvb2th
cHAuY24wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDB1uHkQ/oEkGNl
oVa6wHz424VznxL+eUt6AAfNhtIXeone8rtnJqeoDJ24lmBYUrL00tChCp4rdTdd
crqPppDYSEY7+/U0hf39pDrmsGKZeeOu7JvANjtvqLFdXsqe5CnXtxAo5QUXB9gc
kttoLTZZX5O1Gyi6mqDtsFCTaVpsQmZWVcbA21zLAdAZJyUyzM2VyfCUPQHs+VFE
rcmA9SN8nkppLyf00lIHCWR6v9HYC2XgjHN2JX8ARJwTEddhHjvleMc/SlHncU6f
pZ8itWx8NzBL6MwPKEjmHgKp0VYBMY6PHrSR/j/XtgOweodp1JBIr6yLLlyCu/lJ
ksCwMUIZAgMBAAGjggOSMIIDjjAfBgNVHSMEGDAWgBTwnIX9op99j8lou9XUiU0d
vtOQ/zAdBgNVHQ4EFgQUYe6lb4/s4J82aqWfNDaev2MD8k4wIwYDVR0RBBwwGoIM
Ki5rb29rYXBwLmNuggprb29rYXBwLmNuMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUE
FjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwgZ8GA1UdHwSBlzCBlDBIoEagRIZCaHR0
cDovL2NybDMuZGlnaWNlcnQuY29tL1JhcGlkU1NMR2xvYmFsVExTUlNBNDA5NlNI
QTI1NjIwMjJDQTEuY3JsMEigRqBEhkJodHRwOi8vY3JsNC5kaWdpY2VydC5jb20v
UmFwaWRTU0xHbG9iYWxUTFNSU0E0MDk2U0hBMjU2MjAyMkNBMS5jcmwwPgYDVR0g
BDcwNTAzBgZngQwBAgEwKTAnBggrBgEFBQcCARYbaHR0cDovL3d3dy5kaWdpY2Vy
dC5jb20vQ1BTMIGHBggrBgEFBQcBAQR7MHkwJAYIKwYBBQUHMAGGGGh0dHA6Ly9v
Y3NwLmRpZ2ljZXJ0LmNvbTBRBggrBgEFBQcwAoZFaHR0cDovL2NhY2VydHMuZGln
aWNlcnQuY29tL1JhcGlkU1NMR2xvYmFsVExTUlNBNDA5NlNIQTI1NjIwMjJDQTEu
Y3J0MAkGA1UdEwQCMAAwggF/BgorBgEEAdZ5AgQCBIIBbwSCAWsBaQB3AOg+0No+
9QY1MudXKLyJa8kD08vREWvs62nhd31tBr1uAAABgWbUskcAAAQDAEgwRgIhAL1q
ZKig2NqYtlAVnaXtJ7Tk+OuROrPHGR8t2zyNTb6xAiEAsLL5yuvJ/WtIj0bLwbKR
0/nFe/Juub3aZjrNvUhzZIIAdQA1zxkbv7FsV78PrUxtQsu7ticgJlHqP+Eq76gD
wzvWTAAAAYFm1LJ6AAAEAwBGMEQCIDK3qkxuTUB1Dngycy9/LECyVXjlpi2eJBAC
6oZPJQ/VAiBs1iupiYwavmD2m6QrDzzZrW2MJWx4LMxCtvf6pmN3NwB3ALc++yTf
nE26dfI5xbpY9Gxd/ELPep81xJ4dCYEl7bSZAAABgWbUsnkAAAQDAEgwRgIhAL5v
fkeeQAwowpkUhf0U/Z2fFiL8IY+QsCyED40zw0d1AiEA02UjHM3tztsrMn2xyzmT
kVgXnly/OozP+LjdwdsTa6gwDQYJKoZIhvcNAQELBQADggIBAGdBom7y2NXOZL7K
xtZFBFQCBJrEQOHZvuN4Etkmotb+0aVnrEZ/Qc5+zl86YqURcmOZgPhzSjuVfTvU
sJJ1TkC/tMYofoo1Db7B5yRxQmjEYRNLFAZ8rbP/pd5Js8ZGWW7RcxqG+zebqDDD
2CWvpiJNStu/yjWwdsFXQUwU0XOGUfwJDHD0eSBaa3uclAn3kUqF82l2X9qzvy9E
exGjPOSWyNuksjeScr32OyNUrwo7RUYJU4Ztl8xaiaxcvg7u2/o9WWzPhHMVI6ij
rJbj6Wn+BMe3SMYcR/L+foItjWAuOqOVB7IKO32JgCkP1vyl8AWs0up8ddI/9jn3
px8ii0HphKJnkCPZNmLnnOhFXQjoPy2PRmKqusP0kleJw1ZpQXsQpm3yZqFggyFH
8S4ii83kkHBynC89dlwlBIkF29Ds4mYjau6mZZxE69By7ptvFvcYREYslaRMxd16
6PEf5mp5jBKSiI2iYcP8PQOudhObpkuw+KHz8ntkf++HeluuEiqsKyiyyiXm5dmR
E/9uIUjPcQia5ohs2VpAgOLhLG6yphWCHQ6awFj9q3Ce1Mm5yXyZFvLXWGwoJj6j
CVXAZDchwX4uiHW2fI3GHz1pTPg0L3NE/M2CHnQWJlh9cgOljmaZXCeKmLdA9phD
+NQho5xVElRiF+rijlrkMutS7p1Y
-----END CERTIFICATE-----
 1 s:C = US, O = "DigiCert, Inc.", CN = RapidSSL Global TLS RSA4096 SHA256 2022 CA1
   i:C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
-----BEGIN CERTIFICATE-----
MIIFyzCCBLOgAwIBAgIQCgWbJfVLPYeUzGYxR3U4ozANBgkqhkiG9w0BAQsFADBh
MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
QTAeFw0yMjA1MDQwMDAwMDBaFw0zMTExMDkyMzU5NTlaMFwxCzAJBgNVBAYTAlVT
MRcwFQYDVQQKEw5EaWdpQ2VydCwgSW5jLjE0MDIGA1UEAxMrUmFwaWRTU0wgR2xv
YmFsIFRMUyBSU0E0MDk2IFNIQTI1NiAyMDIyIENBMTCCAiIwDQYJKoZIhvcNAQEB
BQADggIPADCCAgoCggIBAKY5PJhwCX2UyBb1nelu9APen53D5+C40T+BOZfSFaB0
v0WJM3BGMsuiHZX2IHtwnjUhLL25d8tgLASaUNHCBNKKUlUGRXGztuDIeXb48d64
k7Gk7u7mMRSrj+yuLSWOKnK6OGKe9+s6oaVIjHXY+QX8p2I2S3uew0bW3BFpkeAr
LBCU25iqeaoLEOGIa09DVojd3qc/RKqr4P11173R+7Ub05YYhuIcSv8e0d7qN1sO
1+lfoNMVfV9WcqPABmOasNJ+ol0hAC2PTgRLy/VZo1L0HRMr6j8cbR7q0nKwdbn4
Ar+ZMgCgCcG9zCMFsuXYl/rqobiyV+8U37dDScAebZTIF/xPEvHcmGi3xxH6g+dT
CjetOjJx8sdXUHKXGXC9ka33q7EzQIYlZISF7EkbT5dZHsO2DOMVLBdP1N1oUp0/
1f6fc8uTDduELoKBRzTTZ6OOBVHeZyFZMMdi6tA5s/jxmb74lqH1+jQ6nTU2/Mma
hGNxUuJpyhUHezgBA6sto5lNeyqc+3Cr5ehFQzUuwNsJaWbDdQk1v7lqRaqOlYjn
iomOl36J5txTs0wL7etCeMRfyPsmc+8HmH77IYVMUOcPJb+0gNuSmAkvf5QXbgPI
Zursn/UYnP9obhNbHc/9LYdQkB7CXyX9mPexnDNO7pggNA2jpbEarLmZGi4grMmf
AgMBAAGjggGCMIIBfjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBTwnIX9
op99j8lou9XUiU0dvtOQ/zAfBgNVHSMEGDAWgBQD3lA1VtFMu2bwo+IbG8OXsj3R
VTAOBgNVHQ8BAf8EBAMCAYYwHQYDVR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMC
MHYGCCsGAQUFBwEBBGowaDAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNl
cnQuY29tMEAGCCsGAQUFBzAChjRodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20v
RGlnaUNlcnRHbG9iYWxSb290Q0EuY3J0MEIGA1UdHwQ7MDkwN6A1oDOGMWh0dHA6
Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwPQYD
VR0gBDYwNDALBglghkgBhv1sAgEwBwYFZ4EMAQEwCAYGZ4EMAQIBMAgGBmeBDAEC
AjAIBgZngQwBAgMwDQYJKoZIhvcNAQELBQADggEBAAfjh/s1f5dDdfm0sNm74/dW
MbbsxfYV1LoTpFt+3MSUWvSbiPQfUkoV57b5rutRJvnPP9mSlpFwcZ3e1nSUbi2o
ITGA7RCOj23I1F4zk0YJm42qAwJIqOVenR3XtyQ2VR82qhC6xslxtNf7f2Ndx2G7
Mem4wpFhyPDT2P6UJ2MnrD+FC//ZKH5/ERo96ghz8VqNlmL5RXo8Ks9rMr/Ad9xw
Y4hyRvAz5920myUffwdUqc0SvPlFnahsZg15uT5HkK48tHR0TLuLH8aRpzh4KJ/Y
p0sARNb+9i1R4Fg5zPNvHs2BbIve0vkwxAy+R4727qYzl3027w9jEFC6HMXRaDc=
-----END CERTIFICATE-----
---
Server certificate
subject=CN = *.kookapp.cn

issuer=C = US, O = "DigiCert, Inc.", CN = RapidSSL Global TLS RSA4096 SHA256 2022 CA1

---
No client certificate CA names sent
Peer signing digest: SHA256
Peer signature type: RSA-PSS
Server Temp Key: X25519, 253 bits
---
SSL handshake has read 3993 bytes and written 392 bytes
Verification: OK
---
New, TLSv1.3, Cipher is TLS_AES_256_GCM_SHA384
Server public key is 2048 bit
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)
---

在这里面能看到如下内容

SSL handshake has read 3993 bytes and written 392 bytes
Verification: OK

也就是说,我们的本地主机是能成功认证kookapp.cn的ssl证书的,那么问题就出现在python的ssl模块中了!

# 2.3 检测python的ssl模块

python开启一个REPL,输入如下的两行代码

import ssl
ssl.create_default_context().cert_store_stats()

输出的内容如下

>>> import ssl
>>> ssl.create_default_context().cert_store_stats()
{'x509': 0, 'crl': 0, 'x509_ca': 0}

这里就能看出来问题了,全都是0!难怪说没有办法获取本地的CA证书。

作为对比,一台正常的windows11电脑输出如下,应该是有数值的。

>>> import ssl
>>> ssl.create_default_context().cert_store_stats()
{'x509': 87, 'crl': 0, 'x509_ca': 84}

# 2.4 解决错误

找到了错误,那就得想办法解决!

python开启一个REPL,输入如下的两行代码

import ssl
ssl.get_default_verify_paths()

输出内容如下,这是本地python查找CA证书的位置

>>> import ssl
>>> ssl.get_default_verify_paths()
DefaultVerifyPaths(cafile=None, capath='/usr/local/openssl-1.1.1/ssl/certs', openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/usr/local/openssl-1.1.1/ssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/usr/local/openssl-1.1.1/ssl/certs')

如果是mac系统,输出如下

>>> ssl.get_default_verify_paths()
DefaultVerifyPaths(cafile=None, capath=None, openssl_cafile_env='SSL_CERT_FILE', openssl_cafile='/Library/Frameworks/Python.framework/Versions/3.10/etc/openssl/cert.pem', openssl_capath_env='SSL_CERT_DIR', openssl_capath='/Library/Frameworks/Python.framework/Versions/3.10/etc/openssl/certs')

其中/usr/local/openssl-1.1.1/ssl/cert.pem中应该会保存CA的信息,使用ls查看本地的这个文件的内容

ls /usr/local/openssl-1.1.1/ssl/cert.pem

好家伙,发现文件压根不存在!

ls: cannot access '/usr/local/openssl-1.1.1/ssl/cert.pem': No such file or directory

看看openssl的版本和路径

openssl  version -d

输出如下

OPENSSLDIR: "/etc/pki/tls"

于是看看这个目录下有没有我们需要的cert.pem

$ ls /etc/pki/tls
cert.pem  certs  ct_log_list.cnf  misc  openssl.cnf  private

有!那么接下来要做的,就是创建一个软连接,将其弄到/usr/local中!

ln -s /etc/pki/tls/cert.pem /usr/local/openssl-1.1.1/ssl/cert.pem

这样Python才能成功找到本地的CA证书。

# 3.完美!

做完这一切后,再次运行机器人,这次么有报错了!

$ py3 main.py
[FileManage] load all files
[BOT] Start at: [23-02-24 00:25:29]
[BOT.TASK] fetch_public_channel success

# MAC下更常见?

似乎这个问题在mac下更常见?由于没有使用过mac设备,本文不解释相关内容

image-20230224093050205

issue截图:

上次更新: 2025/09/21, 01:40:27
尝试自己调用api

← 尝试自己调用api

Theme by Vdoing | Copyright © 2023-2025 khl.py | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式