57

Я хотел бы протестировать клиентские соединения с IMAP по SSL, HTTPS и другим защищенным текстовым интернет-протоколам по SSL/TLS, так же, как я бы использовал telnet или netcat, если они не были туннелированы по безопасному протоколу. Есть ли способ заставить telnet или netcat проходить через SSL/TLS, например, с помощью pipe или альтернативной программы?

4 ответа4

121

Клиент Telnet/Netcat отсутствует - это две отдельные программы, и существует как минимум 10 разных клиентов Telnet и как минимум 6 разных версий Netcat (оригинальная netcat, GNU netcat, OpenBSD netcat, nmap ncat; остальные забыли).

Предпочтительные инструменты приходят из самих библиотек TLS. Хотя они могут быть немного многословными.

  • GnuTLS имеет клиентский инструмент TLS в Linux:

    gnutls-cli imap.gmail.com -p 993
    

    Используйте -s для STARTTLS; вам нужно будет вручную ввести необходимые команды протокола и нажать Ctrl D, когда будете готовы.

    Поддерживает 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 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 ] .

5

Вы можете посмотреть на openssl s_client, например,

# openssl s_client -connect dummy.com:8443
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 
> 
> 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .