Cara mengaktifkan TLSv1.3 di NGINX. VestaCP pe CentOS dengan TerbukaSSL

Dalam tutorial ini kita akan melihat caranya mengaktifkan TLSv1.3 di NGINX, mari kita pahami sedikit apa artinya ini TLS 1.3, apa yang membantu? dan mengapa kita butuh di server web sebagai TLS untuk diaktifkan. Mari kita pahami alasannya di a server dengan VestaCP (CentOS atau Ubuntu) sedikit lebih sulit mengaktifkan TLS 1.3 daripada di server cPanel. Atau di server yang tidak memiliki perangkat lunak manajemen hosting.

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 miliknya. TLS digunakan dalam aplikasi seperti: e-mail, messaging, panggilan suara dan video (VoIP), tetapi terutama di HTTPS. Memastikan komunikasi yang aman antara komputer atau smartphone pengguna dan server web dari halaman yang diakses.

TLSv1.3 penawaran kecepatan yang lebih tinggi klien - koneksi server dan a keamanan apalagi dengan menghilangkan beberapa algoritma. Perbedaan antara TLSv1.2 s TLSv1.3.

tentang HTTPS, SSL (Secure Sockets Layer) Saya juga mengatakan di artikel lain:

Cara mengaktifkan TLSv1.3 di NGINX. Server dengan VestaCP diinstal pada CentOS

Sebelum kita melihat bagaimana kita mengaktifkan TLSv1.3 di NGINX, kita harus memiliki persyaratan perangkat lunak dan perpustakaan minimum.

  1. NGINX 1.13.x atau lebih baru
  2. Sebuah sertifikat TLS sah
  3. Nama domain aktif dengan DNS yang dikonfigurasi dengan benar - agar dapat diakses di internet
  4. Sebuah sertifikat TLS / SSL sah. Bisa juga Let's Encrypt.

Pada suatu VestaCP diinstal sejak lama, kami hanya memiliki protokol TLS 1.2. Saya telah melihat di banyak tutorial bahwa itu sudah cukup seperti di nginx.conf mari tambahkan baris berikut karena 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 cu VestaCP, NGINX belum dikompilasi dengan versi minimum OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; in nginx.conf itu tidak membantu kita 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

Oleh karena itu, pada contoh di atas Nginx 1.22.0 kompatibel dengan TLSv1.3, tetapi perpustakaan Terbuka tidak membantu kamiSSL 1.0.2k-fips.

Mengaktifkan TLSv1.3 di Nginx, pertama-tama kita harus menginstal perpustakaan anak-anak dan paket pengembangan. Alat Pengembangan. Kami berlari 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 Buka terbaruSSL

Saat ini versi terbaru adalah OpenSSL 1.1.1p, tapi dari apa yang saya perhatikan sudah ada OpenSSL 3. Anda dapat menemukan sumbernya di BukaSSL. 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 kesalahan terjadi selama pengujian, jangan jalankan make install sampai kesalahan diperbaiki.

Pada langkah selanjutnya, kami mencadangkan file biner terbuka saat inissl 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

In /usr/local/openssl/bin menjalankan ldd untuk memeriksa dependensi terbukassl. Kami juga dapat memeriksa versi terbukassl. 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 memiliki versi terbaru dari Open yang diinstalSSL mendukung TLSv1.3. Kami dapat memeriksa versi TLS / SSL didukung oleh perpustakaan TerbukaSSL 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 di VestaCP mereka akan segera TLS 1.3. juga tidak macar Nginx belum dikompilasi untuk versi baru OpenSSL.

Meskipun kami telah menginstal OpenSSL 1.1.1p, Nginx dikompilasi dengan versi Open yang lamaSSL 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 di VestaCP

Pada langkah ini kita harus mengkompilasi ulang untuk OpenSSL versi Nginx sudah terinstal pe CentOS / VestaCP. Seperti yang saya katakan di atas, dalam kasus saya ini tentang nginx / 1.22.0. Menjadi tentang server web yang memiliki VestaCP sebagai sistem dari adminSebelum memulai kompilasi ulang, ada baiknya untuk membuat cadangan file konfigurasi nginx.

Cadangan Nginx saat ini aktif VestaCP

Arsipkan dan simpan direktori di suatu tempat di server "/etc/nginx"Dan"/usr/local/vesta/nginx".

dieksekusi 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 mengaktifkan TLSv1.3 di NGINX
Cara mengaktifkan TLSv1.3 di NGINX

Kami mengunduh dan mengkompilasi Nginx

Ulang. Jika Anda memiliki VestaCP, unduh versi Nginx yang sudah Anda instal. Semua arsip dengan versi Nginx dapat ditemukan di 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 mengkompilasi Nginx dengan versi Open terbaruSSL 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

Cara mengaktifkan TLSv1.3 untuk domain di VestaCP

Di /etc/nginx/filenginx.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 ketika 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 Anda restartAnda memiliki nginx, ada baiknya sebelum menguji konfigurasinya.

[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 tidak berhasil dalam sesuatu, tinggalkan detail masalahnya di komentar.

Stealth

Bergairah tentang teknologi, saya suka menguji dan menulis tutorial tentang sistem operasi macOS, Linux, Windows, tentang WordPress, WooCommerce dan konfigurasikan server web LEMP (Linux, NGINX, MySQL dan PHP). saya menulis di StealthSettings.com sejak 2006, dan beberapa tahun kemudian saya mulai menulis di iHowTo.Tips tutorial dan berita tentang perangkat di ekosistem Apple: iPhone, iPad, Apple Tonton, HomePod, iMac, MacBook, AirPods, dan aksesori.

Tinggalkan Balasan

Email mu address tidak akan dipublikasikan.

Artikel terkait

/ / /
Tags: / / / / / /
Kembali ke atas tombol