我正在实现一个支持 EAP(PEAP) 身份验证的RADIUS服务器。RADIUS 依赖于 UDP,每个数据包将包含一个带有身份验证数据的 EAP 消息。为简化起见,每个 EAP (PEAP) 消息都包含 TLS 数据包,因此客户端首先将发送一个包含 TLS 客户端握手的 EAP 数据包,服务器将处理该数据包,然后返回 TLS 服务器握手,以此类推,并带有以下包。
我已经能够通过 TCP 实现一个简单的 TLS 服务器,但我需要的是直接在 SSL 连接中写入 TLS 字节。
SSLConn_init_thread();
SSL_load_error_strings();
ERR_load_crypto_strings();
SSL_library_init();
SSL_CTX *ctx;
...
ctx = SSL_CTX_new(SSLv23_server_method());
SSL_CTX_use_PrivateKey(...);
SSL_CTX_use_certificate(...);
ssl = SSL_new(ctx); // I want to read/write TLS packets directly with this object
我查看了 OpenSSL文档,但没有很好的文档记录。在本指南中说,可以使用 SSL_read 和 SSL_write “手动”进行握手SSL_set_accept_state()
,但我不明白该怎么做。
任何与此有关的建议或关于在不依赖 TCP 的情况下处理 OpenSSL 连接的建议将不胜感激。