วิธีเปิดใช้งาน TLS 1.3 ใน Nginx บน Debian 9

บทนำ

TLS 1.3 เป็นรุ่นของ Transport Layer Security (TLS) โปรโตคอลการตีพิมพ์ในปี 2018 เป็นมาตรฐานที่นำเสนอในRFC 8446 มันมีการปรับปรุงความปลอดภัยและประสิทธิภาพการทำงานมากกว่ารุ่นก่อน

คู่มือนี้อธิบายวิธีการเปิดใช้งาน TLS 1.3 โดยใช้เว็บเซิร์ฟเวอร์ Nginx บน Debian 9

ความต้องการ

  • รุ่น Nginx 1.13.0หรือสูงกว่า
  • รุ่น OpenSSL 1.1.1หรือสูงกว่า
  • อินสแตนซ์ Vultr Cloud Compute (VC2) ที่เรียกใช้ Debian 9 x64 (ยืด)
  • ชื่อโดเมนที่ถูกต้องและการกำหนดค่าอย่างถูกต้องA/ AAAA/ CNAMEระเบียน DNS สำหรับโดเมนของคุณ
  • ใบรับรอง TLS ที่ถูกต้อง เราจะได้หนึ่งจาก Let's Encrypt

ก่อนที่จะเริ่ม

ตรวจสอบเวอร์ชั่นของเดเบียน

lsb_release -ds
# Debian GNU/Linux 9.9 (stretch)

ตรวจสอบให้แน่ใจว่าระบบของคุณทันสมัย

apt update && apt upgrade -y

ติดตั้งแพ็คเกจที่จำเป็น

apt install -y git unzip curl sudo socat build-essential

สร้างบัญชีผู้ใช้ที่ไม่ใช่รูทใหม่ด้วยsudoการเข้าถึงและเปลี่ยนเป็นบัญชี

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

หมายเหตุ: แทนที่johndoeด้วยชื่อผู้ใช้ของคุณ

ตั้งค่าเขตเวลา

sudo dpkg-reconfigure tzdata

ติดตั้งไคลเอนต์ Acme.sh และรับใบรับรอง TLS จาก Let's Encrypt

ดาวน์โหลดและติดตั้งAcme.sh

sudo mkdir /etc/letsencrypt
sudo git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
sudo ./acme.sh --install --home /etc/letsencrypt --accountemail your_email@example.com
cd ~
source ~/.bashrc

ตรวจสอบเวอร์ชั่น

/etc/letsencrypt/acme.sh --version
# v2.8.2

รับใบรับรอง 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 ดิสทริบิวชันส่วนใหญ่รวมถึง Debian 9 นั้น Nginx ถูกสร้างด้วย OpenSSL เวอร์ชั่นเก่ากว่าซึ่งไม่รองรับ TLS 1.3 ดังนั้นเราต้องสร้าง Nginx ที่กำหนดเองของเราเองซึ่งเชื่อมโยงกับ OpenSSL 1.1.1 รีลีสซึ่งรวมถึงการสนับสนุน TLS 1.3

ดาวน์โหลดเวอร์ชั่นล่าสุดของซอร์สโค้ด Nginx และแตกไฟล์

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

ดาวน์โหลดซอร์สโค้ด OpenSSL 1.1.1c และแตกไฟล์

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

ลบ.tar.gzไฟล์ทั้งหมดเนื่องจากไม่ต้องการอีกต่อไป

rm -rf *.tar.gz

ป้อนไดเรกทอรีต้นทาง Nginx

cd ~/nginx-1.17.0

กำหนดค่าคอมไพล์และติดตั้ง 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=Debian \
            --builddir=nginx-1.17.0 \
            --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.1c \
            --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หลังเป็นสถานที่มาตรฐานสำหรับโมดูล Nginx

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

สร้างไดเรกทอรีแคช Nginx และตั้งค่าการอนุญาตที่เหมาะสม

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.17.0 (Debian)
# built by gcc 6.3.0 20170516 (Debian 6.3.0-18+deb9u1)
# built with OpenSSL 1.1.1c  28 May 2019
# 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;
}

บันทึกไฟล์และออกด้วย:+ +WQ

กำหนดค่า 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_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';
  ssl_prefer_server_ciphers on;
}

บันทึกไฟล์และออกด้วย:+ +WQ

