Я хотел бы протестировать клиентские соединения с IMAP по SSL, HTTPS и другим защищенным текстовым интернет-протоколам по SSL/TLS, так же, как я бы использовал telnet или netcat, если они не были туннелированы по безопасному протоколу. Есть ли способ заставить telnet или netcat проходить через SSL/TLS, например, с помощью pipe или альтернативной программы?
4 ответа
Клиент 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 ] .
Вы можете посмотреть на openssl s_client, например,
# openssl s_client -connect dummy.com:8443
Да, есть программа под названием Stunnel
у него есть файл конфигурации,
вы говорите ему, какой порт слушать, какой порт для пересылки.
это работает на стороне клиента, или на стороне сервера, или на обоих.
таким образом, он может превратить сервер, который не поддерживает ssl, в эффективно работающий сервер.
или клиент, который не поддерживает ssl, эффективно в тот, который делает.
или сделать так, чтобы и клиент, и сервер имели ssl-соединение.
Также есть 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
>
>