Zoeken op website

TLS 1.3 inschakelen in Apache en Nginx


TLS 1.3 is de nieuwste versie van het Transport Layer Security (TLS) protocol en is gebaseerd op de bestaande 1.2-specificaties met de juiste IETF-standaard: RFC 8446. Het biedt sterkere beveiliging en hogere prestatieverbeteringen ten opzichte van zijn voorgangers.

In dit artikel laten we u een stapsgewijze handleiding zien om een geldig TLS-certificaat te verkrijgen en het nieuwste TLS 1.3 versieprotocol in te schakelen op uw domein dat wordt gehost op Apache of Nginx webservers.

Vereisten:

  • Apache versie 2.4.37 of hoger.
  • Nginx versie 1.13.0 of hoger.
  • OpenSSL versie 1.1.1 of hoger.
  • Een geldige domeinnaam met correct geconfigureerde DNS-records.
  • Een geldig TLS-certificaat.

Installeer het TLS-certificaat van Let's Encrypt

Om een gratis SSL-certificaat van Let's Encrypt te verkrijgen, moet u de Acme.sh-client en enkele benodigde pakketten op een Linux-systeem installeren, zoals weergegeven.


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

OPMERKING: Vervang example.com in de bovenstaande opdracht door uw echte domeinnaam.

Zodra u het SSL-certificaat heeft geïnstalleerd, kunt u verder gaan om TLS 1.3 in te schakelen op uw domein, zoals hieronder uitgelegd.

Schakel TLS 1.3 in op Nginx

Zoals ik in de bovenstaande vereisten vermeldde, wordt TLS 1.3 ondersteund vanaf de Nginx 1.13 versie. Als u de oudere Nginx-versie gebruikt, moet u eerst upgraden naar de nieuwste versie.


apt install nginx
yum install nginx

Controleer de Nginx versie en de OpenSSL versie waartegen Nginx is gecompileerd (zorg ervoor dat de nginx versie minimaal 1.14 is en openssl versie 1.1.1).


nginx -V
Voorbeelduitvoer

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

Start, schakel en verifieer nu de nginx-installatie.


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

Open nu het nginx vhost-configuratiebestand /etc/nginx/conf.d/example.com.conf met uw favoriete editor.


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

en zoek de ssl_protocols richtlijn en voeg TLSv1.3 toe aan het einde van de regel, zoals hieronder weergegeven


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

Controleer ten slotte de configuratie en laad Nginx opnieuw.


nginx -t
systemctl reload nginx.service

Schakel TLS 1.3 in Apache in

Vanaf Apache 2.4.37 kunt u profiteren van TLS 1.3. Als u de oudere versie van Apache gebruikt, moet u eerst upgraden naar de nieuwste versie.


apt install apache2
yum install httpd

Eenmaal geïnstalleerd, kunt u de Apache- en OpenSSL-versie verifiëren waartegen Apache is gecompileerd.


httpd -V
openssl version

Start, schakel en verifieer nu de nginx-installatie.


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

Open nu het configuratiebestand van de virtuele Apache-host met uw favoriete editor.


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

en zoek de ssl_protocols richtlijn en voeg TLSv1.3 toe aan het einde van de regel, zoals hieronder weergegeven.


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

Controleer ten slotte de configuratie en laad Apache opnieuw.


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

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

Controleer of de site TLS gebruikt 1.3

Nadat u de configuratie via een webserver heeft uitgevoerd, kunt u controleren of uw site handshaking uitvoert via het TLS 1.3-protocol met behulp van Chrome-browserontwikkelingstools in de Chrome 70+-versie.

Dat is alles. U heeft het TLS 1.3-protocol ingeschakeld op uw domein dat wordt gehost op Apache- of Nginx-webservers. Als u vragen heeft over dit artikel, kunt u deze stellen in het commentaargedeelte hieronder.