สังเกตเห็น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 บน Debian 9

วิธีเปิดใช้งาน TLS 1.3 ใน Nginx บน Debian 9

ขอแสดงความยินดี! คุณเปิดใช้งาน TLS 1.3 บนเซิร์ฟเวอร์ Debian 9 สำเร็จแล้ว

ฝากความเห็น

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7 LAMP VPS

เรียนรู้วิธีการติดตั้ง Directus 6.4 CMS บน CentOS 7; ระบบการจัดการเนื้อหา Headless ที่มีความยืดหยุ่นสูงและปลอดภัย

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

ตั้งค่า Nginx บน Ubuntu เพื่อสตรีมวิดีโอสด HLS

เรียนรู้วิธีการตั้งค่า Nginx บน Ubuntu สำหรับการสตรีมวิดีโอสด HLS ด้วยคำแนะนำที่ชัดเจนและเป็นประโยชน์

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

การสำรองข้อมูลยอดนิยมด้วย Percona XtraBackup บนแอพ WordPress แบบคลิกเดียว

เรียนรู้การใช้ Percona XtraBackup สำหรับการสำรองข้อมูลด้วยวิธีที่เป็นระบบและง่ายดายบน WordPress ออนไลน์ของคุณ

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS: นี่คืออนาคตของ Windows หรือไม่?

ReactOS ซึ่งเป็นโอเพ่นซอร์สและระบบปฏิบัติการฟรีพร้อมเวอร์ชันล่าสุดแล้ว สามารถตอบสนองความต้องการของผู้ใช้ Windows ยุคใหม่และล้ม Microsoft ได้หรือไม่? มาหาข้อมูลเพิ่มเติมเกี่ยวกับรูปแบบเก่านี้ แต่เป็นประสบการณ์ OS ที่ใหม่กว่ากัน

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

AI สามารถต่อสู้กับการโจมตีของแรนซัมแวร์ที่เพิ่มขึ้นได้หรือไม่

การโจมตีของ Ransomware กำลังเพิ่มขึ้น แต่ AI สามารถช่วยจัดการกับไวรัสคอมพิวเตอร์ตัวล่าสุดได้หรือไม่? AI คือคำตอบ? อ่านที่นี่รู้ว่า AI boone หรือ bane

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

เชื่อมต่อผ่าน WhatsApp Desktop App 24*7

ในที่สุด Whatsapp ก็เปิดตัวแอพเดสก์ท็อปสำหรับผู้ใช้ Mac และ Windows ตอนนี้คุณสามารถเข้าถึง Whatsapp จาก Windows หรือ Mac ได้อย่างง่ายดาย ใช้ได้กับ Windows 8+ และ Mac OS 10.9+

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

AI จะนำกระบวนการอัตโนมัติไปสู่อีกระดับได้อย่างไร

อ่านข้อมูลนี้เพื่อทราบว่าปัญญาประดิษฐ์กำลังได้รับความนิยมในหมู่บริษัทขนาดเล็กอย่างไร และเพิ่มโอกาสในการทำให้พวกเขาเติบโตและทำให้คู่แข่งได้เปรียบ

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

การอัปเดตเสริม macOS Catalina 10.15.4 ทำให้เกิดปัญหามากกว่าการแก้ปัญหา

เมื่อเร็ว ๆ นี้ Apple เปิดตัว macOS Catalina 10.15.4 การอัปเดตเสริมเพื่อแก้ไขปัญหา แต่ดูเหมือนว่าการอัปเดตทำให้เกิดปัญหามากขึ้นที่นำไปสู่การสร้างเครื่อง Mac อ่านบทความนี้เพื่อเรียนรู้เพิ่มเติม

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

13 เครื่องมือดึงข้อมูลเชิงพาณิชย์ของ Big Data

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

ระบบไฟล์บันทึกคืออะไรและทำงานอย่างไร

คอมพิวเตอร์ของเราจัดเก็บข้อมูลทั้งหมดในลักษณะที่เรียกว่าระบบไฟล์บันทึก เป็นวิธีการที่มีประสิทธิภาพที่ช่วยให้คอมพิวเตอร์สามารถค้นหาและแสดงไฟล์ได้ทันทีที่คุณกดค้นหาhttps://wethegeek.com/?p=94116&preview=true