首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在FTPS服务器上使用ftplib列出一个目录时,sslobj.do_handshake中的“sslobj.do_handshake:[Errno 0] Errno 0]错误

在FTPS服务器上使用ftplib列出一个目录时,sslobj.do_handshake中的“sslobj.do_handshake:[Errno 0] Errno 0]错误
EN

Stack Overflow用户
提问于 2021-03-30 15:17:12
回答 1查看 1.2K关注 0票数 1

我想连接到包含一些不受信任证书的FTPS服务器。当我使用简单的:

代码语言:javascript
运行
复制
lftp -u user hostname

然后,在dir命令之后有一个错误:

ls:致命错误:证书验证:不信任

通过执行以下命令,可以在lftp中解决这个问题:

代码语言:javascript
运行
复制
lftp -e "set ssl:verify-certificate false" -u user hostname

我试图在Python中建立相同的连接,例如使用ftplib模块:

代码语言:javascript
运行
复制
import ftplib
ftp = ftplib.FTP_TLS()
ftp.connect(hostname, port)
ftp.login(username, password)
ftp.prot_p()
ftp.dir()

但它会引发OSError异常:

代码语言:javascript
运行
复制
Traceback (most recent call last):
  File "/usr/lib/python3.8/code.py", line 90, in runcode
    exec(code, self.locals)
  File "<console>", line 1, in <module>
  File "/usr/lib/python3.8/ftplib.py", line 558, in dir
    self.retrlines(cmd, func)
  File "/usr/lib/python3.8/ftplib.py", line 451, in retrlines
    with self.transfercmd(cmd) as conn, \
  File "/usr/lib/python3.8/ftplib.py", line 382, in transfercmd
    return self.ntransfercmd(cmd, rest)[0]
  File "/usr/lib/python3.8/ftplib.py", line 783, in ntransfercmd
    conn = self.context.wrap_socket(conn,
  File "/usr/lib/python3.8/ssl.py", line 500, in wrap_socket
    return self.sslsocket_class._create(
  File "/usr/lib/python3.8/ssl.py", line 1040, in _create
    self.do_handshake()
  File "/usr/lib/python3.8/ssl.py", line 1309, in do_handshake
    self._sslobj.do_handshake()
OSError: [Errno 0] Error

问题似乎与te OSError during authenticating to an ftps server with ftplib.FTP_TLS相似,因此我也尝试使用其他上下文,例如:

代码语言:javascript
运行
复制
import ssl
ctx = ssl._create_stdlib_context(ssl.PROTOCOL_TLSv1_2)
ftp = FTP_TLS(context=ctx)

代码语言:javascript
运行
复制
ctx = ssl.ssl._create_unverified_context(ssl.PROTOCOL_TLSv1_2)
ftp = FTP_TLS(context=ctx)

但是错误仍然是一样的。有什么办法可以禁用证书验证吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-30 17:13:08

这不可能是证书问题,因为只有在dir时才会出现错误。connect成功了。

打开FTP数据连接时会出现TLS错误。根本原因很可能是服务器需要恢复TLS会话。

FTPS with Python ftplib - Session reuse required

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66873738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档