1

我计划将 Thrift 用于客户端/服务器 RPC,并且我想使用 libsodium 加密交换的数据。我知道有 TLS 内置,但 TLSTransportParameters 似乎没有提供太多配置可能性。

有人知道我在哪些时候必须延长节俭才能实现这一点?

4

1 回答 1

3

我的公司创建了一个自定义的 Camellia 传输层以与 Thrift 一起使用。通过创建分层传输,我们能够在端点传输(TSocket、TPipe 等)和序列化协议(TBinaryProtocol 或你有什么)之间插入密码。这需要对 Thrift 进行 0 次修改,并且很容易移植到我们使用的语言(C++、Java、Python)。它还允许我们在需要时将其他标准传输层添加到堆栈中(例如 TFramedTransport)。

要构建这样一个分层传输,您只需将 TTransport 暴露给上面的层,然后从下面的层使用 TTransport。TTransport 由典型的 unix 文件方法组成:打开、关闭、读取和写入,并添加了重要的 flush() 方法,该方法表示消息已完成并应发送到端点。

Thrift 有一个非常好的架构来进行这样的扩展,所以你可以做出其他选择,但我认为对于消息加密,传输层通常是正确的地方。通过将密码放在端点传输(TSocket 等)的上方,您将加密 TCP 有效负载中的所有内容。

于 2014-04-26T01:07:34.443 回答