【发布时间】:2020-07-26 13:55:04
【问题描述】:
我正在尝试使用 ftplib 模块在 ftps 连接上实现相互身份验证。
这是我的代码:
Context = ssl.SSLContext(ssl.PROTOCOL_TLSv1_2)
Context.load_verify_locations(cafile=trusted.txt,capath=path)
Context.load_cert_chain(certfile=mycert.txt,keyfile=mikey.txt,password=xxxx)
Context.verify_mode=True
Ftp = ftplib.FTP_TLS(Context=Context)
Ftp.connect(host, port)
Ftp.auth()
Ftp.prot_p()
Ftp.set_pasv(True)
Ftp.cwd(dest_dir)
Ftp.storlines(xx,xx)
Ftp.close()
但是,只有在 ftps 服务器端将客户端身份验证设置为 no 时,上述方法才能正常工作。当我们尝试使用客户端身份验证时是的
错误码如下。
Ssl.SSLError: [SSL:SSLV3_ALERT_CERTIFICATE_UNKNOWN] sslv3 alert certificate unknown (_ssl.c:777)
我在 ca 文件中定义了服务器证书链。 我在服务器端定义了我的信任。 仍然无法正常连接。如果在服务器端禁用客户端身份验证,它会很好地工作。
关于可能出错的任何建议。会不会是密码? 我尝试设置密码,但不知道实时交换是如何发生的。或者这可能是 ftplib 根本不支持完全相互身份验证?
【问题讨论】:
标签: python ssl ftplib mutual-authentication