Рейтинг@Mail.ru

Компилируем библиотеку OpenSSL 1.1.0 для платформ Win32 и Win64

Автор: Alex. Опубликовано в Программирование . просмотров: 17207

Рейтинг:  5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
 

OpenSSL – это криптографическая библиотека, предназначенная для использования в приложениях, которым нужно безопасное взаимодействие в компьютерных сетях, например, с целью защиты передаваемой информации от прослушивания или для установления личности участника на другом конце. Найти скомпилированную библиотеку конечно можно, но не нужно. Разработчики OpenSSL советуют компилировать библиотеку самостоятельно, чтобы учесть все необходимые для вашего случая детали, такие как особенности архитектуры и платформы. В этой статье мы рассмотрим, как скомпилировать библиотеку OpenSSL версии 1.1.0 и выше для платформ Win32 и Win64.

OpenSSL

Готовим всё необходимое для компиляции OpenSSL

Первое, что нужно сделать – это скачать и установить необходимые приложения:

    1. Perl. Рекомендуется использовать ActiveState Perl, который вы можете найти на официальном сайте здесь.
    2. Netwide Assembler (NASM). Этот ассемблер является обязательным, если вы планируете использовать модули на ассемблере. Скачать дистрибутив этого ассемблера вы можете с официального сайта здесь. После установки обязательно пропишите путь к файлу nasm.exe в переменную среды PATH.
    3. Компилятор C. OpenSSL тестируется только с компилятором Visual C++, поэтому лучше использовать именно его. Этот компилятор у вас уже установлен, если у вас установлена какая либо версия Microsoft Visual Studio. Если студия у вас не установлена, и вы не собираетесь её устанавливать, вы можете установить Visual C++ 2015 Build Tools (если при установке вы уберёте все галочки, то будет установлен только компилятор).

После этого скачайте исходники библиотеки OpenSSL с официального сайта отсюда. Если вы хотите иметь сразу две версии OpenSSL для отладки, то вам нужно будет скомпилировать OpenSSL два раза в разные папки. В этом случае создайте две папки: одну для платформы Win32, вторую для платформы Win64, например, C:\openssl-src-32 и C:\openssl-src-64, и распакуйте исходники два раза в обе эти папки.

Всё дальнейшее нужно будет делать из командной строки Visual Studio. Командную строку запускайте сразу для нужной целевой архитектуры процессора x86 или x64. Как в вашей операционной системе найти ярлык/пункт меню для запуска командной строки можете почитать здесь. Например, если у вас Windows 7 и установлена студия 2012, то для запуска командной строки для целевой архитектуры процессора x86 нужный пункт меню будет находиться по пути «Пуск -> Все программы -> Microsoft Visual Studio 2018 -> Visual Studio Tools -> Командная строка VS2012 x86 Native Tools». А если вы установили только инструменты Visual C++ 2015 Build Tools, то для Windows 7 и целевой архитектуры x86 пункт меню будет «Пуск -> Все программы -> Visual C++ Build Tools -> Windows Desktop Commands Prompt -> Visual C++ 2015 x86 Native Build Tools Command Prompt».

Компиляция библиотеки по умолчанию происходит в папку приложений «C:\Program Files\OpenSSL» или «C:\Program Files (86)\OpenSSL» (в зависимости от текущей архитектуры Windows), поэтому командную строку Visual Studio нужно запускать с правами администратора. Для этого по ярлыку/пункту меню нужно щёлкнуть правой кнопкой мышки и выбрать «Запуск от имени администратора».

Компилируем OpenSSL

    1. Откройте командную строку Visual Studio (как это сделать, см. выше).
    2. Перейдите в папку с нужными исходниками. Для этого выполните команду «cd ПУТЬ». Например, для перехода в папку C:\openssl-src-32 команда будет выглядеть так:

cd C:\openssl-src-32

А для перехода в папку C:\openssl-src-64 так:

cd C:\openssl-src-64

    1. Сконфигурируйте make-файл для конкретной целевой платформы и целевой папки. Для платформы Win32 и целевой папки «C:\Program Files\OpenSSL» или «C:\Program Files (x86)» выполните команду:

perl Configure VC-WIN32

Для компиляции для Win32 в вашу конкретную папку, например, «C:\Build-OpenSSL-VC-32»:

perl Configure VC-WIN32 --prefix=C:\Build-OpenSSL-VC-32

Для компиляции для Win32 с символьной отладочной информацией в вашу папку, например, «C:\Build-OpenSSL-VC-32-dbg»:

perl Configure VC-WIN32 --debug --prefix=C:\Build-OpenSSL-VC-32-dbg

Для платформы Win64:

perl Configure VC-WIN64A

Для компиляции для Win64 в вашу конкретную папку, например, «C:\Build-OpenSSL-VC-64»:

perl Configure VC-WIN64A --prefix=C:\Build-OpenSSL-VC-64

Для компиляции для Win64 с символьной отладочной информацией в вашу папку, например, «C:\Build-OpenSSL-VC-64-dbg»:

perl Configure VC-WIN64A --debug --prefix=C:\Build-OpenSSL-VC-64

Если вы решили не использовать модули на ассемблере, то допишите ещё параметр «no-asm». Например:

perl Configure VC-WIN32 no-asm

Узнать назначение ещё большего количества параметров, можно почитав текстовый файл INSTALL, который находится в папке с исходниками.

    1. Чтобы получить библиотеку OpenSSL с полной отладочной информацией, после шага 3, откройте файл makefile в любом текстовом редакторе, найдите в тексте флажки «/Zi» и замените их на «/Z7». Таких замен у вас должно получиться три. Подробности об этих флажках см. здесь.

На самом деле я не обнаружил разницы между компиляцией с добавлением отладочных символов и без неё. У меня всё время получается вариант для отладки: создаются OBJ и PDB-файлы. Видимо при создании файла makefile где-то закралась ошибка, которую в будущих версиях исправят.

    1. Скомпилируйте OpenSSL. Для этого последовательно выполните следующие три команды:

nmake
nmake test
nmake install

Здесь команда «nmake» компилирует весь проект, команда «nmake test» проводит тестирование, при успешном проведении которого должны появится сообщения «All tests successful» и «Result: PASS», а команда «nmake install» копирует необходимые файлы в папки назначения.

После выполнения последней команды в целевой папке (это папка «C:\Program Files\OpenSSL», «C:\Program Files (x86)\OpenSSL» или папка, которую вы задали параметром --prefix) появятся готовые файлы библиотеки OpenSSL. Можно их использовать.

Итог

Как видите, ничего особенно сложного в компиляции OpenSSL нет. Однако особо ленивые могут скачать уже готовые дистрибутивы, содержащие скомпилированные файлы библиотеки, с сайта Shining Light Productions, или более старые версии библиотеки отсюда.

При написании статьи мне помогли Википедия OpenSSL, статья Building OpenSSL for Visual Studio и файлы README, INSTALL и NOTES.WIN из папки с исходниками.

Tags: OpenSSL

Добавить комментарий