【发布时间】:2021-06-06 10:07:48
【问题描述】:
我需要自己实现 TLS 1.3 协议,使用 OpenSSL 作为加密后端。我卡在服务器 CertificateVerify 消息上 - 不知道如何创建它。这是一个code and some files at git(单个cpp 文件,216 行代码,但只关注main())。 “文件”文件夹中的所有二进制消息都是由 openssl s_server 应用程序制作的,还有参考 CertificateVerify 消息,我需要使用 openssl 函数手动重现(请参阅代码中的注释)。
请帮助我构建一个有效的 openssl 方法调用堆栈,以使“我的 CertificateVerify”与参考方法匹配(并了解 RSA-PSS 的工作原理)。
【问题讨论】:
-
出于什么目的?在使用您的代码之前将执行哪些安全和代码审查?您计划支持 TLS 实施多少年?如您所见,自行实施 TLS 是一个坏主意,尤其是稍后将在可通过 Internet 访问的设备中使用它时。
-
@Robert,在我的项目中使用它。 OpenSSL 的协议实现有一个缺点——它需要为每个会话分配新的
SSL_CTX并使用所有相关的 BIO 缓冲区释放它。它无法为其他会话重用先前分配的结构。我不喜欢它,希望我的服务器在网络 I/O 和安全方面更高效 -
OpenSSL 不是唯一可用的 TLS 实现。在开始重新实施对安全至关重要的东西之前,请始终检查替代方案。例如 Google 的 OpenSSL fork BoringSSL 或 GnuTLS。
标签: c++ openssl rsa handshake tls1.3