我今晚检查了很多SSL图书馆.OpenSSL看起来不错,但缺少文档,因为大多数都可以.当我找到NetSieben的SSL C++库(http://www.netsieben.com/products/ssh/index.phtml)时,我以为我中了大奖,但是几小时后,我无法进行编译.它说它需要Botan的lib,但绝对没有信息如何将它与Botan或任何东西联系起来.
所以我正在寻找一个相当容易使用的SSL库.我只是将它用于客户端应用程序以连接到现有的服务器.
Dav*_* R. 31
提供更全面的答案:有许多SSL库比OpenSSL更好地记录,这是非常糟糕的.
如果你看一下宏伟的图片,作为SSL库的真正替代品是Botan,PolarSSL,Mozilla NSS,Wolf和GnuTLS.
除了Botan之外的所有内容都不是特定于C++的,所以他们没有很好的C++对象和资源管理.
我个人对SSL库的偏好是PolarSSL,因为代码的可读性,头内API文档以及一般的良好体验.它被用于一些大型FOSS项目,他们有一些政府认证.
我不是像Boost.Asio这样的包装器的真正粉丝,因为他们仍然缺乏更深入的东西的适当文档.Boost.Asio本身很安静,但是这些例子相当不错.如果您只需要一个简单的客户端,这可能就是您的选择.
Mozilla NSS是旧版本之一,但它不支持新的TLS 1.1和TLS 1.2标准,它们实际应该是这些标准.
Botan和CyaSSL都是不错的选择.Botan文档在某些方面是彻底的,也许在其他方面有点缺乏,但是一些大型开源项目包括Botan并且有很好的经验.
一般来说,你可以比OpenSSL做任何更好的事情.
希望这可以帮助!
Boost.Asio通过包装OpenSSL提供SSL功能.这些示例相当简单,对于客户端代码,它看起来像这样
ssl::context ctx(my_io_service, ssl::context::sslv23);
ctx.set_verify_mode(ssl::context::verify_peer);
ctx.load_verify_file("ca.pem");
ssl::stream<ip::tcp::socket> ssl_sock(my_io_service, ctx);
ip::tcp::socket::lowest_layer_type& sock = ssl_sock.lowest_layer();
sock.connect(my_endpoint);
sock.handshake();
sock.write(...);
Run Code Online (Sandbox Code Playgroud)
注意有异步方法async_connect和async_handshake和async_write了.
小智 5
对于一个文档齐全的简单SSL库,您可以查看https://polarssl.org。
PolarSSL 在其源页面上具有完整的API文档和示例客户端。
免责声明:我是PolarSSL的首席维护者
| 归档时间: |
|
| 查看次数: |
22338 次 |
| 最近记录: |