我的东西是由几个组件组成的,其中一些是用 C 编写的。由于我想添加一些安全功能,我正在考虑通过 SSL/TLS 层进行通信。
你能给我一些好的库来做这个(如果可能的话)吗?
OpenSSL怎么样?
我们使用axTLS,它在我们的服务器 (.NET) 和我们的嵌入式系统(Linux 和 uClinux)上都非常有效。我们在让 OpenSSL 在 uClinux 上正常工作时遇到了问题。
axTLS 的功能不如 OpenSSL 完整,因此请确保在使用前满足您的要求。
我建议不要花时间尝试在您的应用程序中实现 SSL 功能。相反,您可以只使用现有的 SSL 隧道软件,该软件在您现有的套接字应用程序前面创建一个 SSL 隧道。
Internet --- [SSLTunnel] --- Your App
例如,您可以告诉 SSL 隧道侦听端口 443 (https) 并将所有解密的数据包转发到端口 80 (http)。对于您的自定义应用程序,它只会看到解密的数据包。
有很多免费的应用程序可以做到这一点。只需谷歌一个。
CyaSSL 将是一个很好的选择。这是一个用 C 语言编写的嵌入式 SSL 库,已针对速度和大小进行了优化。它最多可以比 OpenSSL 小 20 倍,而且速度也快很多。
功能列表中包括 30-100kb 的最小大小和 OpenSSL 兼容层。完整的功能列表可以在 yaSSL 网站上找到:
http://www.yassl.com/yaSSL/Products_cyassl.html。
它在开源 GPLv2 和商业许可下双重许可(用于支持)。它非常频繁地更新新功能。我认为其中一个很酷的功能是支持来自 eStream 项目的 RABBIT 和 HC-128 流密码。