Ssl-Certificate

如何避免lftp證書驗證錯誤?

  • January 18, 2021

我正在嘗試讓我的Pelican 部落格正常工作。它使用 lftp 將實際部落格傳輸到伺服器,但我總是收到錯誤消息:

mirror: Fatal error: Certificate verification: subjectAltName does not match ‘blogname.com’

我認為 lftp 正在檢查 SSL,而 Pelican 的快速設置只是忘記包括我的 FTP 上沒有 SSL。


這是 Pelican 的 Makefile 中的程式碼:

ftp_upload: $(OUTPUTDIR)/index.html
lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

在終端中呈現為:

   lftp ftp://username@blogname.com -e "mirror -R /Volumes/HD/Users/me/Test/output /myblog_directory ; quit"

到目前為止,我管理的是,通過將 Makefile 更改為來拒絕 SSL 檢查:

lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ftp:ssl-allow no" "mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

由於我不正確的實現,我正確登錄(lftp username@myblog.com:~>)但單行功能不再起作用,我必須手動輸入鏡像命令:

mirror -R /Volumes/HD/Users/me/Test/output/ /myblog_directory

這工作沒有錯誤和超時。問題是如何用一個班輪做到這一點。


另外我試過:

  • set ssl:verify-certificate/ftp.myblog.com no
  • 在 lftp 中禁用證書驗證的這個技巧:

$ cat ~/.lftp/rc set ssl:verify-certificate no

但是,我的 lftp 目錄中似乎沒有“rc”文件夾 - 所以這個提示沒有機會工作。

手冊頁

-c commands

執行給定的命令並退出。命令可以用分號 ( ;)、AND ( &&) 或 OR ( ||) 分隔。請記住在 shell 中正確引用 commands 參數。此選項必須單獨使用,不帶其他參數。

因此,您希望將命令指定為單個參數,用分號分隔:

lftp ftp://$(FTP_USER)@$(FTP_HOST) -e "set ftp:ssl-allow no; mirror -R $(OUTPUTDIR) $(FTP_TARGET_DIR) ; quit"

您實際上可以省略quit命令並使用-c而不是-e.

引用自:https://serverfault.com/questions/411970