Сборка бинарных файлов Windows агента с/без TLS
Обзор
Этот раздел демонстрирует как собрать бинарные файлы Windows агента из исходного кода с или без TLS.
Компиляция OpenSSL
Следующие шаги помогут вам в компилировании OpenSSL из исходного кода на MS Windows 10 (64-bit).
- Для компиляции OpenSSL вам потребуется Windows машина с:
- C компилятором (например, VS 2017 RC),
- NASM (https://www.nasm.us/),
- Perl (например, Strawberry Perl с http://strawberryperl.com/),
- Perl модуль Text::Template (cpan Text::Template).
- Наличие OpenSSL исходного кода с https://www.openssl.org/. Здесь использован OpenSSL 1.1.1.
- Разархивируйте исходный код OpenSSL, например, в E:\openssl-1.1.1.
- Откройте окно командной строки, например, x64 Native Tools Command Prompt for VS 2017 RC.
- Перейдите в директорию с исходным кодом OpenSSL, например в
E:\openssl-1.1.1.
- Удостоверьтесь, что NASM можно
найти:
e:\openssl-1.1.1> nasm --version NASM version 2.13.01 compiled on May 1 2017
- Удостоверьтесь, что NASM можно
найти:
- Настройте OpenSSL,
например:
e:\openssl-1.1.1> perl E:\openssl-1.1.1\Configure VC-WIN64A no-shared no-capieng no-srp no-gost no-dgram no-dtls1-method no-dtls1_2-method --api=1.1.0 --prefix=C:\OpenSSL-Win64-111-static --openssldir=C:\OpenSSL-Win64-111-static- Обратите внимание на опцию 'no-shared': если используется 'no-shared', тогда статические библиотеки OpenSSL libcrypto.lib и libssl.lib будут 'самодостаточными' и в результате бинарные файлы Zabbix будут включать в себя OpenSSL, не потребуется внешних DLL от OpenSSL. Преимущество: бинарные файлы Zabbix можно копировать на другие Windows машины без библиотек OpenSSL. Недостаток: когда будет выпущена новая версия OpenSSL с исправлением ошибок, будет необходимо перекомпилировать и переустановить Zabbix агента.
- Если 'no-shared' не используется, тогда статические библиотеки libcrypto.lib и libssl.lib будут использоваться во время выполнения DLL OpenSSL. Преимущество: когда будет выпущена новая версия OpenSSL с исправлением ошибок, возможно вы сможете обновить только OpenSSL DLL, без необходимости перекомпиляции Zabbix агента. Недостаток: при копировании Zabbix агента на другую машину необходимо также копировать OpenSSL DLL.
- Скомпилируйте OpenSSL, выполните тесты,
установите:
e:\openssl-1.1.1> nmake e:\openssl-1.1.1> nmake test ... All tests successful. Files=152, Tests=1152, 501 wallclock secs ( 0.67 usr + 0.61 sys = 1.28 CPU) Result: PASS e:\openssl-1.1.1> nmake install_sw'install_sw' установит только компоненты приложения (т.е. библиотеки, файлы заголовков, но без документации). Если вы хотите установить всё, используйте "nmake install".
Компиляция Zabbix с OpenSSL
Следующие шаги помогут вам в компилировании Zabbix из исходного кода на MS Windows 10 (64-bit). При компиляции Zabbix с/без поддержки TLS единственное существенное отличие отражено в 4 шаге.
Поддержка OpenSSL 1.1.1 добавлена в 3.0.23, несколько дополнительных исправлений - в 3.0.24rc1.
- На Linux машине скачайте исходный код с
git:
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git $ cd zabbix $ git checkout 3.0.31 -b 3.0.31 # замените 3.0.31 на последний доступный релиз $ ./bootstrap.sh $ ./configure --enable-agent --enable-ipv6 --prefix=`pwd` $ make dbschema $ make dist - Скопируйте и распакуйте архив, например, zabbix-3.0.24.tar.gz, на Windows машине.
- Давайте предположим, что исходный код расположен в e:\zabbix-3.0.24. Откройте окно командной строки, например, x64 Native Tools Command Prompt for VS 2017 RC. Перейдите в e:\3.0.24\build\win32\project.
- Скомпилируйте zabbix_get, zabbix_sender и zabbix_agent.
- без TLS:
E:\zabbix-3.0.24\build\win32\project> nmake /K - с TLS:
E:\zabbix-3.0.24\build\win32\project> nmake /K -f Makefile_get TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include" TLSLIBDIR="C:\OpenSSL-Win64-111-static\lib" E:\zabbix-3.0.24\build\win32\project> nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include" TLSLIBDIR="C:\OpenSSL-Win64-111-static\lib" E:\zabbix-3.0.24\build\win32\project> nmake /K -f Makefile_agent TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include" TLSLIBDIR="C:\OpenSSL-Win64-111-static\lib"
- без TLS:
- Новые бинарные файлы будут располагаться в e:\zabbix-3.0.24\bin\win64. Поскольку OpenSSL был скомпилирован с опцией 'no-shared', бинарные файлы Zabbix содержат внутри себя OpenSSL и их можно копировать на другие машины, на которых нет OpenSSL.
Компиляция Zabbix с LibreSSL
Процесс схож с компилированием с поддержкой OpenSSL, но вам необходимо
небольшие изменения в файлах, которые расположены в
build\win32\project директории:
* В ''Makefile_tls'' удалите ''/DHAVE_OPENSSL_WITH_PSK'', т.е. найдите <code>
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
/DHAVE_OPENSSL_WITH_PSK</code>и замените на
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
* В ''Makefile_common.inc'' добавьте ''/NODEFAULTLIB:LIBCMT'', т.е. найдите <code>
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO
/PDB:$(TARGETDIR)\$(TARGETNAME).pdb</code>и замените на
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT