2008-10-09 44 views
2

我的东西是由几个组件组成的,其中有些组件是用C语言编写的。由于我想添加一些安全功能,我正在考虑通过SSL/TLS层进行通信。将TLS/SSL层添加到通信..?

你能否告诉我一些很好的lib来做到这一点(如果可能)?

回答

2

我们使用axTLS,它在我们的服务器(.NET)和我们的嵌入式系统(Linux和uClinux)上都很出色。我们遇到了让OpenSSL在uClinux上运行良好的问题。
axTLS不像OpenSSL那样功能完整,所以请确保它在使用前满足您的要求。

2

OpenSSL怎么样?

+0

警告,该许可证虽然免费,但与GPL兼容,这可能是某些应用程序的问题。 – bortzmeyer 2009-04-19 12:09:30

+0

但是,要清楚的是,它不是GPL。它使用的Apache许可证明显不同,并且不需要发布更改。 – ctacke 2009-04-19 14:59:10

+2

@bortzmeyer:你的意思是不兼容。是的 - 我知道这是一个拼写错误,但只是为了澄清。 – 2010-03-04 00:21:46

4

GnuTLS(请注意,它主要是LGPL非GPL所以你可以链接到它)。至少我认为它是API超过OpenSSL

另外还有Mozilla的NSS

0

我建议不要花费时间试图在您的应用中实现SSL功能。相反,您只需使用现有的SSL隧道软件,即可在现有套接字应用程序前创建SSL隧道。

Internet --- [SSLTunnel] --- Your App 

例如,你可以告诉SSL隧道为侦听端口443(HTTPS)和所有解密的数据包转发到端口80(HTTP)。对于您的自定义应用程序,它只会看到解密的数据包。

有很多免费的应用程序可以做到这一点。只需一个谷歌。

0

CyaSSL将是一个很好的选择考虑。这是一个用C编写的嵌入式SSL库,针对速度和大小进行了优化。它可以比OpenSSL小20倍,并且可以快得多。

其中功能列表的最小尺寸为30-100kb和OpenSSL兼容层。完整的功能列表可以在yaSSL网站上找到:

http://www.yassl.com/yaSSL/Products_cyassl.html

它是在开源GPLv2和商业许可(支持)下的双重许可。它经常用新功能进行更新。我认为其中一个很酷的功能是支持eStream项目的RABBIT和HC-128流密码。