ตัวอย่างเช่นการเรียกใช้wget https://www.dropbox.com
ผลลัพธ์ในข้อผิดพลาดต่อไปนี้:
ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.
ตัวอย่างเช่นการเรียกใช้wget https://www.dropbox.com
ผลลัพธ์ในข้อผิดพลาดต่อไปนี้:
ERROR: The certificate of `www.dropbox.com' is not trusted.
ERROR: The certificate of `www.dropbox.com' hasn't got a known issuer.
คำตอบ:
เมื่อดูที่โซลูชันแฮ็คปัจจุบันที่นี่ฉันรู้สึกว่าฉันต้องอธิบายวิธีแก้ไขที่เหมาะสมหลังจากทั้งหมด
ก่อนอื่นคุณต้องติดตั้งแพคเกจ cygwin ca-certificates
ผ่านทาง setup.exe ของ Cygwin เพื่อรับใบรับรอง
อย่าใช้ curl หรือแฮ็กที่คล้ายกันเพื่อดาวน์โหลดใบรับรอง (เป็นคำแนะนำคำตอบที่อยู่ใกล้เคียง) เพราะมันไม่ปลอดภัยและอาจส่งผลกระทบต่อระบบ
ประการที่สองคุณต้องบอกให้คุณทราบว่าใบรับรองของคุณอยู่ที่ไหนเพราะไม่รับโดยค่าเริ่มต้นในสภาพแวดล้อม Cygwin หากคุณสามารถทำได้ด้วยพารามิเตอร์บรรทัดคำสั่ง--ca-directory=/usr/ssl/certs
(ดีที่สุดสำหรับเชลล์สคริปต์) หรือโดยการเพิ่มca_directory = /usr/ssl/certs
ลงใน~/.wgetrc
ไฟล์
คุณยังสามารถแก้ไขได้โดยการทำงานln -sT /usr/ssl /etc/ssl
ตามที่ระบุไว้ในคำตอบอื่น แต่จะทำงานได้ก็ต่อเมื่อคุณมีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบ โซลูชันอื่น ๆ ที่ฉันอธิบายไม่จำเป็นต้องใช้
ca-bundle
แพคเกจ - ตามที่อธิบายไว้ที่นี่
ln -s /etc/ssl /usr/ssl
ใช้ได้สำหรับฉัน
หากคุณไม่สนใจเกี่ยวกับการตรวจสอบความถูกต้องของใบรับรองเพียงเพิ่ม--no-check-certificate
ตัวเลือกในบรรทัดคำสั่ง wget นี้ทำงานได้ดีสำหรับฉัน.
หมายเหตุ: นี่จะเป็นการเปิดการโจมตีของคุณในแบบกึ่งกลาง (MitM) และไม่แนะนำให้ใช้กับสิ่งที่คุณสนใจเกี่ยวกับความปลอดภัย
หากปัญหาคือว่ารูท CA ที่เป็นที่รู้จักหายไปและเมื่อคุณใช้อูบุนตูหรือเดเบียนคุณสามารถแก้ปัญหาด้วยหนึ่งบรรทัดนี้:
sudo apt-get install ca-certificates
update-ca-certificates
แก้ปัญหาได้
update-ca-certificates
เป็นคำสั่ง ubuntu ไม่พร้อมใช้งานในเดเบียน
ก่อนอื่นต้องติดตั้งใบรับรอง SSL คำแนะนำ (ขึ้นอยู่กับhttps://stackoverflow.com/a/4454754/278488 ):
pushd /usr/ssl/certs
curl http://curl.haxx.se/ca/cacert.pem | awk 'split_after==1{n++;split_after=0} /-----END CERTIFICATE-----/ {split_after=1} {print > "cert" n ".pem"}'
c_rehash
ด้านบนเพียงพอที่จะแก้ไขcurl
แต่wget
ต้องการ symlink เพิ่มเติม:
ln -sT /usr/ssl /etc/ssl
อาจเป็นเช่นนี้จะช่วย:
wget --no-check-certificate https://blah-blah.tld/path/filename
ฉันมีปัญหาที่คล้ายกันและแก้ไขได้โดยการปิดใช้งานโปรแกรมป้องกันไวรัสชั่วคราว (Kaspersky ฟรี 18.0.0.405) AV นี้มีโมดูลการสกัดกั้น HTTPS ที่ลงนามด้วยตนเองโดยอัตโนมัติใบรับรองทั้งหมดที่พบในการตอบสนอง HTTPS
Wget จาก Cygwin ไม่ทราบอะไรเกี่ยวกับใบรับรองรูท AV ดังนั้นเมื่อพบว่าใบรับรองของเว็บไซต์ถูกเซ็นรับรองด้วยใบรับรองที่ไม่น่าเชื่อถือ
ในการแก้ไขปัญหานี้อย่างถาวรโดยไม่ปิดใช้งาน AV คุณควรคัดลอกใบรับรอง AV root จากที่เก็บใบรับรอง Windows ไป/etc/pki/ca-trust/source/anchors
เป็นไฟล์. pem (การเข้ารหัส base64) และเรียกใช้update-ca-trust
แค่ทำ
apt-get install ca-certificate
หากคุณใช้ windows เพียงไปที่แผงควบคุมให้คลิกที่การปรับปรุงอัตโนมัติจากนั้นคลิกที่ลิงค์ Windows Update เว็บไซต์ เพียงทำตามขั้นตอน อย่างน้อยก็ใช้งานได้สำหรับฉันไม่มีปัญหาใบรับรองเช่นเมื่อใดก็ตามที่ฉันไปที่https://www.dropbox.comเหมือนเมื่อก่อน