Recompilare openssl 1.1 & נינגין 1.25 עבור TLS 1.3 (CentOS 7)

Recompilare OpenSSL 1.1 & NGINX 1.25 עֲבוּר TLS 1.3 ((CentOS 7), urmând scenariul în care ai deja instalat pe server o versiune mai veche openssl asociată serviciului nginx.

Mai exact, să poți activa OpenSSL 1.1.1t pentru serviciul NGINX, care rulează cu o versiune mai veche. 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

Asta înseamnă că pe server se află doua versiuni diferite ale OpenSSL. O versiune instalată pe sistem prinyum” ((1.0.2k-fips) și o versiune OpenSSL instalată prin compilare manuală ((openssl 1.1.1t).

În mod clasic, majoritatea recomandă reinstalareaOpenSSLla nivel de serever. Asta ar presupune executarea comenzii: yum remove openssl. Numai că aici există o mare problemă. Odată cu dezinstalarea vechii versiuni OpenSSL, este posibil să fie nevoie și de dezinstalarea unor aplicații dependente. Cum ar fi: nginx, MariaDB-server, cerbot, plus multe altele.

O soluție mai simplă este să recompilați openssl 1.1 & nginx 1.25 עֲבוּר TLS 1.3ו

Tutorial recompilare OpenSSL 1.1 & NGINX 1.25 עֲבוּר TLS 1.3 (CentOS 7)

În exemplul meu, recompilarea este pentru nginx/1.25.0 & OpenSSL 1.1.1h folosind librăriile OpenSSL 1.1.1tו

Recompilare NGINX.

1. Creezi fișierul: nginx-with-tls13-compile.sh

sudo nano nginx-with-tls13-compile.sh

în care adaugi scriptul:

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

Salvezi noul fișier.

2. Faci noul fișier executabil:

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

Rescriere nginx.service

3. Faci un backup al nginx.serviceו

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

(poți alege orice path dorești pentru nginx_service.txt)

4. Creezi fișierul pentru serviciul nginx: nginx.service

sudo nano nginx.service

5. In fișierul noul fișier nginx.service adaugi liniile:

##  /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. Copiezi fișierul îndaemon“ו

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

7. După ce fișierul a fost copiat, actualizați permisiunile fișierului folosind comanda:

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

8. Reload configurarea systemd pentru a lua în considerare modificările folosind comanda:

sudo systemctl daemon-reload

9. Restartați ngnixו

sudo systemctl restart nginx

Recompilare OpenSSL / NGINX עֲבוּר TLS 1.3

10. În acelși folder în care ai fișierele nginx-with-tls13-compile.sh וכן nginx.service, creezi un nou fișier: openssl-1.1-compile.shו

sudo nano openssl-1.1-compile.sh

Adaugi scriptul:

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

ÎnlocuitiOPENSSL=openssl-1.1.1h.tar.gzcu versiunea pe care doriți să o instalați și recompilați cu NGINX.

11. Faceți scriptul executabil:

chmod +x openssl-1.1-compile.sh

12. Executați comanda:

./openssl-1.1-compile.sh

Așteptați până ce se finalizează procesul de recompilare OpenSSL & NGINXו

Recompilare openssl 1.1 & נינגין 1.25 עבור TLS 1.3 (CentOS 7)
OpenSSL & Nginx

Dacă vă putem ajuta sau sunt de făcut completări, rubrica de comentarii este deschisă.

נלהב מהטכנולוגיה, אני כותב בהנאה באתר stealthsetts.com החל משנת 2006. יש לי חוויה עשירה במערכות הפעלה: MacOS, Windows ו- Linux, אך גם בשפות תכנות ופלטפורמות בלוגים (WordPress) ולחנויות מקוונות (Woocommerce, Magento, Presashop).

Home המקור שלך להדרכות IT, טיפים ושל חדשות שימושיות. Recompilare openssl 1.1 & נינגין 1.25 עבור TLS 1.3 (CentOS 7)
השאירו תגובה