כיצד להפעיל TLSv1.3 על NGINX. VestaCP / CentOS או Ubuntu

במדריך זה תלמד כיצד להפעיל את TLSv1.3 ב-NGINX. מה זה אומר TLSv 1.3, מה זה עוזר ולמה אתה צריך בשרת האינטרנט as TLS ניתן להפעיל. לשרתים עם מערכת ניהול VestaCP (CentOS או אובונטו) זה קצת יותר קשה להפעיל TLS 1.3 מאשר בשרת cPanel, אבל זה לא בלתי אפשרי.

למה זה יותר טוב TLS 1.3 מאשר TLS 1.2?

TLS (Transport Layer Security) הוא פרוטוקול קריפטוגרפי מה שמבטיח אבטחת חיבור בין המחשב לרשת שהוא חלק ממנה. TLS הוא משמש ביישומים כגון: אמייל, מסרים, שיחות קול ווידאו (VoIP), אבל במיוחד ב HTTPS. הבטחת תקשורת מאובטחת בין המחשב או הסמארטפון של המשתמש לבין שרת האינטרנט של הדף שנכנס אליו.

TLS 1.3 מציע א מהירות גבוהה יותר של חיבור לקוח - שרת וא ביטחון יתר על כן על ידי ביטול כמה אלגוריתמים. ההבדלים בין TLSv1.2 ו TLSv1.3.

על HTTPS, SSL (Secure Sockets Layer) אמרתי גם במאמרים אחרים:

כיצד להפעיל TLS 1.3 על NGINX. שרת עם VestaCP לניהול / CentOS

לפני שתראה איך אתה מפעיל TLSv1.3 ב-NGINX, אתה צריך לשקול כמה דרישות מינימום עבור TLS 1.3.

  1. NGINX 1.13.x ואילך
  2. תעודה TLS תקף
  3. שם דומיין פעיל עם DNS מוגדר כהלכה - היה נגיש באינטרנט
  4. תעודה TLS / SSL תָקֵף. זה גם יכול להיות Let’s Encrypt.

Pe VestaCP מותקן לפני זמן רב, יש לנו רק את הפרוטוקול זמין TLS 1.2. ראיתי בהרבה מדריכים שזה מספיק כמו ב nginx.conf בואו נוסיף את השורה הבאה עבור כ 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;

מְזוּיָף. אם שרת CentOS עם ההנהלה VestaCP, NGINX לא הידור עם הגרסה המינימלית OpenSSL 1.1.1.1, ssl_protocols TLSv1.2 TLSv1.3; בתוך ה nginx.conf .. זה לא עוזר בכלל.

[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

אז בדוגמה שלמעלה Nginx 1.22.0 היא גרסה תואמת TLS 1.3, אבל הספרייה לא עוזרת לנו OpenSSL 1.0.2k-fips.

להפעיל TLSv1.3 ב-Nginx, תחילה עליך להתקין את ספריות הילד וחבילות הפיתוח. Development Tools. זה רץ פנימה CentOS 7 שורות פקודה:

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. התקן את הגרסה העדכנית ביותר OpenSSL

בשלב זה הגרסה האחרונה היא OpenSSL 1.1.1p, אבל עד כמה ששמתי לב יש כבר ו OpenSSL 3. אתה יכול למצוא את המקורות על OpenSSL. אירגונים.

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 

חשוב מאוד לרוץ make test לפני התקנת הספרייה. אם בבדיקה יש שגיאות, אל תפעיל make install עד לתיקון השגיאות.

בשלב הבא נעשה גיבוי של הקובץ הבינארי הנוכחי openssl ואנחנו מוסיפים symlink לחדש.

mv /usr/bin/openssl /usr/bin/openssl-backup
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl

ב /usr/local/openssl/bin לבצע ldd כדי לבדוק תלות openssl. אולי נוכל גם לבדוק את הגרסה של openssl. פקודה 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

כרגע מותקנת הגרסה העדכנית ביותר OpenSSL אשר מחזיק מעמד TLSv1.3. אנחנו יכולים לבדוק את הגרסאות TLS / SSL נתמך על ידי חנויות ספרים OpenSSL לפי הזמנה:

[root@north bin]# openssl ciphers -v | awk '{print $2}' | sort | uniq
SSLv3
TLSv1
TLSv1.2
TLSv1.3
[root@north bin]# 

זה לא אומר שאתרים מתארחים בעזרת המנהל VestaCP יהיה להם מיד TLS 1.3.

למרות שהתקנו OpenSSL 1.1.1p, Nginx מורכב עם הגרסה הישנה 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. הידור מחדש של Nginx עבור המערכת VestaCP

בשלב זה עלינו לבצע קומפילציה מחדש עבור OpenSSL גרסת Nginx כבר מותקנת על המערכת CentOS / VestaCP. כפי שאמרתי למעלה, במקרה שלי זה בערך nginx/1.22.0. מכיוון שאנו מדברים על שרת אינטרנט שיש לו VestaCP מערכת הניהול, לפני שנתחיל להרכיב מחדש כדאי לעשות גיבוי של קבצי התצורה של nginx.

גיבוי Nginx הנוכחי במערכת VestaCP

ארכיון ושמור איפשהו בשרת את הספריות "/etc/nginx"ו-"/usr/local/vesta/nginx

לָרוּץ nginx -V ולשמור מודולים קיימים בקובץ.

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'
איך מפעילים? TLSv1.3 ב-NGINX
כיצד להפעיל TLSv1.3 ב-NGINX

כיצד להרכיב מחדש את Nginx עבור שדרוג OpenSSL / CentOS 7

אני חוזר. אם יש לך VestaCP, הורד את הגרסה של Nginx שכבר התקנת. אתה יכול למצוא את כל הארכיונים עם גרסאות 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

אנו מרכיבים מחדש את מודולי 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

כעת יש לנו את Nginx מותקן והידור עם הגרסה האחרונה של OpenSSL מסוגל לעמוד 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

*אם nginx כבר הותקן בשרת, תצטרך להסיר את התקנתו. קומפילציה לא עובדת על שדרוג nginx.

כיצד להפעיל TLSv1.3 עבור דומיינים ב-VestaCP.

בקובץ /etc/nginx/nginx.conf נוסיף את השורות הבאות:

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';

ברמת הדומיין, שיניתי משהו בתבניות VestaCP וכדי להפעיל HTTP/2. אז כשמוסיפים דומיין חדש (example.com) עם Let's Encrypt מופעל, יש לי את קובץ התצורה הבא עבור 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';

לפני הפעלה מחדש של nginx, כדאי לבדוק תחילה את התצורה שלו.

[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

אני מקווה שתמצא את המדריך הזה מועיל ואם נתקעת עם משהו, השאר את פרטי הבעיה בתגובות.

כחובב טכנולוגיה, אני כותב בשמחה ב- StealthSettings.com מאז 2006. יש לי ניסיון עשיר במערכות הפעלה: macOS, Windows, ו- Linux, וגם בשפות תכנות ופלטפורמות בלוגינג (WordPress) ולסוחרת אלקטרונית (WooCommerce, Magento, PrestaShop).

איך » Linux » כיצד להפעיל TLSv1.3 על NGINX. VestaCP / CentOS או Ubuntu
השאירו תגובה