W tym samouczku dowiesz się, jak to zrobić activezi TLSv1.3 lub NGINX. Co to znaczy TLSv 1.3W co to pomaga i dlaczego potrzebujesz na serwerze WWW jako Można włączyć TLS. Dla serwerów z systemem zarządzania Vestacp (CentOS lub Ubuntu) jest nieco trudniejsze aby aktywować TLS 1.3 niż na serwerze cPanel, ale nie jest to niemożliwe.
treść
Dlaczego TLS 1.3 jest lepszy niż TLS 1.2?
TLS (Transport Layer Security) To jest protokół kryptograficzny co zapewnia bezpieczeństwo połączenia pomiędzy komputerem a siecią, której jest częścią. TLS znajduje zastosowanie w takich zastosowaniach jak: e-mailW posłaniecW połączenia głosowe i wideo (VoIP), ale szczególnie o godz HTTPS. Zapewnienie bezpiecznej komunikacji pomiędzy komputerem lub smartfonem użytkownika a serwerem WWW odwiedzanej strony.
TLS 1.3 oferuje A większa prędkość logowanie klienta – serwer i A większe bezpieczeństwo poprzez wyeliminowanie niektórych algorytmów. Różnice między TLSV1.2 i TLSV1.3.
O HTTPSW SSL (Secure Sockets Layer) Powiedziałem także w innych artykułach:
- Jak instalujemy certyfikat SSL (HTTPS Connection) dla witryny hostacie na serwerze Nginx bez CPANEL lub VestACP
- Recompilare OpenSSL 1.1 & Ningin 1,25 dla TLS 1.3 (Centos 7)
- Jak przenieść blog lub witrynę WordPress z HTTP na HTTPS (Nginx)
- Usuń Certyfikaty Certbot Old Domeins (Let's Encrypt Certificate)
Jak włączyć TLS 1.3 w NGINX. Serwer z zarządzaniem VestaCP/CentOS
Zanim przyjrzymy się, jak włączyć TLSv1.3 w NGINX, należy wziąć pod uwagę pewne minimalne wymagania TLS 1.3.
- NGINX 1.13.x lub nowszy
- Ważny certyfikat TLS
- Aktywna nazwa domeny z poprawnie skonfigurowanym DNS – być dostępne w Internecie
- Ważny certyfikat TLS/SSL. Może też tak być Let’s Encrypt.
Pe VestaCP instalat în urmă cu mult timp, avem la dispozitie doar protocolul TLS 1.2. Widziałem w wielu tutorialach, że wystarczy jak w nginx.conf dodaj następujący wiersz, aby włączyć TLS 1.3:
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;
FAŁSZ. Jeśli na serwerze Zarządzanie CentOS cu VestacpW NGINX nie został skompilowany z wersją minimalną OpenSSL 1.1.1.1W ssl_protocols TLSv1.2 TLSv1.3; W nginx.conf .. to wcale nie pomaga.
[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
Zatem w powyższym przykładzie Nginx 1.22.0 jest kompatybilny z TLS w wersji 1.3, ale nasza biblioteka nie pomaga OpenSSL 1.0.2k-fips.
Aby włączyć TLSv1.3 w Nginx, musisz najpierw zainstalować biblioteki podrzędne i pakiety programistyczne. Development Tools. Uruchom w CentOS 7 wiersze poleceń:
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. Zainstaluj najnowszą wersję OpenSSL
W tej chwili jest najnowsza wersja OpenSSL 1.1.1p, ale z tego co widziałem, był już OpenSSL 3. Źródła znajdziesz na 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
Bardzo ważne, żeby biegać make test przed zainstalowaniem biblioteki. Jeśli test zawiera błędy, nie uruchamiaj go make install dopóki błędy nie zostaną poprawione.
W kolejnym kroku wykonujemy kopię zapasową aktualnego pliku binarnego openssl i dodajemy symlink do nowego.
mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
W /usr/local/openssl/bin wykonać ldd aby sprawdzić zależności openssl. Możemy ewentualnie sprawdzić wersję openssl. Rozkaz 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
Aktualnie mamy zainstalowaną najnowszą wersję OpenSSL która trwa TLSv1.3. Możemy sprawdzić wersje TLS / SSL wspierane przez księgarnie OpenSSL według zamówienia:
[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]#
Nie oznacza to, że strony hostowane za pomocą menadżera VestaCP będą mieli natychmiast TLS 1.3.
Chociaż zainstalowaliśmy OpenSSL 1.1.1p, Nginx jest skompilowany ze starą wersją 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. Skompiluj ponownie Nginx dla systemu VestaCP
W tym kroku musimy ponownie skompilować plik for OpenSSL wersja Nginx jest już zainstalowana w systemie CentOS / VestaCP. Jak pisałem wyżej, w moim przypadku chodzi o to nginx/1.22.0. Ponieważ mówimy o serwerze internetowym, który ma VestaCP systemie administracyjnym, zanim zaczniemy rekompilować, dobrze jest wykonać kopię zapasową plików konfiguracyjnych nginx.
Utwórz kopię zapasową bieżącego Nginx w systemie VestaCP
Archiwizuj i przechowuj katalogi gdzieś na serwerze “/etc/nginx” I “/usr/local/vesta/nginx“.
URUCHOMIĆ nginx -V i zapisz istniejące moduły do pliku.
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'

Jak przekompilować Nginx dla aktualizacji OpenSSL/CentOS 7
Powtarzam. Jeśli masz Vestacp, pobierz wersję Nginx, którą już zainstalowałeś. Możesz znaleźć wszystkie archiwa z włączonymi wersjami Nginx 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
Rekompilujemy moduły 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
Mamy teraz zainstalowany i skompilowany Nginx z najnowszą wersją OpenSSL w stanie obsługiwać 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
*jeśli nginx był już zainstalowany na serwerze, konieczne będzie jego odinstalowanie. Kompilacja nie działa przy aktualizacji Nginx.
Jak włączyć TLSv1.3 dla domen w VestaCP
W pliku /etc/nginx/nginx.conf dodajemy następujące linie:
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';
Na poziomie domeny zmieniłem coś w szablonach VestaCP i włączyć HTTP/2. Zatem dodając nową domenę (example.com) z włączoną funkcją Let's Encrypt, mam następujący plik konfiguracyjny dla protokołu 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';
Przed ponownym uruchomieniem Nginxa warto najpierw przetestować jego konfigurację.
[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
Mam nadzieję, że ten samouczek okaże się pomocny, a jeśli utkniesz z czymś, zostaw szczegóły problemu w komentarzach.