วิธีเปิดใช้งาน 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 [email protected]
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 สำเร็จแล้ว



Leave a Comment

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

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ภาวะเอกฐานทางเทคโนโลยี: อนาคตอันห่างไกลของอารยธรรมมนุษย์?

ในขณะที่วิทยาศาสตร์มีวิวัฒนาการไปอย่างรวดเร็ว โดยรับช่วงต่อความพยายามของเราอย่างมาก ความเสี่ยงในการทำให้ตัวเองตกอยู่ในภาวะภาวะเอกฐานที่อธิบายไม่ได้ก็เพิ่มขึ้นเช่นกัน อ่านว่าภาวะเอกฐานอาจมีความหมายสำหรับเราอย่างไร

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ข้อมูลเชิงลึกเกี่ยวกับ 26 เทคนิคการวิเคราะห์ข้อมูลขนาดใหญ่: ตอนที่ 1

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

ผลกระทบของปัญญาประดิษฐ์ในการดูแลสุขภาพ 2021

AI ในการดูแลสุขภาพได้ก้าวกระโดดอย่างมากจากทศวรรษที่ผ่านมา ดังนั้นอนาคตของ AI ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน