Kako omogućiti TLS 1.3 u Apacheu i Nginxu


TLS 1.3 je najnovija verzija protokola Transport Layer Security (TLS) i temelji se na postojećim specifikacijama 1.2 s odgovarajućim IETF standardom: RFC 8446. Pruža jaču sigurnost i veća poboljšanja performansi u odnosu na svoje prethodnike.

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

Zahtjevi:

  • Apache verzija 2.4.37 ili novija.
  • Nginx verzija 1.13.0 ili novija.
  • OpenSSL verzija 1.1.1 ili novija.
  • Važeći naziv domene s ispravno konfiguriranim DNS zapisima.
  • Važeći TLS certifikat.

Instalirajte TLS certifikat tvrtke Let’s Encrypt

Da biste dobili besplatni SSL certifikat od Let’s Encrypt, morate instalirati Acme.sh klijent i također nekoliko potrebnih paketa na Linux sustav 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 svojim stvarnim nazivom domene.

Nakon što instalirate SSL certifikat, možete nastaviti 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 gornjim zahtjevima, TLS 1.3 je podržan počevši od verzije Nginx 1.13. Ako koristite stariju verziju Nginxa, prvo trebate izvršiti nadogradnju na najnoviju verziju.


apt install nginx
yum install nginx

Provjerite verziju Nginx i verziju OpenSSL prema kojoj je Nginx kompajliran (provjerite je li verzija nginx najmanje 1.14 i openssl verzija 1.1.1).


nginx -V
Uzorak izlaza

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


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

Sada otvorite konfiguracijsku datoteku nginx vhost /etc/nginx/conf.d/example.com.conf koristeći svoj omiljeni editor.


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

i pronađite direktivu ssl_protocols i dodajte TLSv1.3 na kraj retka kao što je prikazano u nastavku


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 ponovno 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 TLS 1.3. Ako koristite stariju verziju Apachea, prvo trebate izvršiti nadogradnju na najnoviju verziju.


apt install apache2
yum install httpd

Nakon instalacije možete provjeriti Apache i OpenSSL verziju prema kojoj je Apache kompajliran.


httpd -V
openssl version

Sada pokrenite, omogućite i provjerite instalaciju nginxa.


-------------- 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 virtualnog hosta Apache koristeći svoj omiljeni editor.


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

i pronađite direktivu ssl_protocols i dodajte TLSv1.3 na kraj retka kao što je prikazano u nastavku.


<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 ponovno 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 mjesto koristi TLS 1.3

Nakon što konfigurirate putem web-poslužitelja, možete provjeriti radi li vaša web-lokacija rukovanje preko TLS 1.3 protokola pomoću alata za razvoj preglednika Chrome na verziji Chrome 70+.

To je sve. Uspješno ste omogućili TLS 1.3 protokol na svojoj domeni hostiranoj na web poslužiteljima Apache ili Nginx. Ako imate bilo kakvih pitanja o ovom članku, slobodno ih postavite u odjeljku za komentare u nastavku.