Kompiler på nytt OpenSSL 1.1 og NGINX 1.25 for TLS 1.3 (CentOS 7)

Kompiler på nytt OpenSSL 1.1 & NGINX 1.25 for TLS 1.3 (CentOS 7), etter scenariet der du allerede har installert på serveren o eldre versjon openssl knyttet til nginx-tjenesten.

Mer spesifikt for å kunne aktivere OpenSSL 1.1.1t for tjenesten NGINX, som kjører med en eldre versjon. 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

Dette betyr at det er to forskjellige versjoner av OpenSSL. En versjon installert på systemet av "yum"(1.0.2k-fips) og en versjon OpenSSL installert ved manuell kompilering (openssl 1.1.1t).

Klassisk sett anbefaler de fleste å installere på nyttOpenSSL' på servernivå. Dette vil innebære å utføre kommandoen: yum remove openssl. Men det er et stort problem her. Med avinstallering av den gamle versjonen OpenSSL, kan det hende du også må avinstallere noen avhengige apper. Som for eksempel: nginx, MariaDB-server, cerbotPluss mange andre.

En enklere løsning er å rekompilere openssl 1.1 & nginx 1.25 for TLS 1.3.

Rekompiler opplæringen OpenSSL 1.1 & NGINX 1.25 for TLS 1.3 (CentOS 7)

I mitt eksempel er rekompileringen for nginx/1.25.0 & OpenSSL 1.1.1h ved hjelp av bokhandler OpenSSL 1.1.1t.

Kompiler NGINX på nytt.

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

sudo nano nginx-with-tls13-compile.sh

hvor du legger til skriptet:

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

Lagre den nye filen.

2. Lag den nye kjørbare filen:

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

Omskrive nginx.service

3. Lag en sikkerhetskopi av nginx.service.

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

(du kan velge hvilken som helst vei du vil nginx_service.txt)

4. Opprett filen for tjenesten nginx: nginx.service

sudo nano nginx.service

5. I filen den nye filen nginx.service legg til linjene:

##  /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. Etter at filen har blitt kopiert, oppdater filtillatelsene ved å bruke kommandoen:

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

8. Last inn konfigurasjonen på nytt systemd for å ta hensyn til endringene ved å bruke kommandoen:

sudo systemctl daemon-reload

9. Start på nytt ngnix.

sudo systemctl restart nginx

Kompiler på nytt OpenSSL / NGINX for TLS 1.3

10. I samme mappe der du har filene nginx-with-tls13-compile.sh SI nginx.service, opprett en ny fil: openssl-1.1-compile.sh.

sudo nano openssl-1.1-compile.sh

Legg til skriptet:

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

Erstatte "OPENSSL=openssl-1.1.1h.tar.gz” med versjonen du vil installere og rekompilere med NGINX.

11. Gjør skriptet kjørbart:

chmod +x openssl-1.1-compile.sh

12. Kjør kommandoen:

./openssl-1.1-compile.sh

Vent til rekompileringsprosessen er fullført OpenSSL & NGINX.

Kompiler på nytt OpenSSL 1.1 og NGINX 1.25 for TLS 1.3 (CentOS 7)
OpenSSL & NGINX

Hvis vi kan hjelpe deg eller det er tillegg som må gjøres, er kommentarfeltet åpen.

Teknologiinteressert, jeg skriver med glede på StealthSettings.com siden 2006. Jeg har bred erfaring med operativsystemer: macOS, Windows og Linux, samt programmeringsspråk og bloggplattformer (WordPress) og for nettbutikker (WooCommerce, Magento, PrestaShop).

Hvordan » Linux » Kompiler på nytt OpenSSL 1.1 og NGINX 1.25 for TLS 1.3 (CentOS 7)
Legg igjen en kommentar