Cara Menginstall Let’s Encrypt pada Server Apache Debian 10

Memasang SSL Let’s Encrypt pada server Debian 10 dan cara mengatasi errornya.

letsencrypt

Pada artikel lain, saya menjelaskan cara memasang SSL berbayar pada VPS. Nah, kali ini saya akan coba menjelaskan cara memasang SSL free dari Let’s Encrypt pada Debian 10.

Install Certbot

  1. Seperti biasa, login ke server VPS dulu bisa dengan terminal atau Putty klo kamu pake Windows.
  2. Biasanya repository Certbot, software yang akan menghasilkan certificate SSL, belum ada dalam daftar repository Debian. Kamu perlu tambahkan dulu repository Certbot
    sudo nano /etc/apt/sources.list
    kemudian tambahkan pada baris paling bawah
    deb http://ftp.debian.org/debian buster-backports main
    kemudian save dengan menekan tombol Ctrl + X dan Y.
  3. Kemudian update paket debian
    sudo apt update
  4. Install certbot untuk apache
    sudo apt install python-certbot-apache -t buster-backports

Setting SSL Certificate

Saat ini certbot telah terinstall. Sekarang kamu bisa gunakan untuk certbot itu untuk menghasilkan certicificate SSL. Sebelum itu kamu cek dulu virtual host pada apache

  1. Cek virtual host pada apache. Virtual host apache biasanya terletak di /etc/apache2/sites-available/nama_domain.conf
    edit file itu dengan perintah
    sudo nano /etc/apache2/sites-available/nama_domain.conf
  2. Tambah baris berikut
    ServerName nama_domain
    nama_domain bisa diganti dengan domainmu. Simpan perubahan itu.
  3. Tes setting virtual host dengan perintah
    sudo apache2ctl configtest
    Jika benar maka akan muncul
Output
Syntax OK
  1. Jika setting sudah benar, maka reload apache
    sudo systemctl reload apache2

Generate SSL Certificate

Sekarang kamu bisa menggenerate SSL certificate dengan Certbot

  1. Generate certificate SSL dengan perintah
    sudo certbot --apache -d your_domain -d www.your_domain
    --apache karena web server yang saya gunakan adalah apache
    -d adalah opsi agar certificate itu valid untuk domain yang kamu sebutkan setelahnya
    nama_domain dan www.nama_domain bisa kamu ganti sesuai dengan nama domainmu.
  2. Certbot akan berkomunikasi dengan server Let’s Encrypt. Kamu akan ditanya alamat email
    Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel):
    masukkan saja alamat emailmu
  3. Pada akhir proses generate certificate SSL akan muncul catatan penting seperti berikut

IMPORTANT NOTES:

  • Unable to install the certificate
  • Congratulations! Your certificate and chain have been saved at:
    /etc/letsencrypt/live/your_domain/fullchain.pem
    Your key file has been saved at:
    /etc/letsencrypt/live/your_domain/privkey.pem
    Your cert will expire on 2020-02-19. To obtain a new or tweaked
    version of this certificate in the future, simply run certbot again
    with the “certonly” option. To non-interactively renew all of
    your certificates, run “certbot renew”
  • Your account credentials have been saved in your Certbot
    configuration directory at /etc/letsencrypt. You should make a
    secure backup of this folder now. This configuration directory will
    also contain certificates and private keys obtained by Certbot so
    making regular backups of this folder is ideal.

Dari catatan diatas, ternyata Certbot tidak bisa secara otomatis melakukan setting SSL pada virtual host apache di server saya. Mungkin saja di servermu bisa secara otomatis. Sebabnya berbagai macam. Tapi tidak masalah, kita akan melakukannya secara manual.

Walaupun Certbot tidak bisa melakukan setting secara otomatis di virtual host, tapi Certbot berhasil membuat certificat SSL. Certificate SSL itu berada di
/etc/letsencrypt/live/your_domain/fullchain.pem
dan private key untuk certificate itu ada di
/etc/letsencrypt/live/your_domain/privkey.pem

Nah, lokasi Certificate dan private key ini yang akan kita tambahkan secara manual file ke /etc/apache2/sites-available/nama_domain.conf

Menambahkan Setting SSL pada Virtual Host Apache

Setting SSL pada Apache, saya menggunakan contoh setting yang dihasilkan oleh Mozilla. Kamu bisa mencobanya di sini. Setting ini hanya sebagai referensi. Kamu bisa menghapus baris yang bermasalah jika ternyata error pada server apache di tempatmu karena ada beberapa modul apache yang harus dienable.

Sekarang kita akan mengedit file /etc/apache2/sites-available/nama_domain.conf. nama_domain.conf diganti dengan nama domain-mu

  1. Edit nama_domain.conf
    sudo nano /etc/apache2/sites-available/nama_domain.conf
  2. Masukkan blok kode ini
<VirtualHost *:443>
    ServerName nama_domain
    SSLEngine on
    SSLCertificateFile /etc/letsencrypt/live/nama_domain/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/nama_domain/privkey.pem
    DocumentRoot /var/www/nama_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

# intermediate configuration, tweak to your needs
SSLProtocol             all -SSLv3 -TLSv1 -TLSv1.1
SSLCipherSuite          ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA2$
SSLHonorCipherOrder     off
SSLSessionTickets       off

SSLUseStapling On
SSLStaplingCache "shmcb:logs/ssl_stapling(32768)"

nama_domain agar diganti sesuai nama domainmu

  1. Kemudian, kamu perlu memaksa browser agar menggunakan SSL karena secara default, web-mu masih menggunakan port 80. Nah, untuk memaksa browser menggunakan SSL, maka tambahkan kode dibawah ini di bagian paling atas file /etc/apache2/sites-available/nama_domain.conf
<VirtualHost *:80>
    ServerName nama_domain
    Redirect permanent / https://nama_domain/
</VirtualHost>

nama_domain agar diganti sesuai nama domainmu.

  1. Cek apakah kode konfigurasi sudah benar
    sudo apache2ctl configtest
  2. Reload apache
    sudo systemctl reload apache2

Cek Certbot Autorenew

SSL certificate Let’s Encrypt hanya berjangka waktu 3 bulan. Walaupun SSL certificate itu gratis tapi kompatibel pada hampir kebanyakan browser modern saat ini.

Untungnya Certbot bisa di program untuk melakukan auto renew terhadap certificate SSL. Cara untuk melakukan auto renew sebagai berikut.

  1. Untuk ngecek Cert bisa melakukan renew certificate
    sudo certbot renew --dry-run
  2. Untuk membuat cert bisa melakukan auto update secara otomatis
    sudo crontab -e
    kemudian pada baris paling bawah masukkan kode
15 3 * * * /usr/bin/certbot renew --quiet

Kode di atas artinya, certbot akan melakukan auto renew certificate pada jam 3.15 am setiap hari.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: