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.