我编写了一个通过 TCP 运行的客户端/服务器应用程序。服务器运行在一个众所周知的 IP 地址上,客户端从 Internet 上的不同位置连接到服务器。到服务器的 TCP 连接是持久的和全双工的;也就是说,只要 TCP 连接保持打开状态,客户端和服务器都可以随时向对方发送数据“消息”。服务器是用 C++ 编写的,围绕 select() 和非阻塞 I/O 设计。
这一切都很好,但目前所有数据都是以明文形式发送的,这意味着客户端<->服务器 TCP 流量可以被沿途任何关心运行数据包嗅探器的人轻松读取。我想添加一些加密,以便我的客户端和服务器发送的数据不易被窥探,但我不确定用于此目的的正确 API 是什么。
我查看了 libssh2 API 和 OpenSSL API,它们看起来都可能是合适的......但是 openssl 似乎需要生成和分发公钥,我不确定如何在安全的情况下执行和用户友好的方式;另一方面,libssh2 有点高级,但它看起来可能只面向客户端,对于我的系统,我需要在服务器端和客户端添加支持。
我找对地方了吗?或者我正在尝试做的事情甚至可能不经过从 VeriSign 等购买证书的正式流程?任何指针将不胜感激,因为我现在很困惑...... :)