пятница, 5 ноября 2010 г.

Использование OpenSSL

Часть 1. Сборка и подключение


Чтобы добавить поддержку шифрования в сетевое приложение можно воспользоваться открытой библиотекой OpenSSL.

1. Сборка библиотеки


Поскольку бинарные сборки библиотеки доступны не для всех архитектур — будем собирать из исходников. Тем более, что это позволит использовать подходящие флаги оптимизации.

1.1 Unix


Сборка под Unix достаточно тривиальна, особенно, если в нашем распоряжении есть менеджер пакетов. Но, на всякий случай, приведу последовательность сборки из исходников.
Качаем последнюю (или необходимую) версию по адресу http://www.openssl.org/source/ и распаковываем ее. На данный момент последняя версия — openssl-1.0.0a:

> tar xvpf openssl-1.0.0a.tar.gz

В каталоге ./openssl-1.0.0a/ запускаем скрипт конфигурации:

> ./config 


Собираем:
   
> make
   
И устанавливаем:
   
> sudo make install

     Проверить работоспособность и версию установленной библиотеки можно выполнив команду:
   

> openssl version
   

1.2 Windows

   
    Под Windows нам понадобится чуть больше движений. Для конфигурирования необходим Perl, который можно взять здесь (http://strawberryperl.com/) и для сборки — Visual Studio с компилятором C++.
    После установки перечисленных выше пакетов, можно приступать к сборке.
    В командной строке переходим в каталог openssl-1.0.0a и выполняем и запускаем Perl с указанием компилятора и каталога, в который будет установлена собранная библиотека:

    > perl Configure VC-WIN32 --prefix=c:\Temp\openssl
    > ms\do_ms
    Если последней строчкой будет: Configured for VC-WIN32 — значит все хорошо, если нет — ищем ошибку, исправляем и повторяем процедуру.
    Теперь компиляция. Запускаем Visual Studio 2008 Command Prompt в каталоге с openssl и запускаем сборку.
Чтобы получить DLL:

> nmake -f ms\ntdll.mak
> nmake -f ms\ntdll.mak install
   
Чтобы собрать статическую библиотеку:

> nmake -f ms\nt.mak
> nmake -f ms\nt.mak install

    2. Подключение

   
    После того, как библиотека была успешно собрана и установлена, ее можно начинать использовать. Нам понадобятся заголовочные файлы и сама библиотека.
В Unix это тривиальное -lssl во флагах линковщика, а в Windows необходимо указать путь к заголовочным файлам, собранной библиотеке и указать имена библиотек:

Additional Include Directories: c:/Temp/openssl/include
Additional Library Directories: c:/Temp/openssl/lib
Additional Dependencies: libeay32.lib ssleay32.lib


Теперь можно использовать функции OpenSSL в проекте. Как добавить шифрование в сервер и клиент я расскажу в следующей части.