NGINX पर TLSv1.3 कैसे सक्रिय करें? VestaCP / CentOS या Ubuntu

इस ट्यूटोरियल में आप सीखेंगे कि कैसे सक्षम TLSv1.3 एनजीआईएनएक्स . पर. इसका मतलब क्या है TLSv 1.3, यह क्या मदद करता है और क्यों आप की जरूरत है के रूप में वेबसर्वर पर TLS सक्रिय किया जा सकता है. प्रबंधन प्रणाली वाले सर्वर के लिए VestaCP (CentOS या उबंटू) थोड़ा और कठिन है सक्रिय के लिए TLS 1.3 cPanel सर्वर की तुलना में, लेकिन यह असंभव नहीं है।

यह बेहतर क्यों है TLS 1.3 से TLS 1.2?

TLS (Transport Layer Security) एक है क्रिप्टोग्राफिक प्रोटोकॉल जो सुनिश्चित करता है कनेक्शन सुरक्षा कंप्यूटर और एक नेटवर्क के बीच जिसका यह एक हिस्सा है। TLS इसका उपयोग अनुप्रयोगों में किया जाता है जैसे: ईमेल, संदेश भेजना, आवाज और वीडियो कॉल (VoIP), लेकिन विशेष रूप से HTTPS. उपयोगकर्ता के कंप्यूटर या स्मार्टफोन और एक्सेस किए गए पेज के वेब सर्वर के बीच सुरक्षित संचार सुनिश्चित करना।

TLS 1.3 एक प्रदान करता है उच्च गति कनेक्टिंग क्लाइंट-सर्वर और a इसके अलावा सुरक्षा कुछ एल्गोरिदम को हटाकर। के बीच मतभेद TLSv1.2 और TLSv1.3.

के बारे में HTTPS, SSL (Secure Sockets Layer) मैंने अन्य लेखों में भी कहा:

NGINX पर TLS 1.3 कैसे सक्रिय करें? VestaCP / CentOS के साथ सर्वर प्रबंधन

इससे पहले कि आप देखें कि आप कैसे सक्रिय होते हैं TLSNGINX पर v1.3, आपको कुछ न्यूनतम आवश्यकताओं पर विचार करने की आवश्यकता है 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, एनजीआईएनएक्स को संकलित नहीं किया गया है न्यूनतम संस्करण के साथ 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

इस चरण में हमें recompile करने की आवश्यकता है 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 एनजीआईएनएक्स . पर
कैसे सक्रिय करें TLSv1.3 एनजीआईएनएक्स . पर

अपग्रेड के लिए 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 उन्नयन पर काम नहीं कर रहा है।

VestaCP पर डोमेनों के लिए TLSv1.3 कैसे सक्रिय करें?

फ़ाइल में /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) जोड़ते समय, मेरे पास इसके लिए निम्न कॉन्फ़िगरेशन फ़ाइल है 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

मुझे आशा है कि आपको यह ट्यूटोरियल मददगार लगा होगा और यदि आप किसी चीज़ में फंस गए हैं, तो समस्या का विवरण टिप्पणियों में छोड़ दें।

प्रौद्योगिकी के प्रति जुनूनी होने के कारण मैं इस पर मजे से लिखता हूं StealthSettings2006 से .com। मुझे ऑपरेटिंग सिस्टम में व्यापक अनुभव है: macOS, Windows एसआई Linux, लेकिन प्रोग्रामिंग भाषाओं और ब्लॉगिंग प्लेटफ़ॉर्म में भी (WordPress) और ऑनलाइन स्टोर के लिए (WooCommerce, मैगेंटो, प्रेस्टाशॉप)।

कैसे करें » Linux » NGINX पर TLSv1.3 कैसे सक्रिय करें? VestaCP / CentOS या Ubuntu
एक टिप्पणी छोड़ दो