在我的应用程序中测试 SSL 连接的最佳工具

信息安全 tls 中间人
2021-09-02 18:40:10

我开发了一个通过 TCP 在 .NET 客户端和 Java 服务器之间发送二进制数据的应用程序。

我最近为这个连接实现了 SSL,并且想要一种方法来证明它对于我的大学项目实际上是安全的。

你会推荐什么工具?我以前用过Cain和Abel,但我觉得它真的不适合这个吗?

谢谢。

3个回答

Openssl 附带一个名为“ s_client ”的工具,可用于测试 SSL 服务器。这适用于 *nix、cygwin 和 Win32。

示例使用

$ openssl s_client -connect servername:port -CAfile /path/to/ca.pem -debug -showcerts

有无数的选项,例如 -pause、-state 等,您可能会发现它们对通过设置和拆卸跟踪 SSL 很有用。

安全

在您最初的问题中,您想知道您的实施是否安全。通过安全,您是指流是加密的,还是您已经正确实现了 RFC 的所有方面?如果您的意思是前者,请使用 DW 指出的 Wireshark。

如果您指的是后者,请查看OWASP SSL 测试页面那里有一些很棒的东西,但绝不是详尽无遗的。这些测试适用于 HTTPS,但它们应该适用于任何 SSL 实现,因为它正在分析 SSL 协议,而不是顶部的应用程序级协议。

这是一个可以开始的简单测试:使用 Wireshark 收集流量,并验证数据包的内容看起来像随机噪声(随机字节)。这应该足以检查您是否已打开 SSL。

如果您要测试您的 SSL 代码是否正常工作,您还可以检查您是否可以与其他 SSL 实现互操作。

至于它是否安全,嗯,这有点宽泛。这里有一些最大的。您是否使用了经过严格审查的 SSL 库?(自己实现它不是一个好主意;验证你没有犯任何错误的成本太高了。)你是否用足够的熵源播种了它?(好的 SSL 库会自动为您执行此操作。)您是否正确地对服务器的公钥进行硬编码,或者正确检查服务器证书以确保它与您的服务器相对应,而不是冒名顶替者?您是否启用了客户端身份验证?您是否以合理的方式设置了可接受的密码套件列表?你用过 TLS 1.2 吗?您是否知道 TLS 仅保护通信通道,但您仍需要确保端点是安全的,例如免受各种恶意攻击?

这可能会让你开始。

我使用 socat 和(偶尔)stunnel。