Centos и Nginx с поддержкой OpenSSL 1.1.1p

baltun

Администратор
Сообщения
10.731
Реакции
2.542
Баллы
2.003
Поддержка протокола HTTP/2 заметно увеличивает скорость загрузки веб-сайтов и переходить на него, в данный момент, рекомендуется всем владельцам сайтов. Подавляющее большинство современных браузеров, обеспечивают поддержку нового протокола по умолчанию, кроме того HTTP/2 обратно совместим с протоколом HTTP/1.1.

Итак начнем, у нас есть в наличии:

  • CentOS 7
  • ISPmanager 5
  • И большое желание получить HTTP/2 с поддержкой ALPN
Чтобы не возникло проблем с ISPmanager 5, мы просто заменим уже установленный Nginx. Первым делом устанавливаем все необходимые компоненты:
Код:
yum -y groupinstall 'Development Tools'
yum -y install openssl-devel libxml2-devel libxslt-devel gd-devel perl-ExtUtils-Embed GeoIP-devel

Далее создаем новый каталог и загружаем OpenSSL 1.1.1p (июнь 2022) с официального сайта
Код:
mkdir -p /opt/lib
cd /opt/lib
wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz
tar -zxvf /opt/lib/openssl-1.1.1p.tar.gz -C /opt/lib

Если требуется 3 версия. Создаем новый каталог и загружаем OpenSSL 3.0.4 (июнь 2022) с официального сайта
Код:
mkdir -p /opt/lib
cd /opt/lib
wget https://www.openssl.org/source/openssl-3.0.4.tar.gz
tar -zxvf /opt/lib/openssl-3.0.4.tar.gz -C /opt/lib

Загружаем Nginx 1.12.2
Для Centos 7

Код:
rpm -ivh http://nginx.org/packages/centos/7/SRPMS/nginx-1.12.2-1.el7_4.ngx.src.rpm
Для Centos 6
Код:
rpm -ivh http://nginx.org/packages/centos/6/SRPMS/nginx-1.12.2-1.el6.ngx.src.rpm

Загружаем Nginx 1.13.12
Для Centos 7

Код:
rpm -ivh http://nginx.org/packages/mainline/centos/7/SRPMS/nginx-1.13.12-1.el7_4.ngx.src.rpm
Для Centos 6
Код:
rpm -ivh http://nginx.org/packages/mainline/centos/6/SRPMS/nginx-1.13.12-1.el6.ngx.src.rpm

Загружаем Nginx 1.14.0
Для Centos 7

Код:
rpm -ivh http://nginx.org/packages/centos/7/SRPMS/nginx-1.14.0-1.el7_4.ngx.src.rpm
Для Centos 6
Код:
rpm -ivh http://nginx.org/packages/centos/6/SRPMS/nginx-1.14.0-1.el6.ngx.src.rpm

Загружаем Nginx 1.18.0
Для Centos 7

Код:
rpm -ivh http://nginx.org/packages/centos/7/SRPMS/nginx-1.18.0-2.el7.ngx.src.rpm

Загружаем Nginx 1.18.0
Для Centos 8

Код:
dnf module list nginx
dnf module reset nginx
dnf module enable nginx:1.18
dnf install nginx

Загружаем Nginx 1.19.6
Для Centos 7

Код:
rpm -ivh http://nginx.org/packages/mainline/centos/7/SRPMS/nginx-1.19.6-1.el7.ngx.src.rpm

Перед компиляцией на Centos 8 требуется установить:
Код:
dnf install gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel pcre-devel

После этого перекомпилируем установленный Nginx, с библиотекой OpenSSL 1.1.1i процесс может занять довольно много времени, зависит от мощностей сервера.
Код:
sed -i "s|--with-http_ssl_module|--with-http_ssl_module --with-openssl=/opt/lib/openssl-1.1.1p|g" /root/rpmbuild/SPECS/nginx.spec
rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec

Если требуется 3 версия. После этого перекомпилируем установленный Nginx, с библиотекой OpenSSL 3.0.4 процесс может занять довольно много времени, зависит от мощностей сервера.
Код:
sed -i "s|--with-http_ssl_module|--with-http_ssl_module --with-openssl=/opt/lib/openssl-3.0.4|g" /root/rpmbuild/SPECS/nginx.spec
rpmbuild -ba /root/rpmbuild/SPECS/nginx.spec

