วิธีการหลีกเลี่ยงข้อผิดพลาดการตรวจสอบใบรับรอง lftp


46

ฉันพยายามทำให้บล็อก Pelicanของฉันทำงาน มันใช้ lftp เพื่อถ่ายโอนบล็อกจริงไปยังเซิร์ฟเวอร์ตัว แต่ฉันมักจะได้รับข้อผิดพลาด:

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

ฉันคิดว่า lftp กำลังตรวจสอบ SSL และการตั้งค่าอย่างรวดเร็วของ Pelican เพียงลืมที่จะรวมว่าฉันไม่มี SSL บน FTP ของฉัน


นี่คือรหัสใน Pelican's 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"

สิ่งที่ฉันจัดการจนถึงตอนนี้คือปฏิเสธการตรวจสอบ SSL โดยเปลี่ยน Makefile เป็น:

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: ตรวจสอบหมายเลขใบรับรอง

อย่างไรก็ตามดูเหมือนว่าไม่มีโฟลเดอร์ "rc" ในไดเรกทอรี lftp ของฉันดังนั้นการแจ้งเตือนนี้จึงไม่มีโอกาสทำงาน


1
~/.lftprc เป็นไฟล์
Mausy5043

คำตอบ:


42

จากmanpage :

คำสั่ง -c
ดำเนินการคำสั่งที่กำหนดและออก คำสั่งสามารถคั่นด้วยเซมิโคลอน ( ;), AND ( &&) หรือ OR ( ||) อย่าลืมอ้างคำสั่งอาร์กิวเมนต์อย่างถูกต้องในเปลือก ตัวเลือกนี้จะต้องใช้คนเดียวโดยไม่มีข้อโต้แย้งอื่น ๆ

ดังนั้นคุณต้องการระบุคำสั่งเป็นอาร์กิวเมนต์เดียวคั่นด้วยเครื่องหมายอัฒภาค:

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

จริงๆคุณสามารถละเว้นquitคำสั่งและใช้แทน-c-e


เยี่ยมมาก ขอบคุณมาก ฉันหวังว่าคนที่มีประสบการณ์มากกว่าฉันจะมองเห็นความล้มเหลวของฉันในทันที (- ฉันลองใช้คำแนะนำของคุณ -c เพื่อเลิกการลาออก แต่สิ่งนี้ไม่ได้ผลสำหรับฉัน
แพทริค

34

ฉันมีปัญหาที่คล้ายกันแม้ว่า lftp ของฉันจะมีการสนับสนุน ssl ใน (Fedora RPM) ssl:verify-certificate falseทำเคล็ดลับสำหรับฉัน


11
จากนี้วางset ssl:verify-certificate falseในของฉัน~/.lftprcแก้ปัญหาสำหรับผม
Nicolas Raoul

5
... ถึงแม้ว่าการกำจัด SSL ของ lftp ของคุณในตอนนี้จะยอมรับใบรับรองใดก็ตามที่นำเสนออย่างมีความสุขทำให้คุณเสี่ยงต่อการโจมตีด้วย M2M
สเปกตรัม

1
หากใบรับรองไม่ผ่านการตรวจสอบอย่างถูกต้องสาเหตุที่เป็นไปได้คือ lftp ไม่พบใบรับรอง CA ของระบบของคุณ ดูคำตอบนี้สำหรับการแก้ไข
ingomueller.net

19

echo "set ssl:verify-certificate no" >> ~/.lftp/rc

จะแก้ปัญหาหากคุณไม่ต้องการให้มีการตรวจสอบใบรับรอง


2
สิ่งนี้ยังคงปิดใช้งานการตรวจสอบใบรับรอง SSL และทำให้การโจมตีแบบ Man-in-the-middle เป็นไปได้ สำหรับการแก้ไขที่ดีกว่าให้ดูคำตอบนี้
ingomueller.net

3
ดีกว่าเพียงแค่รันset ssl:verify-certificate noใน lftp shell เพื่อปิดการใช้งานชั่วคราวสำหรับเซสชันปัจจุบันมากกว่าปิดการใช้งานเสมอ ยังคง +1 สำหรับการแก้ปัญหา
akostadinov

8

ssl:verfy-certificate false ไม่ทำงานสำหรับฉันฉันได้รับข้อผิดพลาดการหมดเวลาเมื่อ "ทำการเชื่อมต่อข้อมูล"

ฉันทำตามคำแนะนำเหล่านี้โดยเพิ่มไฟล์set ftp:ssl-allow falseของฉัน~/.lftprc


3
คุณสะกดถูกต้องเมื่อคุณรันคำสั่งหรือไม่? ssl: Verify-certificate false
Malcolm Murdoch

5

นอกจากนี้ฉันพยายาม:

  • set ssl: Verify-certificate / ftp.myblog.com หมายเลข
  • เคล็ดลับนี้เพื่อปิดใช้งานการตรวจสอบใบรับรองใน lftp:

$ cat ~ / .lftp / rc set ssl: ตรวจสอบหมายเลขใบรับรอง

ลองใช้set ftp:ssl-allow no; มันใช้งานได้อย่างมีเสน่ห์สำหรับฉัน


1
นี่คือตัวเลือกที่เหมาะสมที่สุด การตั้งค่าร่วมเป็นตัวเลือกที่ไม่ดีเนื่องจากมีความสมเหตุสมผลในการใช้การตรวจสอบใบรับรองเมื่อเป็นไปได้และโดยการตั้งค่าตัวเลือกทั่วไปจะไม่พยายามตรวจสอบใบรับรอง คุณสามารถใช้ไฟล์สคริปต์lftp -f <script>และวางคำสั่งนี้ก่อนคำสั่งเปิด
kmcguire

set ssl:verify-certificate noฉันคิดว่าดีกว่าเพราะธุรกรรมยังคงปลอดภัย set ftp:ssl-allow noจะสื่อสารข้อความธรรมดา
michalzuber

4

ฉันก็พบข้อผิดพลาดการตรวจสอบใบรับรอง SSL ที่คล้ายกัน การตั้งค่าใบรับรองการตรวจสอบเป็น 'ไม่' ทำงานสำหรับฉัน

ตัวอย่าง:

lftp -c 'set ftps: initial-prot ""; set ftp: ssl-force จริง; set ftp: ssl-protect-data จริง set ssl: ตรวจสอบใบรับรองไม่มี open -u ชื่อผู้ใช้รหัสผ่าน 208.82.204.46; ใส่ uploadfilename; '


3

ฉันอ่าน man pages และพบวิธีแก้ปัญหาแล้ว สร้างไฟล์

~/.lftp/rc

และเพิ่มบรรทัดถัดไปที่นั่น:

set ssl:check-hostname false;

1

ต้องการคำสั่ง lftp: set ftp:ssl-allow no;

คุณสามารถรันคำสั่งได้หลังจากเลือก:

lftp www.yourdomain.com -u username,password -e "set ftp:ssl-allow no;"

~/.lftprcหรือบันทึกคำสั่งลง


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.