当前位置:  开发笔记 > 编程语言 > 正文

为现有的TCP和UDP代码添加SSL支持?

如何解决《为现有的TCP和UDP代码添加SSL支持?》经验,为你挑选了1个好方法。

这是我的问题.

现在我有一个Linux服务器应用程序(使用C++编写 - gcc),它与Windows C++客户端应用程序通信(Visual Studio 9,Qt 4.5.)

什么是非常要SSL支持添加到两边,以确保通信,而不完全古亭现有协议最简单的方法?

这是一个VOIP应用程序,它使用UDP和TCP的组合来初始设置连接并进行端口隧道处理,然后使用UDP作为流数据.

我过去遇到很多问题,从头开始创建安全证书,这些都是让这些东西运转所必需的.

现有的工作示例代码将是理想的.

谢谢!



1> Max Lybbert..:

SSL非常复杂,因此您将要使用库.

有几种选择,如Keyczar,牡丹,cryptlib等.每个和(由其他人,如Boost.Asio的或建议的OpenSSL或文库)这些库中的每一个将具有用于此示例代码.


回答你的第二个问题(如何将库集成到现有代码中而不会造成太多痛苦):它将取决于你当前的代码.如果您已经有调用Winsock或socket方法来发送/接收ints strings等的简单函数,那么您只需要重写这些函数的内容.当然,更改设置套接字的代码.

另一方面,如果您直接调用Winsock/socket函数,那么您可能希望编写具有类似语义但发送数据加密的函数,并用这些函数替换Winsock调用.

但是,您可能需要考虑切换到Google Protocol Buffers或Apache Thrift(又名Facebook Thrift)之类的东西.谷歌的协议缓冲区文档说,"在协议缓冲之前,有一种请求和响应的格式,使用手动编组/解组请求和响应,并支持许多版本的协议.这导致一些非常丑陋的代码. ......"

您目前处于手动编组/解组阶段.它可以工作,事实上我工作的项目确实使用这种方法.但将它留给图书馆要好得多; 特别是一个已经考虑过将来更新软件的图书馆.

如果你走这条路线,你将使用SSL库设置你的网络连接,然后你将通过这些连接推送你的Thrift/Protocol Buffer数据.而已.它确实涉及广泛的重构,但你最终会用更少的代码来维护.当我们将Protocol Buffers引入我提到的那个项目的代码库时,我们能够摆脱大约300行的编组/解组编码.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有