كيفية تمكين TLS 1.3 في Nginx على Ubuntu 18.04 LTS

TLS 1.3 هو إصدار من بروتوكول أمان طبقة النقل (TLS) تم نشره في 2018 كمعيار مقترح في RFC 8446 . يوفر تحسينات في الأمان والأداء على سابقاته.

يوضح هذا الدليل كيفية تمكين TLS 1.3 باستخدام خادم الويب Nginx على Ubuntu 18.04 LTS.

المتطلبات

  • إصدار Nginx 1.13.0أو أكبر.
  • إصدار OpenSSL 1.1.1أو أحدث.
  • مثيل Vultr Cloud Compute (VC2) الذي يعمل بنظام Ubuntu 18.04.
  • اسم مجال صالح وسجلات DNS / A/ تكوينها بشكل صحيح للمجال الخاص بك.AAAACNAME
  • شهادة TLS صالحة. سنحصل على واحد من Let's Encrypt.

قبل ان تبدأ

تحقق من إصدار Ubuntu.

lsb_release -ds
# Ubuntu 18.04.1 LTS

قم بإنشاء non-rootحساب مستخدم جديد له sudoحق الوصول والتبديل إليه.

adduser johndoe --gecos "John Doe"
usermod -aG sudo johndoe
su - johndoe

ملاحظة: استبدل johndoeباسم المستخدم الخاص بك.

قم بإعداد المنطقة الزمنية.

sudo dpkg-reconfigure tzdata

تأكد من أن نظامك محدث.

sudo apt update && sudo apt upgrade -y

تثبيت build-essential، socatو gitحزم.

sudo apt install -y build-essential socat git

قم بتثبيت عميل Acme.sh واحصل على شهادة TLS من Let's Encrypt

تحميل وتثبيت Acme.sh .

sudo mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail [email protected]
cd ~
source ~/.bashrc

التحقق من إصدار.

acme.sh --version
# v2.8.0

احصل على شهادات RSA و ECDSA لنطاقك.

# RSA 2048
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
# ECDSA
sudo /etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256

ملاحظة: استبدل example.comالأوامر باسم المجال الخاص بك.

بعد تشغيل الأوامر السابقة ، يمكن الوصول إلى الشهادات والمفاتيح على:

  • بالنسبة لـ RSA: /etc/letsencrypt/example.comالدليل.
  • بالنسبة إلى ECC / ECDSA: /etc/letsencrypt/example.com_eccالدليل.

بناء Nginx من المصدر

أضاف Nginx دعمًا لـ TLS 1.3 في الإصدار 1.13.0. في معظم توزيعات Linux ، بما في ذلك Ubuntu 18.04 ، تم تصميم Nginx باستخدام إصدار OpenSSL الأقدم ، والذي لا يدعم TLS 1.3. وبالتالي ، نحتاج إلى بناء Nginx المخصص الخاص بنا المرتبط بإصدار OpenSSL 1.1.1 ، والذي يتضمن دعم TLS 1.3.

قم بتنزيل أحدث إصدار رئيسي من شفرة مصدر Nginx واستخرجه.

wget https://nginx.org/download/nginx-1.15.5.tar.gz && tar zxvf nginx-1.15.5.tar.gz

قم بتنزيل كود مصدر OpenSSL 1.1.1 واستخراجه.

# OpenSSL version 1.1.1
wget https://www.openssl.org/source/openssl-1.1.1.tar.gz && tar xzvf openssl-1.1.1.tar.gz

احذف جميع .tar.gzالملفات ، حيث لن تكون هناك حاجة إليها بعد الآن.

rm -rf *.tar.gz

أدخل دليل مصدر Nginx.

cd ~/nginx-1.15.5

تكوين وتجميع وتثبيت Nginx. من أجل البساطة ، سنقوم فقط بتجميع الوحدات الأساسية اللازمة لتشغيل TLS 1.3. إذا كنت بحاجة إلى بنية Nginx كاملة ، يمكنك قراءة دليل Vultr هذا حول تجميع Nginx.

./configure --prefix=/etc/nginx \
            --sbin-path=/usr/sbin/nginx \
            --modules-path=/usr/lib/nginx/modules \
            --conf-path=/etc/nginx/nginx.conf \
            --error-log-path=/var/log/nginx/error.log \
            --pid-path=/var/run/nginx.pid \
            --lock-path=/var/run/nginx.lock \
            --user=nginx \
            --group=nginx \
            --build=Ubuntu \
            --builddir=nginx-1.15.5 \
            --http-log-path=/var/log/nginx/access.log \
            --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 \
            --with-compat \
            --with-http_ssl_module \
            --with-http_v2_module \
            --with-openssl=../openssl-1.1.1 \
            --with-openssl-opt=no-nextprotoneg \
            --without-http_rewrite_module \
            --without-http_gzip_module

