Dalam tutorial ini Anda akan belajar caranya mengaktifkan TLSv1.3 di NGINX. Apa artinya TLSv 1.3, apa itu membantu dan mengapa Anda membutuhkan di server web sebagai TLS dapat diaktifkan. Untuk server dengan sistem manajemen VestaCP (CentOS atau Ubuntu) sedikit lebih sulit mengaktifkan TLS 1.3 daripada di server cPanel, tapi bukan tidak mungkin.
Cuprin
Mengapa lebih baik? TLS 1.3 dari TLS 1.2?
TLS (Transport Layer Security) adalah protokol kriptografi yang memastikan keamanan koneksi antara komputer dan jaringan yang menjadi bagiannya. TLS itu digunakan dalam aplikasi seperti: email, messaging, panggilan suara dan video (VoIP), tetapi terutama pada HTTPS. Memastikan komunikasi yang aman antara komputer atau smartphone pengguna dan server web dari halaman yang diakses.
TLS 1.3 menawarkan a kecepatan lebih tinggi menghubungkan klien - server dan a keamanan apalagi dengan menghilangkan beberapa algoritma. Perbedaan antara TLSv1.2 dan TLSv1.3.
tentang HTTPS, SSL (Secure Sockets Layer) Saya juga mengatakan di artikel lain:
- Cara menginstal sertifikat SSL (HTTPS Koneksi) untuk situs web yang dihosting di server NGINX tanpa cPanel atau VestaCP
- Mengkompilasi ulang OpenSSL 1.1 & NGINX 1.25 untuk TLS 1.3 (CentOS 7)
- Cara memindahkan blog atau website WordPress dari HTTP aktif HTTPS (Nginx)
- Hapus domain lama Certbot certificates (Ayo Enkripsi Sertifikat)
Bagaimana mengaktifkan TLS 1.3 di NGINX? Server dengan pengelolaan VestaCP / CentOS
Sebelum Anda melihat bagaimana Anda mengaktifkan TLSv1.3 di NGINX, Anda perlu mempertimbangkan beberapa persyaratan minimum untuk TLS 1.3.
- NGINX 1.13.x atau lebih baru
- Sebuah sertifikat TLS sah
- Nama domain aktif dengan DNS yang dikonfigurasi dengan benar – dapat diakses di Internet
- Sebuah sertifikat TLS / SSL sah. Bisa juga Let’s Encrypt.
Pe VestaCP diinstal lama, kami hanya memiliki protokol yang tersedia TLS 1.2. Saya telah melihat di banyak tutorial bahwa itu sudah cukup nginx.conf
mari tambahkan baris berikut untuk ca TLS 1.3 untuk diaktifkan:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
root /var/www/example.com/public;
ssl_certificate /path/to/your/certificate.crt;
ssl_certificate_key /path/to/your/private.key;
ssl_protocols TLSv1.2 TLSv1.3;
Palsu. Jika Server CentOS dengan manajemen VestaCP, NGINX belum dikompilasi dengan versi minimal OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3;
di nginx.conf
.. itu tidak membantu sama sekali.
[root@north ~]# nginx -V
nginx version: nginx/1.22.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
Jadi pada contoh di atas Nginx 1.22.0 adalah versi yang kompatibel TLS 1.3, tetapi perpustakaan tidak membantu kami OpenSSL 1.0.2k-fips.
Mengaktifkan TLSv1.3 di Nginx, Anda perlu menginstal pustaka anak dan paket pengembangan terlebih dahulu. Development Tools. Ini berjalan masuk CentOS 7 baris perintah:
yum install gcc gcc-c++ pcre-devel zlib-devel make unzip gd-devel perl-ExtUtils-Embed libxslt-devel openssl-devel perl-Test-Simple
yum groupinstall 'Development Tools'
1. Instal versi terbaru OpenSSL
Saat ini versi terbaru adalah OpenSSL 1.1.1p, tapi sejauh yang saya perhatikan sudah ada dan OpenSSL 3. Anda dapat menemukan sumbernya di OpenSSL. Org.
cd /usr/src
wget https://www.openssl.org/source/openssl-1.1.1p.tar.gz
tar xvf openssl-1.1.1p.tar.gz
mv openssl-1.1.1p openssl
cd openssl
./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl --libdir=/lib64 shared zlib-dynamic
make -j4
make test
make install
Sangat penting untuk dijalankan make test
sebelum menginstal perpustakaan. Jika tes memiliki kesalahan, jangan dijalankan make install
sampai kesalahan diperbaiki.
Pada langkah selanjutnya kami membuat cadangan file biner saat ini openssl
dan kami menambahkan symlink
ke yang baru.
mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
di /usr/local/openssl/bin
menjalankan ldd
untuk memeriksa dependensi openssl. Kami mungkin juga dapat memeriksa versi openssl. Memerintah openssl version
.
[root@north bin]# ldd openssl
linux-vdso.so.1 => (0x00007ffd20bd7000)
libssl.so.1.1 => /lib64/libssl.so.1.1 (0x00007fab09b62000)
libcrypto.so.1.1 => /lib64/libcrypto.so.1.1 (0x00007fab09675000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fab09471000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fab09255000)
libc.so.6 => /lib64/libc.so.6 (0x00007fab08e87000)
/lib64/ld-linux-x86-64.so.2 (0x00007fab09df5000)
[root@north bin]# openssl version
OpenSSL 1.1.1p 21 Jun 2022
Saat ini kami telah menginstal versi terbaru OpenSSL yang bertahan TLSv1.3. Kami dapat memeriksa versinya TLS / SSL didukung oleh toko buku OpenSSL berdasarkan pesanan:
[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]#
Ini tidak berarti bahwa situs web dihosting dengan bantuan pengelola VestaCP mereka akan segera TLS 1.3.
Meskipun kami telah menginstal OpenSSL 1.1.1p, Nginx dikompilasi dengan versi lama OpenSSL 1.0.2k-fips.
[root@north bin]# nginx -V
nginx version: nginx/1.22.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
configure arguments: --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-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
[root@north bin]# openssl version
OpenSSL 1.1.1p 21 Jun 2022
[root@north bin]#
2. Kompilasi ulang Nginx untuk sistem VestaCP
Pada langkah ini kita perlu mengkompilasi ulang untuk OpenSSL versi Nginx sudah terpasang pada sistem CentOS / VestaCP. Seperti yang saya katakan di atas, dalam kasus saya ini tentang nginx/1.22.0. Karena kita berbicara tentang server web yang memiliki VestaCP sistem administrasi, sebelum kita mulai mengkompilasi ulang ada baiknya membuat cadangan file konfigurasi nginx.
Cadangkan Nginx saat ini di sistem VestaCP
Arsipkan dan simpan direktori di suatu tempat di server "/etc/nginx
"dan"/usr/local/vesta/nginx
".
BERLARI nginx -V
dan simpan modul yang ada ke file.
configure arguments: --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-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'

