Kompilere igen OpenSSL 1.1 & NGINX 1.25 til TLS 1.3 (CentOS 7)

Kompilere igen OpenSSL 1.1 & NGINX 1.25 for TLS 1.3 (CentOS 7), efter scenariet, hvor du allerede har installeret på serveren o ældre version openssl forbundet med nginx-tjenesten.

Mere specifikt for at kunne aktivere OpenSSL 1.1.1t for tjenesten NGINX, som kører med en ældre version. 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

Det betyder, at der er to forskellige versioner af OpenSSL. En version installeret på systemet af "yum"(1.0.2k-fips) og en version OpenSSL installeret ved manuel kompilering (openssl 1.1.1t).

Klassisk anbefaler de fleste at geninstallere 'OpenSSL' på serverniveau. Dette ville indebære at udføre kommandoen: yum remove openssl. Men der er et stort problem her. Med afinstallation af den gamle version OpenSSL, skal du muligvis også afinstallere nogle afhængige apps. Såsom: nginx, MariaDB-server, cerbotPlus mange flere.

En enklere løsning er at omkompilere openssl 1.1 & nginx 1.25 for TLS 1.3.

Genkompiler tutorial OpenSSL 1.1 & NGINX 1.25 for TLS 1.3 (CentOS 7)

I mit eksempel er omkompileringen til nginx/1.25.0 & OpenSSL 1.1.1h ved hjælp af boghandlere OpenSSL 1.1.1t.

Genkompiler NGINX.

1. Opret filen: nginx-with-tls13-compile.sh

sudo nano nginx-with-tls13-compile.sh

hvor du tilføjer scriptet:

#!/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

Gem den nye fil.

2. Lav den nye eksekverbare fil:

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

Omskrive nginx.service

3. Lav en sikkerhedskopi af nginx.service.

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

(du kan vælge hvilken som helst sti du ønsker nginx_service.txt)

4. Opret filen til tjenesten nginx: nginx.service

sudo nano nginx.service

5. I filen den nye fil nginx.service tilføj linjerne:

##  /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. Kopier filen til 'daemon".

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

7. Når filen er blevet kopieret, skal du opdatere filtilladelserne ved hjælp af kommandoen:

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

8. Genindlæs konfigurationen systemd for at tage højde for ændringerne ved hjælp af kommandoen:

sudo systemctl daemon-reload

9. Genstart ngnix.

sudo systemctl restart nginx

Kompilere igen OpenSSL / NGINX for TLS 1.3

10. I samme mappe, hvor du har filerne nginx-with-tls13-compile.sh şi nginx.service, opret en ny fil: openssl-1.1-compile.sh.

sudo nano openssl-1.1-compile.sh

Tilføj scriptet:

#!/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

Erstat"OPENSSL=openssl-1.1.1h.tar.gz” med den version, du vil installere og genkompilere med NGINX.

11. Gør scriptet eksekverbart:

chmod +x openssl-1.1-compile.sh

12. Kør kommandoen:

./openssl-1.1-compile.sh

Vent på, at genkompileringsprocessen er fuldført OpenSSL & NGINX.

Kompilere igen OpenSSL 1.1 & NGINX 1.25 til TLS 1.3 (CentOS 7)
OpenSSL & NGINX

Hvis vi kan hjælpe dig, eller der skal tilføjes, er kommentarfeltet åbent.

Jeg brænder for teknologi, skriver jeg med glæde på StealthSettings.com siden 2006. Du finder artikler om styresystemer skrevet af mig Windows, Linux, macOS, men også om webplatforme som f.eks WordPress şi WooCommerce

Hvordan man » Linux » Kompilere igen OpenSSL 1.1 & NGINX 1.25 til TLS 1.3 (CentOS 7)

Efterlad en kommentar