ลูกค้า telnet หรือ netcat สามารถสื่อสารผ่าน SSL ได้หรือไม่?


62

ฉันต้องการทดสอบการเชื่อมต่อไคลเอนต์ด้วย IMAP ผ่าน SSL, HTTPS และโปรโตคอลอินเทอร์เน็ตแบบข้อความที่ปลอดภัยอื่น ๆ ผ่าน SSL / TLS เช่นเดียวกับที่ฉันใช้ telnet หรือ netcat หากพวกเขาไม่ได้ถูกส่งผ่านโปรโตคอลที่ปลอดภัย มีวิธีรับ telnet หรือ netcat ผ่าน SSL / TLS เช่นกับไปป์หรือโปรแกรมอื่นได้หรือไม่


คำตอบ:


131

ไม่มีไคลเอ็นต์ Telnet / Netcat - เป็นสองโปรแกรมแยกกันและมีอยู่อย่างน้อย 10 ไคลเอ็นต์ Telnet ที่แตกต่างกันและอย่างน้อย 6 เวอร์ชัน Netcat ที่แตกต่างกันอย่างน้อย 6 เวอร์ชัน(netcat ดั้งเดิม, GNU netcat, OpenBSD netcat, ncat ของ nmap;

เครื่องมือที่ต้องการมาจากไลบรารี TLS ด้วยตนเอง พวกเขาอาจจะ verbose เล็กน้อย

  • GnuTLS มีเครื่องมือไคลเอนต์ TLS บน Linux:

    gnutls-cli imap.gmail.com -p 993
    

    ใช้-sสำหรับ STARTTLS คุณจะต้องป้อนคำสั่งโปรโตคอลที่จำเป็นด้วยตนเองและกดCtrlDเมื่อพร้อม

    รองรับ IPv6 ตรวจสอบใบรับรองเซิร์ฟเวอร์โดยค่าเริ่มต้น

  • OpenSSLมีเครื่องมือไคลเอนต์ TLS:

    openssl s_client -connect imap.gmail.com:993
    

    ใช้ได้กับทุกระบบปฏิบัติการ STARTTLS รองรับผ่าน-starttls imapหรือ-starttls smtpตัวเลือกและโปรแกรมจะทำการเจรจาโดยอัตโนมัติ (แม้ว่าจะทิ้งการตอบกลับของเซิร์ฟเวอร์เริ่มต้นหลังจากทำเช่นนั้น แต่โดยปกติแล้วก็ใช้ได้)

    เฉพาะเวอร์ชั่น≥ 1.1 รองรับ IPv6

    เฉพาะรุ่น≥ 1.0.2 (IIRC) ตรวจสอบความถูกต้องใบรับรองเซิร์ฟเวอร์โดยค่าเริ่มต้น เวอร์ชันที่เก่ากว่าต้องการข้อกำหนด -CApath แบบแมนนวล

(ฉันต้องการมีเครื่องมือสำหรับทดสอบ NSS และ SChannel ด้วย แต่ไม่สามารถหาได้)

โปรแกรมยังใช้ไลบรารีเดียวกัน แต่อาจมีลูกบิดการกำหนดค่าน้อยลง บางคนถึงกับข้ามการตรวจสอบใบรับรองเพื่อนโดยค่าเริ่มต้น ...

  • socat :

    socat openssl:imap.gmail.com:993 stdio
    

    โหมดreadlineสามารถใช้เพื่อความสะดวก:

    socat ssl:imap.gmail.com:993 readline
    

    ไม่รองรับ STARTTLS

  • ncatจาก nmap รองรับ TLS (แต่ไม่ใช่ STARTTLS):

    ncat --ssl imap.gmail.com 993
    
  • ไคลเอ็นต์ Telnet บางตัวเช่นแพ็คเกจtelnet-sslบน Debian ก็รองรับ TLS ด้วยเช่นกัน:

    telnet-ssl -z ssl imap.gmail.com 993
    

    สามารถเปิดใช้งาน STARTTLS ได้โดยใช้starttlsจากCtrl]เมนู Escape


4
ฉันหวังว่าฉันจะชื่นชอบคำตอบของคุณได้ง่าย ๆ แทนคำถามที่ผู้ถามไม่ได้รำคาญแม้กระทั่งการทำเครื่องหมายว่าเป็นที่ยอมรับ
Sammitch

gnutls-cli ดูเหมือนจะเป็นคนเดียวที่ฉันสามารถทดสอบ STARTLS ด้วย IPv6 ได้ ขอบคุณ!
karoshi

OpenSSL s_clientมีการสนับสนุน IPv6 ในรุ่น 1.1
grawity

1
OpenSSL s_clientมีคุณสมบัติ "มีประโยชน์" ซึ่งบรรทัดที่ขึ้นต้นด้วย R หรือ Q จะถือว่าเป็นคำสั่ง (ดูคู่มือ ) ใช้-ign_eofเพื่อปิดการใช้งานนี้ นอกจากนี้s_clientจะดำเนินการต่อแม้ว่าการยืนยันจะล้มเหลว คุณต้องตรวจสอบว่ามีข้อความว่า "ยืนยันรหัสส่งคืน: 0 (ตกลง)" และหวังว่าเซิร์ฟเวอร์จะไม่พยายามหลอกลวงข้อความนี้ ดีกว่าที่จะใช้gnutls-cliถ้าเป็นไปได้
ทอม

1
โชคดีที่มันมี-verify_return_errorให้
grawity


2

ใช่มีโปรแกรมที่เรียกว่า stunnel

มันมีไฟล์กำหนดค่า

คุณบอกว่าพอร์ตที่จะรับฟังพอร์ตอะไรที่จะส่งต่อไป

ใช้ได้กับฝั่งไคลเอ็นต์หรือฝั่งเซิร์ฟเวอร์หรือทั้งสองอย่าง

ดังนั้นจึงสามารถเปลี่ยนเซิร์ฟเวอร์ที่ไม่รองรับ ssl เป็นเซิร์ฟเวอร์ที่ทำงานได้อย่างมีประสิทธิภาพ

หรือไคลเอนต์ที่ไม่สนับสนุน ssl อย่างมีประสิทธิภาพเป็นหนึ่งที่ทำ

หรือทำให้ทั้งไคลเอนต์และเซิร์ฟเวอร์มีการเชื่อมต่อ ssl


1

นอกจากนี้ยังมีsclient ( git ) ถ้าคุณต้องการการสนับสนุนข้ามแพลตฟอร์ม (เช่น Windows)

สร้างเซิร์ฟเวอร์ท้องถิ่นที่ไม่ได้ตัดคำสั่ง tls สำหรับ example.com

$ sclient example.com:443 localhost:3000
> [listening] example.com:443 <= localhost:3000

ทำการร้องขอไปยัง example.com ด้วย telnet

$ telnet localhost 3000
  Trying 127.0.0.1...
  Connected to localhost.
  Escape character is '^]'.
> GET / HTTP/1.1
> Host: example.com
> Connection: close 
> 
> 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.