【发布时间】:2013-01-01 04:45:15
【问题描述】:
我在 Haskell 中有一个流式 API(与 OpenSSL 的 BIO 不同),我想将 SSL/TLS“代理”注入其中。更具体地说,假设我有一个网络模型
Server| <---> |Logger>| <---> |<Logger| <---> |Client
(我在这里写 Logger> 表示“下游”记录器)并且我想编写一个 FFI 来调用 OpenSSL 以将 TLS 注入此处的中心
Server| <---> |Logger>| <---> |TLS>| <---> |<TLS| <---> |<Logger| <---> |Client
这样TLS> 和<TLS 之间的通信就会被加密。可以让我构建<TLS 的最简单的 OpenSSL 接口是什么?那么,构建TLS>最简单的接口是什么?
换句话说,我的项目与我读过的大多数教程都不同,因为我希望能够同时使用 SSL 结构 BIO_gets 和 BIO_puts。这类似于我为 SSL 客户端连接管理自己的传输,但“传输”是通过将 C 指针向上提升到 Haskell 来执行的。
(我确信我完全遗漏了有关 SSL+BIO 交互的基本知识。)
来自http://www.openssl.org/docs/crypto/BIO_s_bio.html 我看到一个应用程序,就像我正在拍摄的那样:
BIO *internal_bio, *network_bio;...BIO_new_bio_pair(internal_bio, 0, network_bio, 0);SSL_set_bio(ssl, internal_bio, internal_bio);SSL_operations();
这似乎大致正确。我可以在network_bio 上同时使用puts 和gets。
【问题讨论】: