Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

SSL

Boost , Boost.Asio , Overview

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

SSL

Повышаю. Asio содержит классы и шаблоны классов для основной поддержки SSL. Эти классы позволяют осуществлять зашифрованную связь поверх существующего потока, такого как сокет TCP.

Перед созданием зашифрованного потока приложение должно построить объект контекста SSL. Этот объект используется для установки параметров SSL, таких как режим проверки, файлы сертификатов и так далее. В качестве иллюстрации, инициализация на стороне клиента может выглядеть примерно так:

ssl::context ctx(ssl::context::sslv23);
ctx.set_verify_mode(ssl::verify_peer);
ctx.load_verify_file("ca.pem");

Чтобы использовать SSL с сокетом TCP, можно написать:

ssl::stream<ip::tcp::socket> ssl_sock(my_io_service, ctx);

Для выполнения операций, специфичных для сокетов, таких как установление исходного соединения или принятие входящего, базовое сокетное соединение сначала должно быть получено с использованием функции члена шаблона<ssl::stream><lowest_layer()>:

ip::tcp::socket::lowest_layer_type& sock = ssl_sock.lowest_layer();
sock.connect(my_endpoint);

В некоторых случаях использования базовый объект потока должен иметь более длительный срок службы, чем поток SSL, и в этом случае параметр шаблона должен быть ссылкой на тип потока:

ip::tcp::socket sock(my_io_service);
ssl::stream<ip::tcp::socket&> ssl_sock(sock, ctx);

Рукопожатие SSL должно выполняться до передачи или приема данных через зашифрованное соединение. Это достигается с помощью<ssl::stream>шаблонарукопожатия ().илиasync_handshake()Функции членов.

После подключения объекты потока SSL используются в качестве синхронных или асинхронных потоков чтения и записи. Это означает, что объекты могут использоваться с любым изread(),async_read(),write(),async_write(),read_until()илиasync_read_until().Свободные функции.

Certificate Verification

Повышаю. Asio предоставляет различные методы для настройки способа проверки SSL-сертификатов:

Для упрощения случаев использования, когда сертификаты проверяются в соответствии с правилами RFC 2818 (сертификатная верификации для HTTPS), нажмите. Asio обеспечивает обратный вызов многоразовой проверки в качестве функционального объекта:

Следующий пример показывает проверку сертификата удаленного хоста в соответствии с правилами, используемыми HTTPS:

using boost::asio::ip::tcp;
namespace ssl = boost::asio::ssl;
typedef ssl::stream<tcp::socket> ssl_socket;
// Create a context that uses the default paths for
// finding CA certificates.
ssl::context ctx(ssl::context::sslv23);
ctx.set_default_verify_paths();
// Open a socket and connect it to the remote host.
boost::asio::io_service io_service;
ssl_socket sock(io_service, ctx);
tcp::resolver resolver(io_service);
tcp::resolver::query query("host.name", "https");
boost::asio::connect(sock.lowest_layer(), resolver.resolve(query));
sock.lowest_layer().set_option(tcp::no_delay(true));
// Perform SSL handshake and verify the remote host's
// certificate.
sock.set_verify_mode(ssl::verify_peer);
sock.set_verify_callback(ssl::rfc2818_verification("host.name"));
sock.handshake(ssl_socket::client);
// ... read and write as normal ...
SSL and Threads

Объекты потока SSL не выполняют собственную блокировку. Поэтому важно, чтобы все асинхронные операции SSL выполнялись в неявной или явнойнити. Обратите внимание, что это означает, что синхронизация не требуется (и поэтому не происходит блокировки накладных расходов) в однопоточных программах.

See Also

ssl::context,ssl::rfc2818_verification,ssl::stream,SSL example.

Notes

Для использования Boost требуется OpenSSL. Поддержка SSL Asio. Когда приложение должно использовать функцию OpenSSL, которая не обернута Boost. Азио, основные типы OpenSSL могут быть получены путем вызова<ssl::context::native_handle()>или<ssl::stream::native_handle()>.


PrevUpHomeNext

Статья SSL раздела Boost.Asio Overview может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Overview ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-05-20 06:29:23/0.006505012512207/0