telnet或netcat客户端可以通过SSL进行通信吗?


62

我想使用SSL,HTTPS上的IMAP和其他基于SSL / TLS的安全基于文本的Internet协议来测试客户端连接,如果不通过安全协议进行隧道传输,我将使用telnet或netcat进行测试。有没有办法让telnet或netcat通过管道或替代程序通过SSL / TLS?


Answers:


131

没有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 。


4
我希望我只喜欢您的回答,而不是问问问询者甚至不打扰标记为接受的问题。
Sammitch 2014年

gnutls-cli似乎也是唯一的,我可以用它来测试IPv6的STARTLS。谢谢!
karoshi

OpenSSL s_client在1.1版本中具有IPv6支持。
grawity

1
OpenSSL s_client具有“有用的”功能,其中以R或Q开头的行被视为命令(请参见手册)。使用-ign_eof禁用此。此外,s_client即使验证失败,也会继续;您必须检查它是否显示“验证返回码:0(确定)”,并希望服务器不要尝试欺骗此消息。gnutls-cli如果可能,最好使用。
汤姆(Tom)

1
幸运的是它也有-verify_return_error
grawity

5

您可能需要查看openssl s_client,例如

# openssl s_client -connect dummy.com:8443

2

是的,有一个名为stunnel的程序

它有一个配置文件,

您告诉它要侦听的端口,要转发的端口。

它适用于客户端,服务器端或两者。

因此它可以将不支持ssl的服务器转变为有效的服务器。

或不支持ssl的客户端,可以有效地支持它。

或使客户端和服务器都具有ssl连接。


1

如果您需要跨平台支持(例如Windows),则还有sclientgit)。

创建一个用于解开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 
> 
> 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.