1

我在 Haskell 中有一个流式 API(与 OpenSSL 的 BIO 不同),我想将 SSL/TLS“代理”注入其中。更具体地说,假设我有一个网络模型

Server| <---> |Logger>| <---> |<Logger| <---> |Client

(我写Logger>的意思是“下游”记录器)并且我想写一个 FFI 来调用 OpenSSL 以将 TLS 注入到这里的中心

Server| <---> |Logger>| <---> |TLS>| <---> |<TLS| <---> |<Logger| <---> |Client

这样和之间的通信TLS><TLS被加密了。让我构建的 OpenSSL 最简单的接口是什么<TLS?在那之后,最简单的构建界面是TLS>什么?

换句话说,我的项目与我读过的大多数教程不同,因为我希望能够同时BIO_gets使用BIO_putsSSL 结构。这类似于我为 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();

这似乎大致正确。我将能够同时putsgetson network_bio

4

1 回答 1

1

如果您的项目不需要 openssl 并且您可以使用任何 TLS 库,则可以使用更简单的tls,它与 Haskell 更好地集成,并且内置支持通过Backend类型进行自定义传输。这将比通过 Haskell 处理 openssl 低级 API 简单得多。

于 2013-01-01T08:52:48.267 回答