Kaip įjungti TLS 1.3 „Apache“ ir „Nginx“.


TLS 1.3 yra naujausia Transport Layer Security (TLS) protokolo versija, pagrįsta esamomis 1.2 specifikacijomis su tinkamu IETF standartu: RFC 8446. Jis užtikrina didesnį saugumą ir didesnį našumą, palyginti su jo pirmtakais.

Šiame straipsnyje parodysime nuoseklų vadovą, kaip gauti galiojantį TLS sertifikatą ir įgalinti naujausios TLS 1.3 versijos protokolą domene, priglobtame Apache arba Nginx žiniatinklio serveriai.

Reikalavimai:

  • Apache versija 2.4.37 arba naujesnė.
  • Nginx 1.13.0 ar naujesnė versija.
  • OpenSSL 1.1.1 ar naujesnė versija.
  • Galiojantis domeno pavadinimas su tinkamai sukonfigūruotais DNS įrašais.
  • Galiojantis TLS sertifikatas.

Įdiekite TLS sertifikatą iš Let's Encrypt

Norėdami gauti nemokamą SSL sertifikatąLeisk šifruoti, turite įdiegti Acme.sh klientą ir kelis reikalingus paketus Linux sistemoje, kaip parodyta.


apt install -y socat git  [On Debian/Ubuntu]
dnf install -y socat git  [On RHEL/CentOS/Fedora]
mkdir /etc/letsencrypt
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --home /etc/letsencrypt --accountemail [email 
cd ~
/etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength 2048
/etc/letsencrypt/acme.sh --issue --standalone --home /etc/letsencrypt -d example.com --ocsp-must-staple --keylength ec-256

PASTABA: pakeiskite example.com anksčiau pateiktoje komandoje tikru domeno pavadinimu.

Įdiegę SSL sertifikatą, galite toliau įgalinti TLS 1.3 savo domene, kaip paaiškinta toliau.

Įgalinkite TLS 1.3 „Nginx“.

Kaip minėjau anksčiau pateiktuose reikalavimuose, TLS 1.3 palaikoma nuo Nginx 1.13 versijos. Jei naudojate senesnę Nginx versiją, pirmiausia turite atnaujinti į naujausią versiją.


apt install nginx
yum install nginx

Patikrinkite Nginx ir OpenSSL versijas, pagal kurias buvo sudarytas Nginx (įsitikinkite, kad nginx versija yra bent 1.14 ir openssl versija 1.1.1).


nginx -V
Pavyzdžio išvestis

nginx version: nginx/1.14.1
built by gcc 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC) 
built with OpenSSL 1.1.1 FIPS  11 Sep 2018
TLS SNI support enabled
....

Dabar paleiskite, įgalinkite ir patikrinkite „nginx“ diegimą.


systemctl start nginx.service
systemctl enable nginx.service
systemctl status nginx.service

Dabar atidarykite nginx vhost konfigūracijos /etc/nginx/conf.d/example.com.conf failą naudodami mėgstamą redaktorių.


vi /etc/nginx/conf.d/example.com.conf

ir suraskite direktyvą ssl_protocols ir eilutės pabaigoje pridėkite TLSv1.3, kaip parodyta toliau


server {
  listen 443 ssl http2;
  listen [::]:443 ssl http2;

  server_name example.com;

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

Galiausiai patikrinkite konfigūraciją ir iš naujo įkelkite „Nginx“.


nginx -t
systemctl reload nginx.service

Įgalinkite TLS 1.3 „Apache“.

Pradedant nuo Apache 2.4.37, galite pasinaudoti TLS 1.3 pranašumais. Jei naudojate senesnę Apache versiją, pirmiausia turite naujovinti į naujausią versiją.


apt install apache2
yum install httpd

Įdiegę galite patikrinti „Apache“ ir „OpenSSL“ versiją, pagal kurią buvo sudaryta „Apache“.


httpd -V
openssl version

Dabar paleiskite, įgalinkite ir patikrinkite „nginx“ diegimą.


-------------- On Debian/Ubuntu -------------- 
systemctl start apache2.service
systemctl enable apache2.service
systemctl status apache2.service

-------------- On RHEL/CentOS/Fedora --------------
systemctl start httpd.service
systemctl enable httpd.service
systemctl status httpd.service

Dabar atidarykite „Apache“ virtualaus pagrindinio kompiuterio konfigūracijos failą naudodami mėgstamą redaktorių.


vi /etc/httpd/conf.d/vhost.conf
OR
vi /etc/apache2/apache2.conf

ir suraskite direktyvą ssl_protocols ir eilutės pabaigoje pridėkite TLSv1.3, kaip parodyta toliau.


<VirtualHost *:443>
SSLEngine On

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;
SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/example.com/chain.pem

     ServerAdmin [email 
     ServerName www.example.com
     ServerAlias example.com
    #DocumentRoot /data/httpd/htdocs/example.com/
    DocumentRoot /data/httpd/htdocs/example_hueman/
  # Log file locations
  LogLevel warn
  ErrorLog  /var/log/httpd/example.com/httpserror.log
  CustomLog "|/usr/sbin/rotatelogs /var/log/httpd/example.com/httpsaccess.log.%Y-%m-%d 86400" combined
</VirtualHost>

Galiausiai patikrinkite konfigūraciją ir iš naujo įkelkite „Apache“.


-------------- On Debian/Ubuntu -------------- 
apache2 -t
systemctl reload apache2.service

-------------- On RHEL/CentOS/Fedora --------------
httpd -t
systemctl reload httpd.service

Patikrinkite, ar svetainė naudoja TLS 1.3

Sukonfigūravę naudodami žiniatinklio serverį, galite patikrinti, ar svetainė veikia per TLS 1.3 protokolą, naudodami „Chrome“ naršyklės kūrimo įrankius 70 ir naujesnės versijos „Chrome“.

Tai viskas. Sėkmingai įgalinote TLS 1.3 protokolą savo domene, esančiame „Apache“ arba „Nginx“ žiniatinklio serveriuose. Jei turite klausimų apie šį straipsnį, nedvejodami klauskite žemiau esančiame komentarų skyriuje.