Если при сборке сталкиваемся с такой ошибкой, наблюдается начиная с версии 1.13.6
error: /home/builder/rpmbuild/SPECS/nginx.spec:28: bad %if condition

Устанавливаем пакет и продолжаем сборку по инструкции:
Код:
yum install redhat-lsb

И наконец устанавливаем собранный нами Nginx 1.12.2
Для Centos 7

Код:
rpm -Uvh /root/rpmbuild/RPMS/x86_64/nginx-1.12.2-1.el7_4.ngx.x86_64.rpm
Для Centos 6
Код:
rpm -Uvh /root/rpmbuild/RPMS/x86_64/nginx-1.12.2-1.el6.ngx.x86_64.rpm

Nginx 1.13.12
Для Centos 7

Код:
rpm -Uvh /root/rpmbuild/RPMS/x86_64/nginx-1.13.12-1.el7_4.ngx.x86_64.rpm
Для Centos 6
Код:
rpm -Uvh /root/rpmbuild/RPMS/x86_64/nginx-1.13.12-1.el6.ngx.x86_64.rpm

Nginx 1.14.0
Для Centos 7

Код:
rpm -Uvh /root/rpmbuild/RPMS/x86_64/nginx-1.14.0-1.el7_4.ngx.x86_64.rpm
Для Centos 6
Код:
rpm -Uvh /root/rpmbuild/RPMS/x86_64/nginx-1.14.0-1.el6.ngx.x86_64.rpm

Nginx 1.18.0
Для Centos 7

Код:
rpm -Uvh /root/rpmbuild/RPMS/x86_64/nginx-1.18.0-1.el7.ngx.x86_64.rpm

Nginx 1.18.0
Для Centos 8

После установки нужно будет установить также модуль:
Код:
dnf install nginx-mod*

Nginx 1.19.6
Для Centos 7

Код:
rpm -Uvh /root/rpmbuild/RPMS/x86_64/nginx-1.19.6-1.el7.ngx.x86_64.rpm

Если вы пересобрали пакет, то переустановить его можно так:
Код:
yum reinstall /root/rpmbuild/RPMS/x86_64/nginx-1.18.0-1.el7.ngx.x86_64.rpm

Понизить версию ниже можно так, для ISP Manager подойдет именно такая команда:
Код:
yum downgrade /root/rpmbuild/RPMS/x86_64/nginx-1.18.0-1.el7.ngx.x86_64.rpm

Проверим что у нас получилось
Код:
nginx -V
nginx version: nginx/1.15.9
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.1.1b  26 Feb 2019
TLS SNI support enabled

Чтобы проверить, что сайт работает по HTTP2, установите HTTP2 indicator для .
Активируем HTTP2
Код:
 server {
        listen 443 ssl http2;
        server_name domain.tld  www.domain.tld;
        ssl on;
        ssl_certificate /etc/nginx/ssl/domain.crt;
        ssl_certificate_key /etc/nginx/ssl/domain.key;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;
        ssl_prefer_server_ciphers On;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!3DES:!MD5:!PSK;
        add_header Strict-Transport-Security max-age=15768000;
        ssl_stapling on;
}
Активируем HTTP3
Код:
 server {
        listen 443 http3 reuseport;
        server_name domain.tld  www.domain.tld;
        ssl on;
        ssl_certificate /etc/nginx/ssl/domain.crt;
        ssl_certificate_key /etc/nginx/ssl/domain.key;
        ssl_dhparam /etc/nginx/ssl/dhparam.pem;
        ssl_prefer_server_ciphers On;
        ssl_protocols TLSv1.2 TLSv1.3;
        add_header QUIC-Status $quic;
        add_header alt-svc 'h3=":443"; ma=2592000,h3-29=":443"; ma=2592000,h3-T051=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=3600,h3-27=":443"; ma=2592000; v="46,43"';
        ssl_stapling on;
}
 
Последнее редактирование:
Назад
Верх Низ