ανασύνταξη 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.
Εάν μπορούμε να σας βοηθήσουμε ή υπάρχουν προσθήκες που πρέπει να γίνουν, η ενότητα σχολίων είναι ανοιχτή.