Як зібрати NGINX з підтримкою технологій TLS 1.3 та Google PageSpeed

Як вже зазначалось раніше в одній з статей нашого сайту: на сьогодні протокол HTTPS не є чимось додатковим – він є обов’язковим. Розглянемо питання використання на web-сервері деяких найсучасніших технологій.

Загалом HTTPS це фактично всім звичний протокол HTTP, який передається через криптографічні протоколи SSL або TLS. Основна відмінність в тому, що майже всі його основні елементи шифруються: URL-запити, включаючи шлях та назву ресурсу (сторінки), параметри запиту, заголовки та кукі, які часто містять ідентифікаційні дані про користувача. Не шифруються лише назва або адреса хоста (домену) та порт з’єднання.

Як бачимо для функціонування HTTPS може використовуватись як протокол TLS так й його попередник – SSL. Криптографічний протокол TLS існує в декількох версіях, найновіша та найсучасніша – TLS 1.3 – має покращену безпеку та ефективність, також не містить застарілих небезпечних опцій.

Виконаємо процедуру налаштування програмного засобу NGINX для можливості використання протоколу TLS 1.3. Процедура буде виконана на операційній системі Debian 10 з вже інстальованим web-сервером NGINX, а також такими пакетами як: wget, build-essential, libpcre3, libpcre3-dev, zlib1g-dev, checkinstall.

Для початку створимо каталог в котрому будемо зберігати вихідні коди програмних засобів:

mkdir /var/nginx_compiler

Після чого з офіційних джерел завантажимо до новоствореного каталогу програмні засоби NGINX найновішої версії (наразі це версія 1.19.3), криптографічну бібліотеку OpenSSL (версія 1.1.1g) та Google PageSpeed:

wget "http://nginx.org/download/nginx-1.19.3.tar.gz"  -P /var/nginx_compiler
wget "https://www.openssl.org/source/openssl-1.1.1g.tar.gz"  -P /var/nginx_compiler
wget "https://github.com/apache/incubator-pagespeed-ngx/archive/v1.13.35.2-stable.tar.gz" -P /var/nginx_compiler

Після чого необхідно зайти в каталог з завантаженими файлами та розархівувати їх:

cd /var/nginx_compiler
tar -xzf /var/nginx_compiler/nginx-1.19.3.tar.gz --skip-old-files
tar -xzf /var/nginx_compiler/v1.13.35.2-stable.tar.gz --skip-old-files
tar -xzf /var/nginx_compiler/openssl-1.1.1g.tar.gz --skip-old-files

Після чого зайдемо до каталогу з вихідними кодами програмного засобу Google PageSpeed та завантажимо бібліотеки, що дозволять використовувати його разом з NGINX:

cd /var/nginx_compiler/incubator-pagespeed-ngx-1.13.35.2-stable
wget https://dl.google.com/dl/page-speed/psol/1.13.35.2-x64.tar.gz
tar -xzvf 1.13.35.2-x64.tar.gz

На даному етапі необхідно отримати список параметрів з якими зібраний вже інстальований програмний засіб NGINX, для цього виконаємо команду:

nginx -V

Після чого необхідно зайти до каталогу з вихідними кодами NGINX та здійснити його конфігурацію з раніше отриманими параметрами, до яких варто додати наступні параметри:

--with-openssl=/var/nginx_compiler/openssl-1.1.1g
--with-openssl-opt=enable-tls1_3
--add-module=/var/nginx_compiler/incubator-pagespeed-ngx-1.13.35.2-stable

Конфігураційна команда матиме наступний вигляд:

./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 
--http-log-path=/var/log/nginx/access.log 
--pid-path=/var/run/nginx.pid 
--lock-path=/var/run/nginx.lock 
--http-client-body-temp-path=/var/cache/nginx/client_temp 
--http-proxy-temp-path=/var/cache/nginx/proxy_temp 
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp 
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp 
--http-scgi-temp-path=/var/cache/nginx/scgi_temp 
--user=nginx --group=nginx --with-compat --with-file-aio --with-threads 
--with-http_addition_module --with-http_auth_request_module 
--with-http_dav_module --with-http_flv_module --with-http_gunzip_module 
--with-http_gzip_static_module --with-http_mp4_module 
--with-http_random_index_module --with-http_realip_module 
--with-http_secure_link_module --with-http_slice_module 
--with-http_ssl_module --with-http_stub_status_module 
--with-http_sub_module --with-http_v2_module --with-mail 
--with-mail_ssl_module --with-stream --with-stream_realip_module 
--with-stream_ssl_module --with-stream_ssl_preread_module 
--with-cc-opt='-g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -fPIC' 
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -Wl,--as-needed -pie' 
--with-openssl=/var/nginx_compiler/openssl-1.1.1g 
--with-openssl-opt=enable-tls1_3 
--add-module=/var/nginx_compiler/incubator-pagespeed-ngx-1.13.35.2-stable

Після її виконання буде здійснено перевірку необхідних модулів та програмних засобів та налаштування процесу компіляції. Після чого варто запустити процес компіляції вихідних кодів, команда проста, але виконуватись буде декілька хвилин:

make

Далі аби не ламати систему керуваннями пакетами варто здійснити збирання скомпільованих засобів до інсталяційного пакету, для цього варто виконати наступну команду:

checkinstall

В ході її виконання буде задано кілька питань стосовно версії програмного засобу та додаткової інформації. Результатом буде deb-пакет, котрий можна інсталювати звичними засобами, наприклад:

dpkg -i /var/nginx_compiler/*.deb

Після інсталяції оновленої версії NGINX Вам стануть доступні як протокол TLSv1.3 так й параметри ввімкнення та налаштування Google PageSpeed.

Виконання вищезазначеного алгоритму дозволить значно поліпшити рівень безпеки Вашого web-ресурсу шляхом осучаснення алгоритмів криптографічного захисту. Технологія, яку дозоляє застосовувати програмний модуль Google PageSpeed, дозволить суттєво зменшити час завантаження медійних елементів Вашого web-ресурсу.

В майбутньому ми розповімо про особливості конфігурування web-серверу на базі NGINX, розкриємо деякі лайфхаки та поділимось власним досвідом. Слідкуйте за нашим сайтом!

Як зібрати NGINX з підтримкою технологій TLS 1.3 та Google PageSpeed
Знайшли помилку - повідомте нам, виділіть її та натисніть Ctrl+Enter