Mengkompilasi ulang OpenSSL 1.1 & NGINX 1.25 untuk TLS 1.3 (CentOS 7)

Mengkompilasi ulang OpenSSL 1.1 & NGINX 1.25 untuk TLS 1.3 (CentOS 7), mengikuti skenario di mana Anda telah menginstal di server o versi yang lebih tua openssl terkait dengan layanan nginx.

Lebih khusus lagi, untuk dapat mengaktifkan OpenSSL 1.1.1t untuk layanan NGINX, yang berjalan dengan versi yang lebih lama. 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

Artinya ada dua versi yang berbeda dari OpenSSL. Versi yang diinstal pada sistem dengan “yum"(1.0.2k-fips) dan versi OpenSSL diinstal oleh kompilasi manual (openssl 1.1.1t).

Secara klasik, paling merekomendasikan menginstal ulang 'OpenSSL' di tingkat server. Ini akan memerlukan eksekusi perintah: yum remove openssl. Tapi ada masalah besar di sini. Dengan penghapusan versi lama OpenSSL, Anda mungkin juga perlu mencopot pemasangan beberapa aplikasi yang bergantung. Seperti: nginx, MariaDB-server, cerbotDitambah lebih banyak.

Solusi yang lebih sederhana adalah mengkompilasi ulang openssl 1.1 & nginx 1.25 untuk TLS 1.3.

Kompilasi ulang tutorial OpenSSL 1.1 & NGINX 1.25 untuk TLS 1.3 (CentOS 7)

Dalam contoh saya, kompilasi ulang adalah untuk nginx/1.25.0 & OpenSSL 1.1.1h menggunakan toko buku OpenSSL 1.1.1t.

Kompilasi ulang NGINX.

1. Buat file: nginx-with-tls13-compile.sh

sudo nano nginx-with-tls13-compile.sh

tempat Anda menambahkan skrip:

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

Simpan file baru.

2. Buat file baru yang dapat dieksekusi:

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

Menulis kembali nginx.service

3. Buat cadangan dari nginx.service.

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

(Anda dapat memilih jalur yang Anda inginkan nginx_service.txt)

4. Buat file untuk layanan tersebut nginx: nginx.service

sudo nano nginx.service

5. Di file file baru nginx.service tambahkan baris:

##  /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. Salin file ke 'daemon".

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

7. Setelah file disalin, perbarui izin file menggunakan perintah:

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

8. Muat ulang konfigurasi systemd untuk memperhitungkan perubahan menggunakan perintah:

sudo systemctl daemon-reload

9. Mulai ulang ngnix.

sudo systemctl restart nginx

Mengkompilasi ulang OpenSSL / NGINX untuk TLS 1.3

10. Di folder yang sama tempat Anda menyimpan file nginx-with-tls13-compile.sh şi nginx.service, buat file baru: openssl-1.1-compile.sh.

sudo nano openssl-1.1-compile.sh

Tambahkan skrip:

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

Mengganti "OPENSSL=openssl-1.1.1h.tar.gz” dengan versi yang ingin Anda instal dan kompilasi ulang dengan NGINX.

11. Jadikan skrip dapat dieksekusi:

chmod +x openssl-1.1-compile.sh

12. Jalankan perintah:

./openssl-1.1-compile.sh

Tunggu proses kompilasi ulang selesai OpenSSL & NGINX.

Mengkompilasi ulang OpenSSL 1.1 & NGINX 1.25 untuk TLS 1.3 (CentOS 7)
OpenSSL & NGINX

Jika kami dapat membantu Anda atau ada tambahan yang akan dibuat, bagian komentar terbuka.

Sebagai pecinta teknologi, saya dengan senang hati menulis di StealthSettings.com sejak tahun 2006. Saya memiliki pengalaman yang kaya dalam sistem operasi: macOS, Windows, dan Linux, serta dalam bahasa pemrograman dan platform blogging (WordPress) dan toko online (WooCommerce, Magento, PrestaShop).

How to » Linux » Mengkompilasi ulang OpenSSL 1.1 & NGINX 1.25 untuk TLS 1.3 (CentOS 7)
Tinggalkan Komentar