קומפילציה מחדש OpenSSL 1.1 ו-NGINX 1.25 עבור TLS 1.3 (CentOS 7)

קומפילציה מחדש OpenSSL 1.1 & NGINX 1.25 עבור TLS 1.3 (CentOS 7), בעקבות התרחיש שבו כבר התקנת בשרת o גרסה ישנה יותר openssl הקשורים לשירות nginx.

ליתר דיוק, כדי להיות מסוגל להפעיל OpenSSL 1.1.1t עבור השירות NGINX, שפועל עם גרסה ישנה יותר. 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

זה אומר שיש שתי גרסאות שונות של OpenSSL. גרסה המותקנת במערכת על ידי "yum"(1.0.2k-fips) וגרסה OpenSSL מותקן על ידי קומפילציה ידנית (openssl 1.1.1t).

באופן קלאסי, הכי מומלץ להתקין מחדש את 'OpenSSL' ברמת השרת. זה כרוך בביצוע הפקודה: yum remove openssl. אבל יש כאן בעיה גדולה. עם הסרת ההתקנה של הגרסה הישנה OpenSSL, ייתכן שיהיה עליך להסיר גם כמה אפליקציות תלויות. כמו: nginx, MariaDB-server, cerbotועוד רבים נוספים.

פתרון פשוט יותר הוא קומפילציה מחדש openssl 1.1 & nginx 1.25 עבור TLS 1.3.

ערכת הידור מחדש OpenSSL 1.1 & NGINX 1.25 עבור TLS 1.3 (CentOS 7)

בדוגמה שלי, הקומפילציה מחדש מיועדת nginx/1.25.0 & OpenSSL 1.1.1h באמצעות חנויות ספרים OpenSSL 1.1.1t.

הידור מחדש של NGINX.

1. צור את הקובץ: nginx-with-tls13-compile.sh

sudo nano nginx-with-tls13-compile.sh

איפה אתה מוסיף את הסקריפט:

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

שמור את הקובץ החדש.

2. צור את קובץ ההפעלה החדש:

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

לִכתוֹב מִחָדָשׁ nginx.service

3. בצע גיבוי של nginx.service.

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

(אתה יכול לבחור כל נתיב שתרצה nginx_service.txt)

4. צור את הקובץ עבור השירות nginx: nginx.service

sudo nano nginx.service

5. בקובץ הקובץ החדש nginx.service הוסף את השורות:

##  /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. העתק את הקובץ אל 'daemon

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

7. לאחר העתקת הקובץ, עדכן את הרשאות הקובץ באמצעות הפקודה:

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

8. טען מחדש את התצורה systemd כדי לקחת את השינויים בחשבון באמצעות הפקודה:

sudo systemctl daemon-reload

9. הפעל מחדש ngnix.

sudo systemctl restart nginx

קומפילציה מחדש OpenSSL / NGINX עבור TLS 1.3

10. באותה תיקיה שבה יש לך את הקבצים nginx-with-tls13-compile.sh סי nginx.service, צור קובץ חדש: openssl-1.1-compile.sh.

sudo nano openssl-1.1-compile.sh

הוסף את הסקריפט:

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

החלף "OPENSSL=openssl-1.1.1h.tar.gz" עם הגרסה שברצונך להתקין ולהרכיב מחדש עם NGINX.

11. הפוך את הסקריפט לניתן להפעלה:

chmod +x openssl-1.1-compile.sh

12. הפעל את הפקודה:

./openssl-1.1-compile.sh

המתן עד שתהליך ההידור מחדש יסתיים OpenSSL & NGINX.

קומפילציה מחדש OpenSSL 1.1 ו-NGINX 1.25 עבור TLS 1.3 (CentOS 7)
OpenSSL & NGINX

אם נוכל לעזור לך או שיש להוסיף תוספות, מדור התגובות פתוח.

נלהבת מטכנולוגיה, אני כותבת בהנאה StealthSettings.com מאז 2006. תוכלו למצוא מאמרים על מערכות הפעלה שנכתבו על ידי Windows, Linux, macOS, אלא גם על פלטפורמות אינטרנט כגון WordPress סי WooCommerce

איך » Linux » קומפילציה מחדש OpenSSL 1.1 ו-NGINX 1.25 עבור TLS 1.3 (CentOS 7)

השאירו תגובה