Answers:
没有Telnet / Netcat客户端-它们是两个单独的程序,并且至少存在10个不同的Telnet客户端和至少6个不同的Netcat版本(原始netcat,GNU netcat,OpenBSD netcat,nmap的ncat;其余的都忘了)。
首选工具来自TLS库本身。不过,它们可能有点冗长。
GnuTLS 在Linux上具有TLS客户端工具:
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。
来自nmap的ncat支持TLS(但不支持STARTTLS):
ncat --ssl imap.gmail.com 993
某些 Telnet客户端(例如Debian上的telnet-ssl软件包)也支持TLS:
telnet-ssl -z ssl imap.gmail.com 993
可以使用starttls
退出Ctrl]菜单激活STARTTLS 。
s_client
在1.1版本中具有IPv6支持。
-verify_return_error
。
如果您需要跨平台支持(例如Windows),则还有sclient(git)。
创建一个用于解开tls的本地服务器,例如example.com
$ sclient example.com:443 localhost:3000
> [listening] example.com:443 <= localhost:3000
使用telnet向example.com发出请求
$ telnet localhost 3000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
> GET / HTTP/1.1
> Host: example.com
> Connection: close
>
>