Kako omogućiti TLS 1.3 u Apacheu i Nginxu


TLS 1.3 je najnovija verzija Transport Layer Security (TLS) protokola i zasniva se na postojećim 1.2 specifikacijama sa odgovarajućim IETF standardom: RFC 8446. Pruža jaču sigurnost i bolje performanse u odnosu na svoje prethodnike.

U ovom članku ćemo vam pokazati korak po korak vodič za dobivanje važećeg TLS certifikata i omogućavanje najnovije verzije TLS 1.3 protokola na vašoj domeni hostiranoj na Apache ili Nginx web serveri.

Zahtjevi:

  • Apache verzija 2.4.37 ili novija.
  • Nginx verzija 1.13.0 ili novija.
  • OpenSSL verzija 1.1.1 ili novija.
  • Važeće ime domene sa ispravno konfigurisanim DNS zapisima.
  • Važeći TLS certifikat.

Instalirajte TLS certifikat iz Let’s Encrypt

Da biste dobili besplatni SSL certifikat od Let’s Encrypt, morate instalirati klijenta Acme.sh i također nekoliko potrebnih paketa na Linux sistemu kao što je prikazano.


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

NAPOMENA: Zamijenite example.com u gornjoj naredbi sa svojim pravim imenom domene.

Nakon što instalirate SSL certifikat, možete nastaviti dalje da omogućite TLS 1.3 na svojoj domeni kao što je objašnjeno u nastavku.

Omogućite TLS 1.3 na Nginxu

Kao što sam spomenuo u gore navedenim zahtjevima, taj TLS 1.3 je podržan počevši od Nginx 1.13 verzije. Ako koristite stariju verziju Nginxa, prvo morate nadograditi na najnoviju verziju.


apt install nginx
yum install nginx

Provjerite Nginx verziju i OpenSSL verziju prema kojoj je Nginx kompajliran (uvjerite se da je verzija nginx najmanje 1.14 i openssl verzija 1.1.1).


nginx -V
Sample Output

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
....

Sada pokrenite, omogućite i provjerite nginx instalaciju.


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

Sada otvorite nginx vhost konfiguracijski fajl /etc/nginx/conf.d/example.com.conf koristeći svoj omiljeni uređivač.


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

i pronađite ssl_protocols direktivu i dodajte TLSv1.3 na kraj reda kao što je prikazano ispod


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

Na kraju, provjerite konfiguraciju i ponovo učitajte Nginx.


nginx -t
systemctl reload nginx.service

Omogućite TLS 1.3 u Apacheu

Počevši od Apache 2.4.37, možete iskoristiti prednosti TLS 1.3. Ako koristite stariju verziju Apachea, morate prvo nadograditi na najnoviju verziju.


apt install apache2
yum install httpd

Jednom instaliran, možete provjeriti Apache i OpenSSL verziju prema kojoj je Apache kompajliran.


httpd -V
openssl version

Sada pokrenite, omogućite i provjerite nginx instalaciju.


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

Sada otvorite konfiguracijsku datoteku virtuelnog hosta Apache koristeći svoj omiljeni uređivač.


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

i pronađite ssl_protocols direktivu i dodajte TLSv1.3 na kraj reda kao što je prikazano ispod.


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

Na kraju, provjerite konfiguraciju i ponovo učitajte Apache.


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

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

Provjerite da web lokacija koristi TLS 1.3

Nakon što ste konfigurirali putem web servera, možete provjeriti da li vaša web lokacija rukuje putem TLS 1.3 protokola koristeći alate za razvoj Chrome pretraživača na verziji Chrome 70+.

To je sve. Uspješno ste omogućili TLS 1.3 protokol na svojoj domeni koja se nalazi na Apache ili Nginx web serverima. Ako imate bilo kakvih pitanja o ovom članku, slobodno pitajte u odeljku za komentare ispod.