[英]SSL: SSLV3_ALERT_HANDSHAKE_FAILURE sslv3 alert handshake failure (_ssl.c:833)
[英]_ssl.c:777 sslv3 alert certificate unknown in ftplib program
我正在嘗試使用 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 根本不支持完全相互身份驗證?
Ssl.SSLError: [SSL:SSLV3_ALERT_CERTIFICATE_UNKNOWN] sslv3 警報證書未知 (_ssl.c:777)
如果您在客戶端收到此錯誤,則服務器無法驗證客戶端證書,即您的mycert.txt
和mikey.txt
。
由於客戶端證書的驗證是由服務器完成的,因此您必須查看服務器配置和日志以獲取有關您的客戶端證書不被接受的原因的更多信息。 典型的問題是客戶端證書是自簽名證書,頒發客戶端證書的 CA 在服務器中不受信任,或者需要中間證書來驗證證書但客戶端沒有發送這些證書。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.