Openssl ไม่สามารถสร้างการเชื่อมต่อ SSL เมื่อฉันพยายามเข้าถึงเว็บไซต์ท้องถิ่นผ่านเครื่องมือของบุคคลที่สามเช่น wget


3

ฉันต้องการตรวจสอบดัชนีของเว็บไซต์เป็นระยะบนเครือข่ายท้องถิ่นของเราจากเบราว์เซอร์ ฉันพยายามดาวน์โหลดโดยwgetในWindows10 :

> wget --no-check-certificate --no-hsts --content-on-error --ignore-length --unlink --server-response --show-progress --verbose https://172.*.*.*:*/app

แต่ไม่สามารถดึงหน้าได้ นี่คือผลลัพธ์:

--2019-02-02 16:56:01--  https://172.*.*.*:*/app
Connecting to 172.*.*.*:*... connected.
OpenSSL: error:2406F079:random number generator:RAND_load_file:Cannot open file
Unable to establish SSL connection.

ฉันลองด้วยเครื่องมืออื่น ๆ เช่นurlwatchและ curl ไม่มีใครสามารถเข้าถึงหน้านั้นได้! มีความคิดอะไรบ้าง? นี่คือข้อผิดพลาดที่กำหนดโดย urlwatch:

HTTPSConnectionPool(host='172.*.*.*', port=*):
Max retries exceeded with url: /app
(Caused by SSLError(SSLError(1,
'[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:1056)')))

ดูเหมือนว่าลูกค้าของคุณกำลังพยายามเจรจา SSL เวอร์ชัน 3 นี่เป็นโปรโตคอลเก่าและ webservers ส่วนใหญ่ได้ปิดการใช้งานการสนับสนุนในการตั้งค่า TLS 1.0 / 1.1 / 1.2 / 1.3 คุณสามารถใช้opensslและฟังก์ชั่นการเชื่อมต่อ s_client เพื่อตรวจสอบว่าคุณ สามารถเจรจาการเชื่อมต่อ SSL กับระบบนั้นได้สำเร็จหรือไม่ ลองopenssl s_client -connect 172.*.*.*:<port>
ssnobody

ตรวจสอบไฟล์openssl.cnfสำหรับRANDFILE=...บรรทัดการกำหนดค่าและลบหากพบ หรือคุณใช้ PowerShell ซึ่งwgetเป็นชื่อแทนของInvoke-WebRequest ? หากคุณไม่ใช่คุณควรพิจารณาใช้งาน
harrymc

@ssnobody: 'sslv3 alert handshake failure' เท่านั้นหมายถึงรหัสการแจ้งเตือน (40) ถูกกำหนดโดย sslv3 ก่อน ไม่ได้แปลว่าพยายามใช้โปรโตคอล sslv3 (หรือใช้แล้ว) แม้ว่าเราจะไม่แน่ใจว่า 'urlwatch' กำลังใช้ OpenSSL เดียวกันคือ 'wget' แต่ 'wget' ใช้ 1.1.1 อย่างแน่นอนและ OpenSSL เวอร์ชันหลังโพสต์ POODLE (1.1.0 และ 1.1.1) ไม่ได้ แม้รวบรวมความสามารถ SSLv3 โดยค่าเริ่มต้น ที่กล่าวว่าฉันเห็นด้วยกับการพยายามs_clientถ้าเป็นไปได้และแม้ว่าโฮสต์เข้าถึงโดยที่อยู่อาจไม่ได้ใช้ SNI ถ้า <1.1.1 พิจารณาการเพิ่ม-servername $host- mini: เบราว์เซอร์สามารถเข้าถึงเซิร์ฟเวอร์นี้โดยที่อยู่ได้หรือไม่
dave_thompson_085

@harrymc: ยูทิลิตี commandline บางอันใช้ RANDFILE จาก configfile แต่ libssl ไม่ได้ ข้อความแสดงข้อผิดพลาดที่แสดงจาก 'wget' นั้นแน่นอน OpenSSL (ใช้โดย wget จริง) ไม่ใช่ MS schannel (ใช้โดยทางอ้อมโดย powershell) แม้ว่าอาจเป็นรุ่น wget ที่ไม่ได้รับการอัปเดตสำหรับ OpenSSL 1.1.1 ซึ่งส่งคืนข้อผิดพลาดจาก RAND_load_file ในกรณี (ค่อนข้างน้อย) ซึ่งรุ่นก่อนหน้าไม่สนใจข้อผิดพลาดและเพิ่งส่งคืน 'no data' ซึ่งโดยทั่วไปแล้ว
dave_thompson_085

ไม่มีเหตุผลใน Windows 10 ที่จะใช้เครื่องมือของบุคคลที่สามในการดาวน์โหลดไฟล์เมื่อสร้างไว้ใน PowerShell คุณอาจจะใช้วิงวอน-WebRequestหรือClient.DownloadFile แจ้งให้เราทราบหากคุณต้องการให้ฉันโพสต์คำตอบ
harrymc

คำตอบ:


0

ทำไมคุณไม่ลองขดแทน

สำหรับการอ้างอิงของคุณไปที่เว็บไซต์นี้

เป็นเรื่องปกติมากที่จะแทนที่ wget ด้วย curl ภายใต้บางสถานการณ์ อาจเป็นกรณีนี้เป็นสิ่งที่ดีที่จะไปกับขดแทน

คุณสามารถตรวจสอบตัวอย่างสั้น ๆ นี้ด้วย Windows 10

หากปัญหายังคงมีอยู่แน่นอนคุณจะต้องอัปเดต SSL ให้เป็นเวอร์ชั่นล่าสุดหรือใช้ห้องสมุด SSL เปิดสำหรับ Windows 10. หลีกเลี่ยงความเสี่ยงในการติดตั้งติดตั้งบุคคลที่สามได้รับรายละเอียดเพิ่มเติมได้จากที่นี่

Git สำหรับการติดตั้ง Windows แล้วมี openssl.exe ที่คุณต้องการคุณจะได้รับจากที่นี่ ฉันเคยใช้วิธีแก้ปัญหานี้ในอดีตและทำงานได้ดี

ตรวจสอบสิ่งนี้สำหรับการอ้างอิงของคุณเช่นกัน


0

ไม่มีเหตุผลใน Windows ที่จะใช้เครื่องมือของบุคคลที่สามในการดาวน์โหลดไฟล์เมื่อเครื่องมือดังกล่าวมีอยู่แล้วโดยเฉพาะอย่างยิ่งโดยเฉพาะอย่างยิ่งหากเครื่องมือนั้นได้รับการปรับให้เข้ากับ Windows

สำหรับการดาวน์โหลดไฟล์คุณอาจใช้ PowerShell ด้วยวิธีการของ Invoke-WebRequest หรือ ไคลเอนต์ DownloadFileและนี่คือตัวอย่าง:

    Invoke-WebRequest -Uri 'https://download.sysinternals.com/files/Handle.zip' -OutFile C:\handle.zip
    download.file("https://download.sysinternals.com/files/Handle.zip",destfile="C:\handle.zip")

นี่คือวิธีที่คุณอาจเรียกใช้จากด้านนอกของ powershell (เพื่อให้คุณสามารถใช้งานได้เหมือน wget) -> "powershell.exe -Command (วัตถุใหม่ System.Net.WebClient). DownloadFile (' download.sysinternals.com/ files / Handle.zip ',' c : \ my_out_dir \ Handle.zip ') "<-
Señor CMasMas
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.