วิธีเปิดใช้งาน TLS 1.3 ใน Nginx บน Ubuntu 18.04 LTS

TLS 1.3 เป็นรุ่นของ Transport Layer Security (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
  • ชื่อโดเมนที่ถูกต้องและการกำหนดค่าอย่างถูกต้องA/ AAAA/ CNAMEระเบียน DNS สำหรับโดเมนของคุณ
  • ใบรับรอง 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คำสั่งด้วยชื่อโดเมนของคุณ

หลังจากเรียกใช้คำสั่งก่อนหน้าใบรับรองและกุญแจของคุณจะสามารถเข้าถึงได้ที่:

  • สำหรับ/etc/letsencrypt/example.comไดเร็กทอรีRSA:
  • สำหรับ/etc/letsencrypt/example.com_eccไดเร็กทอรีECC / ECDSA:

สร้าง Nginx จากแหล่งที่มา

Nginx เพิ่มการรองรับ TLS 1.3 ในรุ่น 1.13.0 สำหรับลีนุกซ์ส่วนใหญ่, รวมถึง 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 และตั้งค่าการอนุญาตที่เหมาะสม

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

บันทึกไฟล์และออกด้วย:+ +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_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';
}

บันทึกไฟล์และออกด้วย:+ +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 บน Ubuntu 18.04 LTS

วิธีเปิดใช้งาน TLS 1.3 ใน Nginx บน Ubuntu 18.04 LTS

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



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 ในการดูแลสุขภาพจึงยังคงเติบโตทุกวัน