SSL merupakan kepanjangan dari Secure Sockets Layer yang berguna untuk menjaga koneksi internet dengan aman dan mengamankan data yang bersifat sensitif seperti data pribadi, data transaksi dan lain-lain.
Maka dari itu website/email perlu dienkripsi oleh SSL/TLS. Disini saya akan membagikan cara install SSL Let's Encrypt pada Ubuntu Server 20.04 LTS.
Requirement:
Pastikan Anda sudah memiliki alamat website yang aktif sudah siap untuk dipasangkan SSL. Jika Anda belum memiliki website yang aktif, bisa merujuk ke link berikut ini.
A. Instalasi dan Konfigurasi
-
Update paket dan Install Certbot terlebih dahulu dengan perintah sebagai berikut:
sudo apt update sudo apt install certbot
-
Generate Grup Diffie-Helman (DH) dengan perintah:
openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
-
Buat direktori
.well-known
dan memberikan akses write pada user Apache.sudo mkdir -p /var/lib/letsencrypt/.well-known sudo chgrp www-data /var/lib/letsencrypt sudo chmod g+s /var/lib/letsencrypt
Selanjutnya buat file konfigurasi snippet berikut pada file /etc/apache2/conf-available/letsencrypt.conf
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/"
<Directory "/var/lib/letsencrypt/">
AllowOverride None
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
Require method GET POST OPTIONS
</Directory>
Kemudian buat file /etc/apache2/conf-available/ssl-params.conf
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLHonorCipherOrder off
SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"
SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"
Header always set Strict-Transport-Security "max-age=63072000"
-
Lalu aktifkan konfigurasi file diatas, pastikan Anda sudah mengaktifkan
mod_ssl
danmod_headers
dengan perintah:sudo a2enmod ssl sudo a2enmod headers
Selanjutnya aktifkan konfigurasi file SSL dengan perintah:
sudo a2enconf letsencrypt sudo a2enconf ssl-params
Aktifkan modul HTTP/2 juga:
sudo a2enmod http2
-
Reload konfigurasi Apache
sudo systemctl reload apache2
-
Lalu jalankan tool certbot dengan plugin webroot dan terbitkan sertifikat SSL nya dengan perintah:
sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.id -d www.example.id
Keterangan:
- [email protected]: Ganti dengan alamat email Anda.
- example.id: Ganti dengan alamat domain Anda
- www.example.id: Ganti dengan alamat subdomain Anda (misal: www.example.id)
Tunggu prosesnya hingga selesai, apabila tidak ada error maka akan muncul notifikasi seperti pada gambar berikut.
- Selanjutnya, silakan gantikan konfigurasi virtualhost sebelumnya menjadi berikut ini:
<VirtualHost *:80>
ServerName example.id
Redirect permanent / https://example.id/
</VirtualHost>
<VirtualHost *:443>
ServerName example.id
Protocols h2 http/1.1
<If "%{HTTP_HOST} == 'www.example.id'">
Redirect permanent / https://example.id/
</If>
DocumentRoot /var/www/example.id/public_html
ErrorLog ${APACHE_LOG_DIR}/example.id-error.log
CustomLog ${APACHE_LOG_DIR}/example.id-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/example.id/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.id/privkey.pem
# Other Apache Configuration
</VirtualHost>
Keterangan:
Ganti example.id dengan nama domain/sub domain Anda.
Pada contoh konfigurasi diatas, saya redirect dari akses www.example.id ke https://example.id. Hal ini bisa disesuaikan dengan kebutuhan Anda.
- Reload konfigurasi apache:
sudo systemctl reload apache2
B. Pengujian Hasil
Untuk cek score/grade pada SSL yang terpasang pada domain/subdomain Anda bisa melalui link berikut
Hasil grade:
Auto-renew Sertifikat SSL Let's Encrypt
Secara default masa aktif layanan SSL Let's Encrypt yakni 90 hari, apabila Anda ingin renew masa aktifnya ada dua cara secara otomatis atau manual.
Apabila renew secara otomatis, bisa memanfaatkan cron dengan contoh rule seperti berikut:
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload apache2"
Untuk menguji perpanjangan sertifikat SSL, bisa menjalankan berikut:
sudo certbot renew --dry-run
Jika tidak ada pesan error, maka perpanjangan sertifikat SSL berhasil.
Kesimpulan:
Instalasi sertifikat SSL sangat perlu dilakukan pada website atau email untuk menjaga kerentanan data privasi, transaksi, atau data lain yang bersifat rahasia. Dimana sertifikat SSL tersebut dapat melakukan enkripsi sehingga mengurangi adanya expose data privasi secara publik.
Semoga bermanfaat dan barokah.