如何测试基于 SSLEngine 的 TLS 实现?

How to test an implementation of TLS based on SSLEngine?

我正在考虑通过 非 TCP 连接实施 TLS 的可能性。 这个想法是使用 SSLEngine,它提供了 encrypt/decrypt 数据到内存缓冲区并通过我们想要的可靠传输发送它们的可能性。

我必须实施 SSL 协议定义的所有握手(客户端问候、服务器问候...等)。

如果我这样做,我将如何测试我的实施是否有效?有一些 "official TLS Test Suite" 我可以 运行 吗?

感谢您的建议

您明确排除 TCP 的事实使事情变得更加复杂。 TLS 对底层传输的工作方式有一些假设。您可以看看 QUIC 基本上是如何通过 UDP 提供 TLS 及其约束的。

至于官方 "Test Suite" 我有一些想法可以提供,由于 TCP 依赖性,它们可能无法立即使用,但它们可能是一个开始:

在更抽象的层面上(我不知道它们是否是使用它的工具,但它们可能存在),当同时起草 TLS 1.3 时,创建了一个文档来收集典型的握手消息,以便您可以用它们作为例子。

在这里找到它:https://datatracker.ietf.org/doc/draft-ietf-tls-tls13-vectors/

它的摘要是:

Examples of TLS 1.3 handshakes are shown. Private keys and inputs are provided so that these handshakes might be reproduced.
Intermediate values, including secrets, traffic keys and IVs are
shown so that implementations might be checked incrementally against
these values.