Recompilar OpenSSL 1.1 e NGINX 1.25 para TLS 1.3 (CentOS 7)

Recompilar OpenSSL 1.1 & NGINX 1.25 para TLS 1.3 (CentOS 7), seguindo o cenário onde você já instalou no servidor o versão mais antiga openssl associado ao serviço nginx.

Mais especificamente, para poder ativar OpenSSL 1.1.1t para o serviço NGINX, que é executado com uma versão mais antiga. OpenSSL 1.0.2k.

# nginx -V
nginx version: nginx/1.25.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) 
built with OpenSSL 1.0.2k-fips  26 Jan 2017
TLS SNI support enabled
# openssl version -a
OpenSSL 1.1.1t  7 Feb 2023

Isso significa que existem duas versões diferentes de OpenSSL. Uma versão instalada no sistema por “yum"(1.0.2k-fips) e uma versão OpenSSL instalado por compilação manual (openssl 1.1.1t).

Classicamente, a maioria recomenda reinstalar 'OpenSSL' no nível do servidor. Isso implicaria executar o comando: yum remove openssl. Mas há um grande problema aqui. Com a desinstalação da versão antiga OpenSSL, você também pode precisar desinstalar alguns aplicativos dependentes. Como: nginx, MariaDB-server, cerbotAlém de muitos outros.

Uma solução mais simples é recompilar openssl 1.1 & nginx 1.25 para TLS 1.3.

Tutorial de recompilação OpenSSL 1.1 & NGINX 1.25 para TLS 1.3 (CentOS 7)

No meu exemplo, a recompilação é para nginx/1.25.0 & OpenSSL 1.1.1h usando livrarias OpenSSL 1.1.1t.

Recompile o NGINX.

1. Crie o arquivo: nginx-with-tls13-compile.sh

sudo nano nginx-with-tls13-compile.sh

onde você adiciona o script:

#!/bin/bash

## nginx
NGINX=nginx-1.25.0.tar.gz

if [ ! -f "${NGINX}" ];then
    wget https://nginx.org/download/${NGINX}
fi

ND=$(basename $NGINX .tar.gz)
if [ ! -d "${ND}" ];then
    tar zxvf ${NGINX}
fi

cd ${ND}

## pre require package
## yum install gcc pcre-devel zlib-devel

./configure --prefix=/etc/nginx \
    --sbin-path=/usr/sbin/nginx \
    --modules-path=/usr/lib64/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-openssl=../$(basename $OPENSSL .tar.gz)
    
make

sudo make install

nginx -V

Salve o novo arquivo.

2. Faça o novo arquivo executável:

chmod +x nginx-with-tls13-compile.sh

reescrever nginx.service

3. Faça um backup de nginx.service.

cat /lib/systemd/system/nginx.service > /srv/nginx_service.txt

(você pode escolher qualquer caminho que quiser para nginx_service.txt)

4. Crie o arquivo para o serviço nginx: nginx.service

sudo nano nginx.service

5. No arquivo o novo arquivo nginx.service adicione as linhas:

##  /lib/systemd/system/nginx.service

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.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

6. Copie o arquivo para 'daemon".

sudo cp nginx.service /lib/systemd/system/nginx.service

7. Depois que o arquivo for copiado, atualize as permissões do arquivo usando o comando:

sudo chmod 644 /lib/systemd/system/nginx.service

8. Recarregue a configuração systemd para levar em consideração as alterações usando o comando:

sudo systemctl daemon-reload

9. Reiniciar ngnix.

sudo systemctl restart nginx

Recompilar OpenSSL / NGINX para TLS 1.3

10. Na mesma pasta onde estão os arquivos nginx-with-tls13-compile.sh şi nginx.service, crie um novo arquivo: openssl-1.1-compile.sh.

sudo nano openssl-1.1-compile.sh

Adicione o script:

#!/bin/bash

## Compile OpenSSL
OPENSSL=openssl-1.1.1h.tar.gz

DONE=openssl-compile-done

if [ ! -f "${DONE}" ] ;then
    wget https://www.openssl.org/source/${OPENSSL}

    tar zxvf ${OPENSSL}

    cd $(basename $OPENSSL .tar.gz)

    ./config shared no-idea no-md2 no-mdc2 no-rc5 no-rc4 --prefix=/usr/local/

    make

    sudo make install

    cd ..

    touch ${DONE}
fi

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64/

read -n1 -r -p "$(/usr/local/bin/openssl version) - Press any key to continue..." key

source ./nginx-with-tls13-compile.sh

Substituir "OPENSSL=openssl-1.1.1h.tar.gz” pela versão que deseja instalar e recompilar com o NGINX.

11. Torne o script executável:

chmod +x openssl-1.1-compile.sh

12. Execute o comando:

./openssl-1.1-compile.sh

Aguarde a conclusão do processo de recompilação OpenSSL & NGINX.

Recompilar OpenSSL 1.1 e NGINX 1.25 para TLS 1.3 (CentOS 7)
OpenSSL & NGINX

Se pudermos ajudá-lo ou houver acréscimos a serem feitos, a seção de comentários está aberta.

Apaixonado por tecnologia, escrevo com prazer em StealthSettings.com desde 2006. Você encontrará artigos sobre sistemas operacionais escritos por mim Windows, Linux, macOS, mas também sobre plataformas web como WordPress şi WooCommerce

Como » Linux » Recompilar OpenSSL 1.1 e NGINX 1.25 para TLS 1.3 (CentOS 7)

Deixe um comentário

Best tutorials in your language:
EN - DE - DA - FR - ES - IT - PT - NL - NO - FI - SV - PL - HR - SL - CS - SK - TR - EL - LV - ET - LT - BG - UK - RU - HU - ID - VI - HI - JA - KO - TH - ZH-CN - ZH-TW - IW - AR