Các khách hàng telnet hoặc netcat có thể giao tiếp qua SSL không?


62

Tôi muốn kiểm tra các kết nối máy khách với IMAP qua SSL, HTTPS và các giao thức Internet dựa trên văn bản an toàn khác qua SSL / TLS, giống như cách tôi sử dụng telnet hoặc netcat nếu chúng không được chuyển qua giao thức bảo mật. Có cách nào để telnet hoặc netcat đi qua SSL / TLS, chẳng hạn như với một chương trình đường ống hoặc thay thế không?


Câu trả lời:


129

Không có máy khách Telnet / Netcat - chúng là hai chương trình riêng biệt và tồn tại ít nhất 10 máy khách Telnet khác nhau và ít nhất 6 phiên bản Netcat khác nhau (netcat gốc, GNU netcat, OpenBSD netcat, nmap's ncat; quên phần còn lại).

Các công cụ ưa thích đến từ chính các thư viện TLS. Họ có thể là một chút dài dòng, mặc dù.

  • GnuTLS có một công cụ máy khách TLS trên Linux:

    gnutls-cli imap.gmail.com -p 993
    

    Sử dụng -scho STARTTLS; bạn sẽ cần nhập thủ công các lệnh giao thức cần thiết và nhấn CtrlDkhi sẵn sàng.

    Hỗ trợ IPv6, xác nhận chứng chỉ máy chủ theo mặc định.

  • OpenSSL có một công cụ máy khách TLS:

    openssl s_client -connect imap.gmail.com:993
    

    Điều này có sẵn cho tất cả các hệ điều hành. STARTTLS được hỗ trợ thông qua -starttls imaphoặc -starttls smtptùy chọn và chương trình sẽ tự động đàm phán. (Mặc dù nó sẽ loại bỏ phản hồi của máy chủ ban đầu sau khi thực hiện, nhưng nó thường ổn.)

    Chỉ phiên bản ≥ 1.1 hỗ trợ IPv6.

    Chỉ phiên bản ≥ 1.0.2 (IIRC) xác nhận chứng chỉ máy chủ theo mặc định; các phiên bản cũ hơn yêu cầu thông số kỹ thuật thủ công.

(Tôi cũng muốn có các công cụ để kiểm tra NSS và SChannel, nhưng không thể tìm thấy bất kỳ.)

Các chương trình cũng sử dụng cùng các thư viện, nhưng có thể có ít nút cấu hình hơn. Một số thậm chí bỏ qua kiểm tra chứng chỉ ngang hàng theo mặc định ...

  • xã hội :

    socat openssl:imap.gmail.com:993 stdio
    

    chế độ readline có thể được sử dụng để thuận tiện:

    socat ssl:imap.gmail.com:993 readline
    

    STARTTLS không được hỗ trợ.

  • ncat từ nmap hỗ trợ TLS (nhưng không phải STARTTLS):

    ncat --ssl imap.gmail.com 993
    
  • Một số máy khách Telnet, chẳng hạn như gói telnet-ssl trên Debian, cũng hỗ trợ TLS:

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

    STARTTLS có thể được kích hoạt bằng cách sử dụng starttlstừ Ctrl]menu thoát.


4
Tôi ước tôi có thể chỉ đơn giản là yêu thích câu trả lời của bạn thay vì câu hỏi mà người hỏi thậm chí không thèm đánh dấu là đã chấp nhận.
Sammitch

gnutls-cli dường như cũng là người duy nhất mà tôi có thể kiểm tra STARTLS với IPv6. Cảm ơn!
karoshi

OpenSSL s_clientcó hỗ trợ IPv6 trong phiên bản 1.1.
grawity

1
OpenSSL s_clientcó một tính năng "hữu ích" trong đó các dòng bắt đầu bằng R hoặc Q được coi là các lệnh (xem hướng dẫn ). Sử dụng -ign_eofđể vô hiệu hóa điều này. Ngoài ra, s_clientsẽ tiếp tục ngay cả khi xác minh thất bại; bạn phải kiểm tra xem nó có xác nhận "Xác minh mã trả về: 0 (ok)" và hy vọng máy chủ không cố gắng giả mạo thông báo này. Tốt hơn để sử dụng gnutls-clinếu có thể.
tom

1
May mắn là nó cũng có -verify_return_errorcho điều đó.
grawity

5

Bạn có thể muốn xem openssl s_client , vd

# openssl s_client -connect dummy.com:8443

2

Vâng, có một chương trình gọi là stunnel

Nó có một tập tin cấu hình,

bạn nói với nó cổng nào để nghe, cổng nào để chuyển tiếp.

nó hoạt động cho phía máy khách, hoặc phía máy chủ hoặc cả hai.

vì vậy nó có thể biến một máy chủ không hỗ trợ ssl, thành một máy chủ hiệu quả.

hoặc một khách hàng không hỗ trợ ssl, thực sự là một khách hàng.

hoặc làm cho cả máy khách và máy chủ có kết nối ssl.


1

Cũng có sclient ( git ) nếu bạn cần hỗ trợ đa nền tảng (ví dụ Windows).

Tạo một máy chủ cục bộ mở khóa tls cho example.com

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

Thực hiện một yêu cầu đến example.com với telnet

$ telnet localhost 3000
  Trying 127.0.0.1...
  Connected to localhost.
  Escape character is '^]'.
> GET / HTTP/1.1
> Host: example.com
> Connection: close 
> 
> 
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.