TLS 1.3 เป็นรุ่นของ Transport Layer Security (TLS) โปรโตคอลที่ได้รับการตีพิมพ์ในปี 2018 เป็นมาตรฐานที่นำเสนอในRFC 8446 มันมีการปรับปรุงความปลอดภัยและประสิทธิภาพการทำงานมากกว่ารุ่นก่อน
คู่มือนี้จะสาธิตวิธีการเปิดใช้งาน TLS 1.3 โดยใช้เว็บเซิร์ฟเวอร์ Nginx ใน FreeBSD 12
ความต้องการ
- อินสแตนซ์ Vultr Cloud Compute (VC2) ที่รัน FreeBSD 12
- ชื่อโดเมนที่ถูกต้องและการกำหนดค่าอย่างถูกต้อง
A
/ AAAA
/ CNAME
ระเบียน DNS สำหรับโดเมนของคุณ
- ใบรับรอง TLS ที่ถูกต้อง เราจะได้หนึ่งจาก Let's Encrypt
- รุ่น Nginx
1.13.0
หรือสูงกว่า
- รุ่น OpenSSL
1.1.1
หรือสูงกว่า
ก่อนที่จะเริ่ม
ตรวจสอบเวอร์ชั่น FreeBSD
uname -ro
# FreeBSD 12.0-RELEASE
ตรวจสอบให้แน่ใจว่าระบบ FreeBSD ของคุณทันสมัย
freebsd-update fetch install
pkg update && pkg upgrade -y
ติดตั้งแพ็คเกจที่จำเป็นหากไม่มีอยู่ในระบบของคุณ
pkg install -y sudo vim unzip wget bash socat git
สร้างบัญชีผู้ใช้ใหม่ด้วยชื่อผู้ใช้ที่คุณต้องการ (เราจะใช้johndoe
)
adduser
# Username: johndoe
# Full name: John Doe
# Uid (Leave empty for default): <Enter>
# Login group [johndoe]: <Enter>
# Login group is johndoe. Invite johndoe into other groups? []: wheel
# Login class [default]: <Enter>
# Shell (sh csh tcsh nologin) [sh]: bash
# Home directory [/home/johndoe]: <Enter>
# Home directory permissions (Leave empty for default): <Enter>
# Use password-based authentication? [yes]: <Enter>
# Use an empty password? (yes/no) [no]: <Enter>
# Use a random password? (yes/no) [no]: <Enter>
# Enter password: your_secure_password
# Enter password again: your_secure_password
# Lock out the account after creation? [no]: <Enter>
# OK? (yes/no): yes
# Add another user? (yes/no): no
# Goodbye!
รันvisudo
คำสั่งและยกเลิกหมายเหตุ%wheel ALL=(ALL) ALL
บรรทัดเพื่ออนุญาตให้สมาชิกของwheel
กลุ่มเรียกใช้งานคำสั่งใด ๆ
visudo
# Uncomment by removing hash (#) sign
# %wheel ALL=(ALL) ALL
su
ตอนนี้เปลี่ยนไปใช้ที่สร้างขึ้นใหม่ของคุณด้วย
su - johndoe
หมายเหตุ: แทนที่johndoe
ด้วยชื่อผู้ใช้ของคุณ
ตั้งค่าเขตเวลา
sudo tzsetup
ติดตั้งไคลเอ็นต์ acme.sh และรับใบรับรอง TLS จาก Let's Encrypt
acme.sh
ติดตั้ง
sudo pkg install -y acme.sh
ตรวจสอบเวอร์ชั่น
acme.sh --version
# v2.7.9
รับใบรับรอง RSA และ ECDSA สำหรับโดเมนของคุณ
# RSA
sudo acme.sh --issue --standalone -d example.com --ocsp-must-staple --keylength 2048
# ECC/ECDSA
sudo acme.sh --issue --standalone -d example.com --ocsp-must-staple --keylength ec-256
หมายเหตุ: แทนที่example.com
คำสั่งด้วยชื่อโดเมนของคุณ
สร้างไดเรกทอรีเพื่อจัดเก็บใบรับรองและกุญแจของคุณ /etc/letsencrypt
เราจะใช้
sudo mkdir -p /etc/letsencrypt/example.com
sudo mkdir -p /etc/letsencrypt/example.com_ecc
ติดตั้งและคัดลอกใบรับรองไปยัง/etc/letsencrypt
ไดเรกทอรี
# RSA
sudo acme.sh --install-cert -d example.com --cert-file /etc/letsencrypt/example.com/cert.pem --key-file /etc/letsencrypt/example.com/private.key --fullchain-file /etc/letsencrypt/example.com/fullchain.pem
# ECC/ECDSA
sudo acme.sh --install-cert -d example.com --ecc --cert-file /etc/letsencrypt/example.com_ecc/cert.pem --key-file /etc/letsencrypt/example.com_ecc/private.key --fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem
หลังจากเรียกใช้คำสั่งข้างต้นใบรับรองและคีย์ของคุณจะอยู่ในตำแหน่งต่อไปนี้:
RSA
: /etc/letsencrypt/example.com
ECC/ECDSA
: /etc/letsencrypt/example.com_ecc
ติดตั้ง Nginx
Nginx เพิ่มการรองรับ TLS 1.3 ในรุ่น 1.13.0 ระบบ FreeBSD 12 มาพร้อมกับ Nginx และ OpenSSL ที่รองรับ TLS 1.3 ออกจากกล่องดังนั้นจึงไม่จำเป็นต้องสร้างรุ่นที่กำหนดเอง
ดาวน์โหลดและติดตั้ง Nginx เวอร์ชันล่าสุดของการฉีดผ่านตัวpkg
จัดการแพ็คเกจ
sudo pkg install -y nginx-devel
ตรวจสอบเวอร์ชั่น
nginx -v
# nginx version: nginx/1.15.8
ตรวจสอบเวอร์ชั่น OpenSSL ที่ Nginx รวบรวม
nginx -V
# built with OpenSSL 1.1.1a-freebsd 20 Nov 2018
เริ่มและเปิดใช้งาน Nginx
sudo sysrc nginx_enable=yes
sudo service nginx start
ตอนนี้เราได้ติดตั้ง Nginx เรียบร้อยแล้วเราก็พร้อมที่จะกำหนดค่าด้วยการกำหนดค่าที่เหมาะสมเพื่อเริ่มใช้ TLS 1.3 บนเซิร์ฟเวอร์ของเรา
รันsudo vim /usr/local/etc/nginx/example.com.conf
คำสั่งและเติมไฟล์ด้วยการกำหนดค่าต่อไปนี้
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name example.com;
# RSA
ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
# ECDSA
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.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
ตอนนี้เราต้องรวมexample.com.conf
ไว้ในnginx.conf
ไฟล์หลัก
เรียกใช้sudo vim /usr/local/etc/nginx/nginx.conf
และเพิ่มบรรทัดต่อไปนี้ในhttp {}
บล็อก
include example.com.conf;
สังเกตเห็นTLSv1.3
พารามิเตอร์ใหม่ของssl_protocols
คำสั่ง พารามิเตอร์นี้จำเป็นสำหรับการเปิดใช้งาน TLS 1.3 บนเซิร์ฟเวอร์ Nginx เท่านั้น
ตรวจสอบการกำหนดค่า
sudo nginx -t
โหลดซ้ำ Nginx
sudo service nginx reload
ในการตรวจสอบ TLS 1.3 คุณสามารถใช้เครื่องมือพัฒนาเบราว์เซอร์หรือบริการ SSL Labs ภาพหน้าจอด้านล่างแสดงแท็บความปลอดภัยของ Chrome
คุณเปิดใช้งาน TLS 1.3 ใน Nginx สำเร็จแล้วบนเซิร์ฟเวอร์ FreeBSD ของคุณ TLS 1.3 เวอร์ชันสุดท้ายถูกกำหนดในเดือนสิงหาคม 2561 ดังนั้นจึงไม่มีเวลาที่ดีกว่าในการเริ่มใช้เทคโนโลยีใหม่นี้