Install SSL Let’s Encrypt pada Ubuntu Server 20.04 LTS

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

  1. Update paket dan Install Certbot terlebih dahulu dengan perintah sebagai berikut:

    sudo apt update
    sudo apt install certbot
  2. Generate Grup Diffie-Helman (DH) dengan perintah:

    openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

    Tunggu proses generatenya hingga selesai.

  3. 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"
  1. Lalu aktifkan konfigurasi file diatas, pastikan Anda sudah mengaktifkan mod_ssl dan mod_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
  2. Reload konfigurasi Apache

    sudo systemctl reload apache2
  3. 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.

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

  1. Reload konfigurasi apache:
    sudo systemctl reload apache2

    B. Pengujian Hasil

Berikut hasil aksesnya :

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.

Leave a Reply