Απαιτήσεις
Πριν ξεκινήσεις
Εγκαταστήστε το πρόγραμμα-πελάτη Acme.sh και αποκτήστε πιστοποιητικό TLS από το Let's Encrypt
Δημιουργήστε το Nginx από την πηγή
Διαμόρφωση Nginx για TLS 1.3
Το 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 your_email@example.com
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εντολές με το όνομα τομέα σας.
Αφού εκτελέσετε τις προηγούμενες εντολές, τα πιστοποιητικά και τα κλειδιά σας θα είναι προσβάσιμα στη διεύθυνση:
- Για RSA:
/etc/letsencrypt/example.comκατάλογος.
- Για ECC/ECDSA:
/etc/letsencrypt/example.com_eccκατάλογος.
Δημιουργήστε το Nginx από την πηγή
Το Nginx πρόσθεσε υποστήριξη για το TLS 1.3 στην έκδοση 1.13.0. Στις περισσότερες διανομές Linux, συμπεριλαμβανομένου του 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
Συμβολικός σύνδεσμος /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 unit.
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_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';
}
Αποθηκεύστε το αρχείο και βγείτε με :+ 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 στο Ubuntu 18.04 LTS Πώς να ενεργοποιήσετε το TLS 1.3 στο Nginx στο Ubuntu 18.04 LTS]()
Συγχαρητήρια! Έχετε ενεργοποιήσει με επιτυχία το TLS 1.3 στον διακομιστή ιστού Ubuntu 18.04.