Cara mengkompilasi ulang Nginx untuk peningkatan OpenSSL / CentOS 7
Saya ulangi. kalau sudah VestaCP, unduh versi Nginx yang sudah Anda instal. Anda dapat menemukan semua arsip dengan versi Nginx aktif nginx.org.
cd /usr/src
wget https://nginx.org/download/nginx-1.22.0.tar.gz
tar xvf nginx-1.22.0.tar.gz
cd nginx-1.22.0
Kami mengkompilasi ulang modul nginx:
./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=/usr/src/openssl \
--with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong \
--param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' \
--with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
make -j4
make install
Kami sekarang telah menginstal dan mengompilasi Nginx dengan versi terbaru OpenSSL mampu bertahan TLSv1.3.
[root@north bin]# nginx -V
nginx version: nginx/1.22.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
built with OpenSSL 1.1.1p 21 Jun 2022
TLS SNI support enabled
*jika nginx sudah diinstal di server, Anda harus menghapus instalannya. Kompilasi tidak berfungsi pada pemutakhiran nginx.
Bagaimana mengaktifkan TLSv1.3 untuk domain di VestaCP?
Dalam file /etc/nginx/nginx.conf
kita tambahkan baris berikut:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
Di tingkat domain, saya mengubah sesuatu di template VestaCP dan untuk mengaktifkan HTTP/2. Jadi saat menambahkan domain baru (example.com) dengan Let's Encrypt diaktifkan, saya memiliki file konfigurasi berikut untuk SSL:
cat /home/vestacpuser/conf/web/example.com.nginx.ssl.conf
server {
listen IP.IP.IP.IP:443 ssl http2;
server_name example.com www.example.com;
root /home/vestacpuser/web/example.com/public_html;
index index.php index.html index.htm;
access_log /var/log/nginx/domains/example.com.log combined;
access_log /var/log/nginx/domains/example.com.bytes bytes;
error_log /var/log/nginx/domains/example.com.error.log error;
ssl_certificate /home/vestacpuser/conf/web/ssl.example.com.pem;
ssl_certificate_key /home/vestacpuser/conf/web/ssl.example.com.key;
....
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256';
Sebelum merestart nginx, ada baiknya untuk menguji konfigurasinya terlebih dahulu.
[root@north web]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@north web]# systemctl restart nginx
Saya harap Anda menemukan tutorial ini bermanfaat dan jika Anda terjebak dengan sesuatu, tinggalkan detail masalahnya di komentar.