Этот раздел демонстрирует, как можно собрать бинарные файлы Zabbix агента на Windows из исходного кода с / без поддержки TLS.
Следующие шаги помогут вам скомпилировать OpenSSL из исходного кода на MS Windows 10 (64-bit).
e:\openssl-1.1.1> nasm --version NASM version 2.13.01 compiled on May 1 2017
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
Обязательно отмените доступ на запись для пользователей, не являющихся администраторами, в каталог установки OpenSSL (C:\OpenSSL-Win64-111-static
). В противном случае агент Zabbix будет загружать настройки SSL из пути, который может быть изменён непривилегированными пользователями, что приведёт к потенциальной уязвимости безопасности.
- Обратите внимание на опцию «no-shared»: при использовании «no-shared» статические библиотеки OpenSSL libcrypto.lib и libssl.lib будут «самодостаточными», и в результате бинарные файлы Zabbix будут включать в себя OpenSSL, не потребуется внешних DLL от OpenSSL. Преимущество: бинарные файлы Zabbix можно будет копировать на другие Windows машины без необходимости наличия библиотек OpenSSL. Недостаток: когда будет выпущена новая версия OpenSSL с исправлением ошибок, будет необходимо скомпилировать и установить Zabbix агента заново.
- Если 'no-shared' не используется, тогда во время выполнения DLL OpenSSL будут использоваться статические библиотеки libcrypto.lib и libssl.lib. Преимущество: когда будет выпущена новая версия OpenSSL с исправлением ошибок, возможно вы сможете обновить только OpenSSL DLL, без необходимости повторной компиляции Zabbix агента. Недостаток: при копировании Zabbix агента на другую машину необходимо также копировать OpenSSL DLL.
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».E:\pcre2-10.39\build> nmake install
Следующие шаги помогут вам скомпилировать Zabbix из исходного кода на MS Windows 10 (64-bit). Четвертый шаг — единственное существенное отличие при компиляции Zabbix с / без поддержки TLS.
$ git clone https://git.zabbix.com/scm/zbx/zabbix.git $ cd zabbix $ ./bootstrap.sh $ ./configure --enable-agent --enable-ipv6 --prefix=`pwd` $ make dbschema $ make dist
E:\zabbix-4.4.0\build\win32\project> nmake /K PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib
E:\zabbix-4.4.0\build\win32\project> nmake /K -f Makefile_get TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib E:\zabbix-4.4.0\build\win32\project> nmake /K -f Makefile_sender TLS=openssl TLSINCDIR="C:\OpenSSL-Win64-111-static\include TLSLIBDIR="C:\OpenSSL-Win64-111-static\lib" PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib E:\zabbix-4.4.0\build\win32\project> nmake /K -f Makefile_agent TLS=openssl TLSINCDIR=C:\OpenSSL-Win64-111-static\include TLSLIBDIR=C:\OpenSSL-Win64-111-static\lib PCREINCDIR=E:\pcre2-10.39-install\include PCRELIBDIR=E:\pcre2-10.39-install\lib
Процесс схож с компиляцией с поддержкой OpenSSL, но Вам будет необходимо внести небольшие изменения в файлы, расположенные в директории build\win32\project
:
/DHAVE_OPENSSL_WITH_PSK
. Например, найдите:CFLAGS = $(CFLAGS) /DHAVE_OPENSSL /DHAVE_OPENSSL_WITH_PSK
и замените на
CFLAGS = $(CFLAGS) /DHAVE_OPENSSL
/NODEFAULTLIB:LIBCMT
. Например, найдите:/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb
и замените на
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DYNAMICBASE:NO /PDB:$(TARGETDIR)\$(TARGETNAME).pdb /NODEFAULTLIB:LIBCMT