如何查看TLS telnet的详细信息?

如何查看TLS telnet的详细信息?

Debian(以及其他发行版,如果您重新编译源代码)可以使用 telnetd 的 ssl 版本。

telnet-ssl -z cacert=/etc/ssl/certs/mydomain.crt -z cert=/etc/ssl/certs/client.mydomain.crt -z key=/etc/ssl/private/client.mydomain.key othersite

Trying 192.168.0.217...
Connected to othersite.mydomain
Escape character is '^]'.
[SSL - attempting to switch on SSL]
[SSL - handshake starting]
[SSL - OK]

我想了解有关 ssl 连接的更多详细信息(使用的密码等)我知道这个命令

openssl s_client -showcerts -connect othersite.mydomain:23 -tls1_2

但只返回..

CONNECTED(00000003)

我还尝试使用 s_client 的 --cert 和 --key 标志传递证书,但除了CONNECTED(00000003)

使用这些选项会出现一些输出,但没有详细信息

openssl s_client -key KEYPATH -cert CERTPATH -CAfile CACERTPATH  -connect othersite.mydomain:23 -starttls telnet

CONNECTED(00000003)
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 3 bytes and written 0 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
Early data was not sent
Verify return code: 0 (ok)

如何查看此服务的 ssl 连接详细信息?

答案1

来自客户端的初始连接消息telnet-ssl

Connected to othersite.mydomain
Escape character is '^]'.
[SSL - attempting to switch on SSL]

包括“尝试打开 SSL”,表明客户端在建立基本 TCP 连接后并不简单地开始 SSL 连接协商,而是首先进行某种 Telnet 协议握手,其中包括某种方式说“我想要使用加密”。显然,服务器端在看到这一点之前不会开始 SSL 协商。所以它实际上类似于 STARTTLS,而不仅仅是普通的 SSL。

Debianopenssl s_client有这个-starttls <protocol>选项,这正是这种情况下的选择。不幸的是,它似乎不包括对 Telnet 协议的支持。

根据这个过期的互联网草案,一旦 TCP 连接打开,服务器就应该发送 Telnet 协议消息IAC DO START_TLS,该消息在 TCP 连接上为三个字节:十六进制的 0xff 0xfd 0x2e。这与SSL handshake has read 3 bytes and written 0 bytes消息相符。

客户端必须用另一条 Telnet 协议消息进行应答,确认它能够并且愿意建立 SSL/TLS 加密连接,然后将交换另一对消息来标记 SSL/TLS 协商的实际开始。但由于您openssl s_client不知道如何使用 Telnet,因此它无法向服务器提供允许开始 SSL/TLS 协商的答案。

除非您找到包含对 Telnet 协议的 STARTTLS 支持的版本openssl s_client,否则我猜唯一的方法是使用tcpdump捕获真实客户端完成的连接协商telnet-ssl,然后使用wireshark或类似的方法来分析结果。

步骤如下: 1.) 打开两个终端窗口。 2.) 在第一个窗口中,开始捕获:

sudo tcpdump -i <network interface> -s0 -Knpvv -w telnet-ssl-dump.cap host othersite

3.) 输入密码后sudo(如有必要),保持该命令运行,移至第二个终端窗口,然后telnet-ssl在那里运行命令。您应该在第一个窗口中看到捕获的数据包计数器增加。

4.) 您不必实际登录:一旦看到远程登录提示,SSL/TLS 协商就应该完成,您可以通过移动到第一个窗口并按Ctrl+来停止数据包捕获C

现在,在第一个终端窗口的会话中,您应该有一个telnet-ssl-dump.cap文件,您可以进一步分析该文件。

Wireshark是一款带有 GUI 界面的专业级网络流量分析仪。最好在本地工作站中运行它。如果您的本地系统是 Linux,您可能可以在发行版的软件包存储库中找到它。对于 Windows,您可以从上面的链接下载它。

如果您将数据包捕获文件的名称作为参数提供给 Wireshark,则它不需要任何特殊权限,因此运行wireshark telnet-ssl-dump.cap.如果没有任何参数,Wireshark 将假设您计划开始捕获流量,并可能会向您显示一些有关要使用的网络接口的问题。但是,当使用数据包捕获文件启动时,它应该立即显示捕获的数据包列表。您可以选择其中之一来查看 Wireshark 可以解析的详细细分。找到包含 SSL/TLS 协议协商的数据包,您应该能够看到选择了哪种加密算法以及其他连接详细信息。如果您看到数据包内容仅列为<encrypted data>,则您走得太远了,并且正在协商完成后查看 SSL/TLS 加密数据流。

相关内容