make
sudo make install

إنشاء مجموعة نظام Nginx والمستخدم.

sudo adduser --system --home /nonexistent --shell /bin/false --no-create-home --disabled-login --disabled-password --gecos "nginx user" --group nginx

Symlink /usr/lib/nginx/modulesإلى /etc/nginx/modulesالدليل. etc/nginx/modulesهو مكان قياسي لوحدات Nginx.

sudo ln -s /usr/lib/nginx/modules /etc/nginx/modules

إنشاء أدلة Nginx cache وتعيين الأذونات المناسبة.

sudo mkdir -p /var/cache/nginx/client_temp /var/cache/nginx/fastcgi_temp /var/cache/nginx/proxy_temp /var/cache/nginx/scgi_temp /var/cache/nginx/uwsgi_temp
sudo chmod 700 /var/cache/nginx/*
sudo chown nginx:root /var/cache/nginx/*

تحقق من إصدار Nginx.

sudo nginx -V

# nginx version: nginx/1.15.5 (Ubuntu)
# built by gcc 7.3.0 (Ubuntu 7.3.0-27ubuntu1~18.04)
# built with OpenSSL 1.1.1  11 Sep 2018
# TLS SNI support enabled
# configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx . . .
# . . .

إنشاء ملف وحدة Nginx systemd.

sudo vim /etc/systemd/system/nginx.service

تعبئة الملف بالتهيئة التالية.

[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t -c /etc/nginx/nginx.conf
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID

[Install]
WantedBy=multi-user.target

ابدأ وتمكين Nginx.

sudo systemctl start nginx.service
sudo systemctl enable nginx.service

خلق conf.d، sites-availableو sites-enabledالدلائل في /etc/nginxالدليل.

sudo mkdir /etc/nginx/{conf.d,sites-available,sites-enabled}

قم بتشغيل sudo vim /etc/nginx/nginx.confالتوجيهين التاليين وإضافتهما إلى نهاية الملف ، قبل الإغلاق مباشرة }.

    . . .
    . . .
    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*.conf;
}

احفظ الملف واخرج مع :+ W+ Q.

تكوين Nginx لـ TLS 1.3

الآن بعد أن بنينا Nginx بنجاح ، نحن على استعداد لتهيئته لبدء استخدام TLS 1.3 على خادمنا.

قم بتشغيل sudo vim /etc/nginx/conf.d/example.com.confالملف وملؤه بالتكوين التالي.

server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  # RSA
  ssl_certificate /etc/letsencrypt/example.com/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com/example.com.key;
  # ECDSA
  ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.cer;
  ssl_certificate_key /etc/letsencrypt/example.com_ecc/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';
}

احفظ الملف واخرج مع :+ W+ Q.

لاحظ TLSv1.3المعلمة الجديدة ssl_protocolsللتوجيه. هذه المعلمة ضرورية لتمكين TLS 1.3.

تحقق من التكوين.

sudo nginx -t

إعادة تحميل Nginx.

sudo systemctl reload nginx.service

للتحقق من TLS 1.3 ، يمكنك استخدام أدوات مطور المتصفح أو خدمة SSL Labs. توضح لقطات الشاشة أدناه علامة تبويب أمان Chrome التي توضح أن TLS 1.3 يعمل.

كيفية تمكين TLS 1.3 في Nginx على Ubuntu 18.04 LTS

كيفية تمكين TLS 1.3 في Nginx على Ubuntu 18.04 LTS

تهانينا! لقد قمت بتمكين TLS 1.3 بنجاح على خادم الويب Ubuntu 18.04.



Leave a Comment

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول

6 أشياء شديدة الجنون حول نينتندو سويتش

6 أشياء شديدة الجنون حول نينتندو سويتش

يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

وعود التكنولوجيا التي لم يتم الوفاء بها بعد

هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.

وظائف طبقات معمارية مرجعية للبيانات الضخمة

وظائف طبقات معمارية مرجعية للبيانات الضخمة

اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

كيف يمكن للذكاء الاصطناعي نقل أتمتة العمليات إلى المستوى التالي؟

اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

CAPTCHA: ما هي المدة التي يمكن أن تظل تقنية قابلة للتطبيق للتميز بين الإنسان والذكاء الاصطناعي؟

لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

التفرد التكنولوجي: مستقبل بعيد للحضارة الإنسانية؟

مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

التطبيب عن بعد والرعاية الصحية عن بعد: المستقبل هنا

ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

هل تساءلت يومًا كيف يربح المتسللون الأموال؟

ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

يتسبب التحديث الإضافي لنظام macOS Catalina 10.15.4 في حدوث مشكلات أكثر من حلها

أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد