我的东西是由几个组件组成的,其中有些组件是用C语言编写的。由于我想添加一些安全功能,我正在考虑通过SSL/TLS层进行通信。将TLS/SSL层添加到通信..?
你能否告诉我一些很好的lib来做到这一点(如果可能)?
我的东西是由几个组件组成的,其中有些组件是用C语言编写的。由于我想添加一些安全功能,我正在考虑通过SSL/TLS层进行通信。将TLS/SSL层添加到通信..?
你能否告诉我一些很好的lib来做到这一点(如果可能)?
我们使用axTLS,它在我们的服务器(.NET)和我们的嵌入式系统(Linux和uClinux)上都很出色。我们遇到了让OpenSSL在uClinux上运行良好的问题。
axTLS不像OpenSSL那样功能完整,所以请确保它在使用前满足您的要求。
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流密码。
警告,该许可证虽然免费,但与GPL兼容,这可能是某些应用程序的问题。 – bortzmeyer 2009-04-19 12:09:30
但是,要清楚的是,它不是GPL。它使用的Apache许可证明显不同,并且不需要发布更改。 – ctacke 2009-04-19 14:59:10
@bortzmeyer:你的意思是不兼容。是的 - 我知道这是一个拼写错误,但只是为了澄清。 – 2010-03-04 00:21:46