Ebből az oktatóanyagból megtudhatja, hogyan lehetővé TLSv1.3 NGINX rendszeren. Mit jelent TLSv 1.3, mit segít és miért szükséged van a webszerveren mint TLS aktiválható. Menedzsment rendszerrel rendelkező szerverekhez VestaCP (CentOS vagy Ubuntu) egy kicsit nehezebb aktiválni TLS 1.3 mint egy cPanel szerveren, de nem lehetetlen.
Tartalom
Miért jobb TLS 1.3 mint TLS 1.2?
TLS (Transport Layer Security) egy kriptográfiai protokoll amely biztosítja kapcsolat biztonsága a számítógép és egy olyan hálózat között, amelynek része. TLS olyan alkalmazásokban használják, mint: email, Üzenetkezelés, hang- és videohívások (VoIP), de különösen a HTTPS. Biztonságos kommunikáció biztosítása a felhasználó számítógépe vagy okostelefonja és az elért oldal webszervere között.
TLS 1.3 kínál a nagyobb sebesség kliens – szerver és a Továbbá a biztonsági egyes algoritmusok kiiktatásával. A különbségek között TLSv1.2 és TLSv1.3.
Biztonsági előírások HTTPS, SSL (Secure Sockets Layer) Más cikkekben is mondtam:
- A tanúsítvány telepítése SSL (HTTPS Connection) cPanel nélküli NGINX szerveren tárolt webhelyhez vagy VestaCP
- újrafordítani OpenSSL 1.1 és NGINX 1.25 for TLS 1.3 (CentOS 7)
- Blog vagy webhely áthelyezése WordPress HTTP-től kezdve HTTPS (Nginx)
- Törölje a régi domaineket Certbot certificates (Titkosítsuk a tanúsítványt)
Hogyan aktiválható a TLS 1.3 az NGINX-en? Szerver VestaCP kezeléssel / CentOS
Mielőtt látná, hogyan aktiválja TLSv1.3 NGINX rendszeren, figyelembe kell vennie néhány minimális követelményt TLS 1.3.
- NGINX 1.13.x vagy újabb
- Tanusítvány TLS érvényes
- Aktív tartománynév megfelelően konfigurált DNS-sel – legyen elérhető az interneten
- Tanusítvány TLS / SSL érvényes. Az is lehet Let’s Encrypt.
Pe VestaCP régen telepítve, csak a protokoll áll rendelkezésünkre TLS 1.2. Sok oktatóanyagban láttam, hogy elég, mint amilyen nginx.conf
adjuk hozzá a következő sort kb TLS 1.3 aktiválandó:
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;
Hamisítvány. Ha szerver CentOS vezetéssel VestaCP, Az NGINX-et még nem fordították le a minimális verzióval OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3;
ban ben nginx.conf
.. egyáltalán nem segít.
[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
Tehát a fenti példában az Nginx 1.22.0 kompatibilis verziója TLS 1.3, de a könyvtár nem segít nekünk OpenSSL 1.0.2k-fips.
Aktiválni TLSv1.3 az Nginx rendszeren, először telepítenie kell a gyermekkönyvtárakat és a fejlesztői csomagokat. Development Tools. Befut CentOS 7 parancssor:
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. Telepítse a legújabb verziót OpenSSL
Jelenleg a legújabb verzió OpenSSL 1.1.1p, de amennyire én észrevettem van már és OpenSSL 3. A forrásokat itt találja 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
Nagyon fontos futni make test
a könyvtár telepítése előtt. Ha a teszt hibás, ne futtassa make install
amíg a hibákat ki nem javítják.
A következő lépésben biztonsági másolatot készítünk az aktuális bináris fájlról openssl
és hozzátesszük symlink
az újhoz.
mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
-ban /usr/local/openssl/bin
végrehajtani ldd
a függőségek ellenőrzésére openssl. Esetleg a verzióját is ellenőrizhetjük openssl. Parancs 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
Jelenleg a legújabb verzió van telepítve OpenSSL amely elviseli TLSv1.3. Ellenőrizhetjük a verziókat TLS / SSL könyvesboltok támogatják OpenSSL megrendelésre:
[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]#
Ez nem jelenti azt, hogy a webhelyeket a menedzser segítségével tárolják VestaCP azonnal meglesznek TLS 1.3.
Bár telepítettük OpenSSL 1.1.1p, Az Nginx a régi verzióval van fordítva 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. Fordítsa újra az Nginxet a rendszerhez VestaCP
Ebben a lépésben újra kell fordítanunk OpenSSL az Nginx már telepített verziója a rendszeren CentOS / VestaCP. Ahogy fentebb is mondtam, az én esetemben kb nginx/1.22.0. Mivel olyan webszerverről beszélünk, amelyik rendelkezik VestaCP az adminisztrációs rendszerben, mielőtt újrafordítani kezdenénk, érdemes biztonsági másolatot készíteni az nginx konfigurációs fájljairól.
Biztonsági mentés az Nginx áramról a rendszeren VestaCP
Archiválja és tartsa valahol a szerveren a könyvtárakat "/etc/nginx
"és"/usr/local/vesta/nginx
".
FUSS nginx -V
és mentse a meglévő modulokat egy fájlba.
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'
Az Nginx újrafordítása frissítéshez OpenSSL / CentOS 7
Ismétlem. Ha van VestaCP, töltse le az Nginx már telepített verzióját. Az összes olyan archívumot megtalálja, amelyen az Nginx verziók vannak 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
Újrafordítjuk az nginx modulokat:
./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
Az Nginx most már telepítve van, és a legújabb verziójával lefordítva OpenSSL képes ellenállni 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
*ha az nginx már telepítve volt a szerveren, akkor el kell távolítania. A fordítás nem működik nginx frissítéskor.
Hogyan aktiválható a TLSv1.3 a VestaCP-ben lévő domainekre?
A fájlban /etc/nginx/nginx.conf
a következő sorokkal egészítjük ki:
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';
Domain szinten változtattam valamit a sablonokon VestaCP és a HTTP/2 engedélyezéséhez. Tehát amikor új domaint (example.com) adunk hozzá a Let's Encrypt engedélyezésével, a következő konfigurációs fájlom van a 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';
Az nginx újraindítása előtt érdemes először tesztelni a konfigurációját.
[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
Remélem, hasznosnak találja ezt az oktatóanyagot, és ha valami elakad, hagyja meg a probléma részleteit a megjegyzésekben.