Closed bcuiwikb closed 2 months ago
这个是个 SSL 证书验证问题,我在我的 Linux 和 MaxOS 上没复现这个问题,估计和 OS 有关。
2024-08-23 07:20:57.434| INFO |MainThread|astrbot.download_image_by_url|io.py:81 - 下载图片: https://multimedia.nt.qq.com.cn/
2024-08-23 07:20:58.020| INFO |MainThread|astrbot.save_temp_img|io.py:73 - 保存临时图片: temp/1724412058.jpg
可以试一下在你的机器上执行这段代码: https://github.com/LagrangeDev/Lagrange.Core/issues/315#issuecomment-2150276058
import ssl
import socket
def verify_ssl(hostname: str, port: int = 443):
context = ssl.create_default_context()
context.set_ciphers('AES')
with socket.create_connection((hostname, port)) as sock:
with context.wrap_socket(sock, server_hostname=hostname) as ssock:
print(ssock.cipher())
print(ssock.version())
verify_ssl('multimedia.nt.qq.com.cn')
看看输出什么
这个是个 SSL 证书验证问题,我在我的 Linux 和 MaxOS 上没复现这个问题,估计和 OS 有关。
2024-08-23 07:20:57.434| INFO |MainThread|astrbot.download_image_by_url|io.py:81 - 下载图片: https://multimedia.nt.qq.com.cn/ 2024-08-23 07:20:58.020| INFO |MainThread|astrbot.save_temp_img|io.py:73 - 保存临时图片: temp/1724412058.jpg
可以试一下在你的机器上执行这段代码: https://github.com/LagrangeDev/Lagrange.Core/issues/315#issuecomment-2150276058
import ssl import socket def verify_ssl(hostname: str, port: int = 443): context = ssl.create_default_context() context.set_ciphers('AES') with socket.create_connection((hostname, port)) as sock: with context.wrap_socket(sock, server_hostname=hostname) as ssock: print(ssock.cipher()) print(ssock.version()) verify_ssl('multimedia.nt.qq.com.cn')
看看输出什么
输出了以下内容
('AES128-GCM-SHA256', 'TLSv1.2', 128) TLSv1.2 还有就是我现在才看到 对不起
补一脚 我之前说的不太清楚 我的系统是ubuntu22.04
这个是个 SSL 证书验证问题,我在我的 Linux 和 MaxOS 上没复现这个问题,估计和 OS 有关。
2024-08-23 07:20:57.434| INFO |MainThread|astrbot.download_image_by_url|io.py:81 - 下载图片: https://multimedia.nt.qq.com.cn/ 2024-08-23 07:20:58.020| INFO |MainThread|astrbot.save_temp_img|io.py:73 - 保存临时图片: temp/1724412058.jpg
可以试一下在你的机器上执行这段代码: LagrangeDev/Lagrange.Core#315 (comment)
import ssl import socket def verify_ssl(hostname: str, port: int = 443): context = ssl.create_default_context() context.set_ciphers('AES') with socket.create_connection((hostname, port)) as sock: with context.wrap_socket(sock, server_hostname=hostname) as ssock: print(ssock.cipher()) print(ssock.version()) verify_ssl('multimedia.nt.qq.com.cn')
看看输出什么
输出了以下内容
('AES128-GCM-SHA256', 'TLSv1.2', 128) TLSv1.2 还有就是我现在才看到 对不起
没事没事。可以试着把 https://github.com/Soulter/AstrBot/blob/master/util/io.py#L92-L93 这两行改成 context.set_ciphers('AES')
我感觉这样就行了。
这个是个 SSL 证书验证问题,我在我的 Linux 和 MaxOS 上没复现这个问题,估计和 OS 有关。
2024-08-23 07:20:57.434| INFO |MainThread|astrbot.download_image_by_url|io.py:81 - 下载图片: https://multimedia.nt.qq.com.cn/ 2024-08-23 07:20:58.020| INFO |MainThread|astrbot.save_temp_img|io.py:73 - 保存临时图片: temp/1724412058.jpg
可以试一下在你的机器上执行这段代码: LagrangeDev/Lagrange.Core#315 (comment)
import ssl import socket def verify_ssl(hostname: str, port: int = 443): context = ssl.create_default_context() context.set_ciphers('AES') with socket.create_connection((hostname, port)) as sock: with context.wrap_socket(sock, server_hostname=hostname) as ssock: print(ssock.cipher()) print(ssock.version()) verify_ssl('multimedia.nt.qq.com.cn')
看看输出什么
输出了以下内容
('AES128-GCM-SHA256', 'TLSv1.2', 128) TLSv1.2 还有就是我现在才看到 对不起
没事没事。可以试着把 https://github.com/Soulter/AstrBot/blob/master/util/io.py#L92-L93 这两行改成
context.set_ciphers('AES')
我感觉这样就行了。
谢谢 我看看
这个是个 SSL 证书验证问题,我在我的 Linux 和 MaxOS 上没复现这个问题,估计和 OS 有关。
2024-08-23 07:20:57.434| INFO |MainThread|astrbot.download_image_by_url|io.py:81 - 下载图片: https://multimedia.nt.qq.com.cn/ 2024-08-23 07:20:58.020| INFO |MainThread|astrbot.save_temp_img|io.py:73 - 保存临时图片: temp/1724412058.jpg
可以试一下在你的机器上执行这段代码: LagrangeDev/Lagrange.Core#315 (comment)
import ssl import socket def verify_ssl(hostname: str, port: int = 443): context = ssl.create_default_context() context.set_ciphers('AES') with socket.create_connection((hostname, port)) as sock: with context.wrap_socket(sock, server_hostname=hostname) as ssock: print(ssock.cipher()) print(ssock.version()) verify_ssl('multimedia.nt.qq.com.cn')
看看输出什么
输出了以下内容
('AES128-GCM-SHA256', 'TLSv1.2', 128) TLSv1.2 还有就是我现在才看到 对不起
没事没事。可以试着把 https://github.com/Soulter/AstrBot/blob/master/util/io.py#L92-L93 这两行改成
context.set_ciphers('AES')
我感觉这样就行了。
我怎么感觉 我好像搞错了 改了之后日志消息变成了这个 我在外面 只能用手机了 你忍着看看 大致是 name 'context' is not defined
这个是个 SSL 证书验证问题,我在我的 Linux 和 MaxOS 上没复现这个问题,估计和 OS 有关。
2024-08-23 07:20:57.434| INFO |MainThread|astrbot.download_image_by_url|io.py:81 - 下载图片: https://multimedia.nt.qq.com.cn/ 2024-08-23 07:20:58.020| INFO |MainThread|astrbot.save_temp_img|io.py:73 - 保存临时图片: temp/1724412058.jpg
可以试一下在你的机器上执行这段代码: LagrangeDev/Lagrange.Core#315 (comment)
import ssl import socket def verify_ssl(hostname: str, port: int = 443): context = ssl.create_default_context() context.set_ciphers('AES') with socket.create_connection((hostname, port)) as sock: with context.wrap_socket(sock, server_hostname=hostname) as ssock: print(ssock.cipher()) print(ssock.version()) verify_ssl('multimedia.nt.qq.com.cn')
看看输出什么
输出了以下内容 ('AES128-GCM-SHA256', 'TLSv1.2', 128) TLSv1.2 还有就是我现在才看到 对不起
没事没事。可以试着把 https://github.com/Soulter/AstrBot/blob/master/util/io.py#L92-L93 这两行改成
context.set_ciphers('AES')
我感觉这样就行了。我怎么感觉 我好像搞错了 改了之后日志消息变成了这个 我在外面 只能用手机了 你忍着看看 大致是 name 'context' is not defined
打错了,应该是 ssl_context.set_ciphers('AES')
这个是个 SSL 证书验证问题,我在我的 Linux 和 MaxOS 上没复现这个问题,估计和 OS 有关。
2024-08-23 07:20:57.434| INFO |MainThread|astrbot.download_image_by_url|io.py:81 - 下载图片: https://multimedia.nt.qq.com.cn/ 2024-08-23 07:20:58.020| INFO |MainThread|astrbot.save_temp_img|io.py:73 - 保存临时图片: temp/1724412058.jpg
可以试一下在你的机器上执行这段代码: LagrangeDev/Lagrange.Core#315 (comment)
import ssl import socket def verify_ssl(hostname: str, port: int = 443): context = ssl.create_default_context() context.set_ciphers('AES') with socket.create_connection((hostname, port)) as sock: with context.wrap_socket(sock, server_hostname=hostname) as ssock: print(ssock.cipher()) print(ssock.version()) verify_ssl('multimedia.nt.qq.com.cn')
看看输出什么
输出了以下内容 ('AES128-GCM-SHA256', 'TLSv1.2', 128) TLSv1.2 还有就是我现在才看到 对不起
没事没事。可以试着把 https://github.com/Soulter/AstrBot/blob/master/util/io.py#L92-L93 这两行改成
context.set_ciphers('AES')
我感觉这样就行了。我怎么感觉 我好像搞错了 改了之后日志消息变成了这个 我在外面 只能用手机了 你忍着看看 大致是 name 'context' is not defined
打错了,应该是
ssl_context.set_ciphers('AES')
收到 谢谢
等一下 他还是没找到name 'ssl_context' 是不是没安装包
这是个变量
是我配置错了吗
我想我不小心把变量删了
加上这一行
ssl_context = ssl.create_default_context()
删掉 xxxx=ssl.CERT_NONE 一行
谢谢了 我想这个议题可以close了
发生了什么
下载图片时产生SSL错误 类似的事情在Lagrange已修复 https://github.com/LagrangeDev/Lagrange.Core/issues/315
如何复现?
@bot发送图片即可
AstrBot 版本与部署方式
3.3.10 命令行 linux
操作系统
Linux
额外信息
2024-08-23 13:49:59.455| ERROR |MainThread|astrbot.handle|handler.py:202 - Traceback (most recent call last): File "/usr/local/lib/python3.10/dist-packages/aiohttp/connector.py", line 1080, in _wrap_create_connection return await self._loop.create_connection(*args, **kwargs, sock=sock) File "/usr/lib/python3.10/asyncio/base_events.py", line 1103, in create_connection transport, protocol = await self._create_connection_transport( File "/usr/lib/python3.10/asyncio/base_events.py", line 1133, in _create_connection_transport await waiter File "/usr/lib/python3.10/asyncio/sslproto.py", line 534, in data_received ssldata, appdata = self._sslpipe.feed_ssldata(data) File "/usr/lib/python3.10/asyncio/sslproto.py", line 188, in feed_ssldata self._sslobj.do_handshake() File "/usr/lib/python3.10/ssl.py", line 975, in do_handshake self._sslobj.do_handshake() ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1007)
The above exception was the direct cause of the following exception:
Traceback (most recent call last): File "/root/AstrBot/astrbot/message/handler.py", line 196, in handle llm_result = await provider.text_chat( File "/root/AstrBot/model/provider/openai_official.py", line 322, in text_chat await self.assemble_context(session_id, prompt, image_url) File "/root/AstrBot/model/provider/openai_official.py", line 225, in assemble_context "url": await self.encode_image_bs64(image_url) File "/root/AstrBot/model/provider/openai_official.py", line 156, in encode_image_bs64 image_url = await download_image_by_url(image_url) File "/root/AstrBot/util/io.py", line 99, in download_image_by_url async with session.get(url, ssl=ssl_context) as resp: File "/usr/local/lib/python3.10/dist-packages/aiohttp/client.py", line 657, in _request conn = await self._connector.connect( File "/usr/local/lib/python3.10/dist-packages/aiohttp/connector.py", line 564, in connect proto = await self._create_connection(req, traces, timeout) File "/usr/local/lib/python3.10/dist-packages/aiohttp/connector.py", line 975, in _createconnection , proto = await self._create_direct_connection(req, traces, timeout) File "/usr/local/lib/python3.10/dist-packages/aiohttp/connector.py", line 1350, in _create_direct_connection raise last_exc File "/usr/local/lib/python3.10/dist-packages/aiohttp/connector.py", line 1319, in _create_direct_connection transp, proto = await self._wrap_create_connection( File "/usr/local/lib/python3.10/dist-packages/aiohttp/connector.py", line 1084, in _wrap_create_connection raise ClientConnectorSSLError(req.connection_key, exc) from exc aiohttp.client_exceptions.ClientConnectorSSLError: Cannot connect to host multimedia.nt.qq.com.cn:443 ssl:<ssl.SSLContext object at 0x7fa4575efe40> [[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1007)]
2024-08-23 13:49:59.455| ERROR |MainThread|astrbot.handle|handler.py:203 - LLM 调用失败。
你愿意提交 PR 吗?
Code of Conduct