Εισαγωγή
Απαιτήσεις
Πριν ξεκινήσεις
Εγκαταστήστε το πρόγραμμα-πελάτη Acme.sh και αποκτήστε ένα πιστοποιητικό TLS από το Let's Encrypt
Δημιουργήστε το Nginx από την πηγή
Διαμόρφωση Nginx για TLS 1.3
Εισαγωγή
Το TLS 1.3 είναι μια έκδοση του πρωτοκόλλου Transport Layer Security (TLS) που δημοσιεύτηκε το 2018 ως προτεινόμενο πρότυπο στο RFC 8446 . Προσφέρει βελτιώσεις ασφάλειας και απόδοσης σε σχέση με τους προκατόχους του.
Αυτός ο οδηγός εξηγεί πώς να ενεργοποιήσετε το TLS 1.3 χρησιμοποιώντας τον διακομιστή web Nginx στο Debian 9.
Απαιτήσεις
- Έκδοση Nginx
1.13.0ή μεγαλύτερη.
- Έκδοση OpenSSL
1.1.1ή μεταγενέστερη.
- Περίπτωση Vultr Cloud Compute (VC2) που εκτελεί το Debian 9 x64 (stretch).
- Ένα έγκυρο όνομα τομέα και σωστά διαμορφωμένες
A/ AAAA/ CNAMEεγγραφές DNS για τον τομέα σας.
- Ένα έγκυρο πιστοποιητικό TLS. Θα λάβουμε ένα από το Let's Encrypt.
Πριν ξεκινήσεις
Ελέγξτε την έκδοση του Debian.
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
Συμβολικός σύνδεσμος /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.
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 στον διακομιστή μας.
Εκτελέστε 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;
}
Αποθηκεύστε το αρχείο και βγείτε με :+ 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 στο Debian 9 Πώς να ενεργοποιήσετε το TLS 1.3 στο Nginx στο Debian 9]()
Συγχαρητήρια! Έχετε ενεργοποιήσει με επιτυχία το TLS 1.3 στον διακομιστή σας Debian 9.