Собираем Nginx из исходного кода в Astra Linux с поддержкой OpenSSL 3.0.3
Доступной версией Nginx в Astra Linux является версия 1.14.1 , но вам, возможно, вам может потребоваться свежая версия, на момент написания статьи это 1.20.2 . В репозитории Astra Linux находится на данный момент немного устаревшая версия библиотеки libssl-dev , версии 1.1.1k . Мы будем сразу использовать новую версию ветки OpenSSL 3 (3.0.3) , она будет поддерживаться до 7 сентября 2026 . К тому же у вас могут возникнуть проблемы со сборкой последней версии Nginx при использовании OpenSSL 1.1.1k . Сегодня мы рассмотрим сборку из исходного кода web-сервера Nginx на Astra Linux с поддержкой OpenSSL 3.0.3 .
Установка
sudo apt update sudo apt upgrade sudo apt install build-essential git perl libperl-dev libgd3 libgd-dev libgeoip1 libgeoip-dev geoip-bin libxml2 libxml2-dev libxslt1.1 libxslt1-dev zlib1g-dev libssl1.0-dev libpcre2-dev libpcre2-posix0 mercurial wget libpcre3-dev
cd ~ hg clone http://hg.nginx.org/nginx -r stable-1.20 ~/nginx
Для сборки нам потребуется свежая версия OpenSSL так как с версиями ветки 1 у меня возникли проблемы со сборкой Nginx .
Загрузка исходного кода OpenSSL 3.0.3
cd ~/nginx wget --no-check-certificate https://www.openssl.org/source/openssl-3.0.3.tar.gz
echo 'ee0078adcef1de5f003c62c80cc96527721609c6f3bb42b7795df31f8b558c0b openssl-3.0.3.tar.gz' | tee openssl-3.0.3.tar.gz.sha256 sha256sum --check openssl-3.0.3.tar.gz.sha256 openssl-3.0.3.tar.gz: ЦЕЛ
Конфигурирование и сборка nginx
./auto/configure \ --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --builddir=nginx-astra-linux \ --with-select_module \ --with-poll_module \ --with-threads \ --with-file-aio \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-http_addition_module \ --with-http_xslt_module=dynamic \ --with-http_image_filter_module=dynamic \ --with-http_geoip_module=dynamic \ --with-http_sub_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_mp4_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_auth_request_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_degradation_module \ --with-http_slice_module \ --with-http_stub_status_module \ --with-http_perl_module=dynamic \ --with-http_ssl_module \ --with-pcre \ --with-pcre-jit \ --with-openssl=./openssl-3.0.3
sed -e "s|%%PREFIX%%|/etc/nginx|" \ -e "s|%%PID_PATH%%|/var/run/nginx.pid|" \ -e "s|%%CONF_PATH%%|/etc/nginx/nginx.conf|" \ -e "s|%%ERROR_LOG_PATH%%|/var/log/nginx/error.log|" \ < docs/man/nginx.8 >nginx-astra-linux/nginx.8 make[1]: выход из каталога «/home/user/nginx»
sudo nginx -v nginx version: nginx/1.20.2
sudo nginx -V nginx version: nginx/1.20.2 built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1) built with OpenSSL 3.0.3 3 May 2022 TLS SNI support enabled configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --builddir=nginx-astra-linux --with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-http_ssl_module --with-pcre --with-pcre-jit --with-openssl=~/openssl-3.0.3
Запускаем nginx как службу
sudo mcedit /lib/systemd/system/nginx.service
[Unit] Description=The NGINX HTTP and reverse proxy server After=syslog.target network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/run/nginx.pid ExecStartPre=/usr/sbin/nginx -t ExecStart=/usr/sbin/nginx ExecReload=/usr/sbin/nginx -s reload ExecStop=/bin/kill -s QUIT $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
sudo systemctl enable nginx sudo systemctl daemon-reload
sudo systemctl start nginx
Заключение
Сегодня мы рассмотрели сборку из исходного кода web-сервера nginx с поддержкой последней версии openssl 3.0.3 . Установили требуемые пакеты Загрузили исходный код Nginx и Openssl . Сконфигурировали и произвели сборку nginx Установили web-сервер и проверили версию и его конфигурацию. Запустили сервер как службу. Проверили загрузку тестовой страницы.
Установка OpenSSL 3.0.3 из исходного кода в Astra Linux
Технология SSL (Secure Socket Layer) стала неотъемлемой частью IT-технологий. Каждый современный сайт обязан поддерживать SSL-соединение, а современные браузеры выдают предупреждение или вообще не открывают страницы сайтов без поддержки SSL. В Astra Linux используется немного устаревшая версия SSL 1.1.1, уже выпущена более новая версия 3.0.3. В этой статье мы рассмотрим установку OpenSSL версии 3.0.3 из исходного кода в Astra Linux. Установка будет производится на виртуальную машину с установленными базовыми пакетами.
Установка
sudo apt update sudo apt install build-essential libffi-dev wget libssl-dev libncurses5-dev libsqlite3-dev libreadline-dev libtk8.6 libpcap-dev libgdbm-dev libz-dev tk-dev libsqlite3-dev libreadline-dev liblzma-dev libffi-dev libbz2-dev uuid-dev
cd ~ wget --no-check-certificate https://www.openssl.org/source/openssl-3.0.3.tar.gz
echo 'ee0078adcef1de5f003c62c80cc96527721609c6f3bb42b7795df31f8b558c0b openssl-3.0.3.tar.gz' | tee openssl-3.0.3.tar.gz.sha256 sha256sum --check openssl-3.0.3.tar.gz.sha256 openssl-3.0.3.tar.gz: ЦЕЛ
./Configure --libdir=/usr/lib --prefix=/usr --api=1.1.1
openssl version -a OpenSSL 3.0.3 3 May 2022 (Library: OpenSSL 3.0.3 3 May 2022) built on: Tue May 31 02:25:10 2022 UTC platform: linux-x86_64 options: bn(64,64) compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG OPENSSLDIR: "/usr/ssl" ENGINESDIR: "/usr/lib/engines-3" MODULESDIR: "/usr/lib/ossl-modules" Seeding source: os-specific CPUINFO: OPENSSL_ia32cap=0xfeda32034f8bffff:0x9c27a9
Обратите внимание, несмотря на то, что мы собрали новую версию OpenSSL, Nginx и PHP поставляемые из репозиториев Astra Linux все равно будут использовать версию 1.1.1k или ниже, так как они были собраны вместе с библиотеками этих версий. Для теста я установил Nginx и Php7.0 из репозитория Astra Linux и все заработало без ошибок. Установка OpenSSL версии 3.0.3, судя по всему, критически не влияет на работоспособность операционной системы и установленных сервисов!
Заключение
Сегодня мы установили новую версию OpenSSL 3.0.3 из исходного кода в Astra Linux. Установили требуемые пакеты. Загрузили исходный код и проверили его хэш. Сконфигурировали и запустили сборку. Установили собранную версию. Проверили текущую версию OpenSSL в системе.