Cara Mengaktifkan TLS 1.3 di Apache dan Nginx


TLS 1.3 adalah versi terbaru dari protokol Transport Layer Security (TLS) dan didasarkan pada spesifikasi 1.2 yang ada dengan standar IETF yang sesuai: RFC 8446. Ini memberikan keamanan yang lebih kuat dan peningkatan kinerja yang lebih tinggi dibandingkan pendahulunya.

Dalam artikel ini, kami akan menunjukkan kepada Anda panduan langkah demi langkah untuk mendapatkan sertifikat TLS yang valid dan mengaktifkan protokol versi TLS 1.3 terbaru di domain Anda yang dihosting di Apache atau server web Nginx.

Persyaratan:

  • Apache versi 2.4.37 atau lebih tinggi.
  • Nginx versi 1.13.0 atau lebih tinggi.
  • OpenSSL versi 1.1.1 atau lebih tinggi.
  • Nama domain yang valid dengan data DNS yang dikonfigurasi dengan benar.
  • Sertifikat TLS yang valid.

Instal Sertifikat TLS dari Let's Encrypt

Untuk mendapatkan Sertifikat SSL gratis dari Let's Encrypt, Anda perlu menginstal klien Acme.sh dan juga beberapa paket yang diperlukan pada sistem Linux seperti yang ditunjukkan.


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

CATATAN: Ganti example.com pada perintah di atas dengan nama domain asli Anda.

Setelah Anda memasang sertifikat SSL, Anda dapat melanjutkan lebih jauh untuk mengaktifkan TLS 1.3 di domain Anda seperti dijelaskan di bawah.

Aktifkan TLS 1.3 di Nginx

Seperti yang saya sebutkan dalam persyaratan di atas, bahwa TLS 1.3 didukung mulai dari versi Nginx 1.13. Jika Anda menjalankan Nginx versi lama, Anda harus mengupgrade ke versi terbaru terlebih dahulu.


apt install nginx
yum install nginx

Periksa versi Nginx dan versi OpenSSL yang menjadi dasar kompilasi Nginx (pastikan versi nginx setidaknya 1.14 dan openssl versi 1.1.1).


nginx -V
Contoh Keluaran

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

Sekarang mulai, aktifkan dan verifikasi instalasi nginx.


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

Sekarang buka file /etc/nginx/conf.d/example.com.conf konfigurasi nginx vhost menggunakan editor favorit Anda.


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

dan cari direktif ssl_protocols dan tambahkan TLSv1.3 di akhir baris seperti yang ditunjukkan di bawah ini


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

Terakhir, verifikasi konfigurasi dan muat ulang Nginx.


nginx -t
systemctl reload nginx.service

Aktifkan TLS 1.3 di Apache

Mulai dari Apache 2.4.37, Anda dapat memanfaatkan TLS 1.3. Jika Anda menjalankan Apache versi lama, Anda harus meningkatkan ke versi terbaru terlebih dahulu.


apt install apache2
yum install httpd

Setelah terinstal, Anda dapat memverifikasi Apache dan versi OpenSSL yang digunakan untuk mengkompilasi Apache.


httpd -V
openssl version

Sekarang mulai, aktifkan dan verifikasi instalasi nginx.


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

Sekarang buka file konfigurasi virtual host Apache menggunakan editor favorit Anda.


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

dan cari direktif ssl_protocols dan tambahkan TLSv1.3 di akhir baris seperti yang ditunjukkan di bawah ini.


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

Terakhir, verifikasi konfigurasi dan muat ulang Apache.


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

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

Verifikasi Situs Menggunakan TLS 1.3

Setelah Anda mengonfigurasi melalui server web, Anda dapat memeriksa apakah situs Anda melakukan handshaking melalui protokol TLS 1.3 menggunakan alat pengembangan browser chrome pada versi Chrome 70+.

Itu saja. Anda telah berhasil mengaktifkan protokol TLS 1.3 di domain Anda yang dihosting di server web Apache atau Nginx. Jika Anda memiliki pertanyaan tentang artikel ini, silakan bertanya di bagian komentar di bawah.