Ответ 1
Вам может понравиться CyaSSL, что является еще одной реализацией SSL. Вы можете скачать его на http://www.yassl.com.
Сегодня я проверил немало библиотек SSL. OpenSSL выглядит хорошо, но не хватает документации, как и большинство из них. Я думал, что попал в джек-пот, когда нашел NetSieben SSL С++ Library (http://www.netsieben.com/products/ssh/index.phtml), но после нескольких часов я не могу его собрать. Он говорит, что ему нужен Botan lib, но абсолютно никакой информации о том, как связать его с Botan или что-то еще.
Итак, я ищу довольно простую в использовании библиотеку SSL. Я просто использую его для клиентского приложения для подключения к уже существующему серверу.
Вам может понравиться CyaSSL, что является еще одной реализацией SSL. Вы можете скачать его на http://www.yassl.com.
Чтобы дать более полный ответ: Существует несколько библиотек SSL, которые лучше документированы, чем OpenSSL, что, как известно, плохо.
Если вы посмотрите на грандиозную картинку, реальными альтернативами в качестве библиотеки SSL являются Botan, PolarSSL, Mozilla NSS, Wolf и GnuTLS.
Все, кроме Botan, не являются С++, поэтому у них нет хороших объектов С++ и управления ресурсами.
Мой персональный предпочтительнее использовать SSL-библиотеку PolarSSL из-за читаемости кода, документации API в заголовке и просто общих хороших впечатлений. Он используется в некоторых крупных проектах FOSS, и у них есть своего рода государственная аккредитация.
Я не настоящий поклонник оберток, например Boost.Asio, поскольку у них по-прежнему отсутствует надлежащая документация для более глубоких вещей. Boost.Asio сам по себе спокойный, и примеры довольно приличные, хотя. Если вам нужен только простой клиент, возможно, это будет путь.
Mozilla NSS является одним из старых, но он не поддерживает новые стандарты TLS 1.1 и TLS 1.2, которые они на самом деле должны делать.
Оба ботаника и CyaSSL также являются хорошими альтернативами. Документация Botan является тщательной в некоторых частях и, возможно, немного не хватает на других частях, но некоторые крупные проекты с открытым исходным кодом включают Botan и имеют хороший опыт работы с ним.
В общем, вы можете сделать намного лучше, чем OpenSSL с любым из них.
Надеюсь, это поможет!
Boost.Asio предоставляет возможности SSL, обертывая OpenSSL. examples довольно просты, для клиентского кода это выглядит как this
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(...);
Заметьте, существуют асинхронные методы async_connect
и async_handshake
и async_write
тоже.
Для простой хорошо документированной библиотеки SSL вы можете посмотреть https://polarssl.org.
PolarSSL имеет полную документацию по API и пример клиентов на странице источника.
Отказ от ответственности: Я ведущий разработчик для PolarSSL
Mozilla NSS - это относительно улучшенный документированный набор библиотек.