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 接続の処理に関するアドバイスをいただければ幸いです。