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.