Bagaimana cara instalasi SSL gratis yang didapat dari Let’s Encrypt pada VPS dengan menggunakan Zpanel/Sentora.
Artikel ini merupakan kelanjutan dari artikel Cara Mendapatkan SSL gratis dari Let’s Encrypt. Untuk itu, sebaiknya terlebih dahulu membaca artikel SSL gratis dari Let’s Encrypt sebelum melanjutkan membaca artikel ini.
Pengguna VPS yang menggunakan Zpanel atau Sentora sebagai web hosting control panel ada beberapa hal yang perlu disiapkan terlebih dahulu.
Pastikan mod_ssl sudah terinstall di VPS. Lokasi ada di /etc/httpd/conf.d/ssl.conf. Jika belum install terlebih dahulu dengan melakukan perintah berikut:
yum install mod_ssl
Setelah mod_ssl tersedia, buka file konfigurasi Apache di etc/httpd/conf.d/ssl.conf, kemudian tambahkan tanda pagar pada Listen 443 menjadi:
# When we also provide SSL we have to listen to the
# the HTTPS port in addition.
# Listen 443
Setelah selesai, masuk ke panel kontrol VPS.
Dari menu pilih Admin -> klik Module Admin -> Apache Config
Dari halaman menu Apache Config -> Scroll ke bawah dan pilih Override a Virtual Host Setting. Pilih domain yang akan di konfigurasi untuk ditambahkan SSL.
Selanjutnya setelah memilih domain dan klik select Vhost akan muncul halaman konfigurasi SSL.
Langkah berikutnya adalah:
Pada Port Override isikan dengan 443
Centang Forward Port 80 to Overriden Port.
Isikan konfigurasi berikut pada Custom Entry:.
SSLEngine on
SSLProtocol ALL -SSLv2 -SSLv3
SSLHonorCipherOrder On
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
SSLCertificateFile /etc/letsencrypt/live/domain.com/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
SSLCertificateChainFile /etc/letsencrypt/live/domain.com/chain.pem
# Keeping bellow for future upgrades.
# Requires Apache >= 2.4
# SSLCompression off
Catatan: ganti nama sertifikat yang telah dibuat sebelumnya. Nama SSL ada di folder /etc/letsencrypt/live dengan nama domain pertama pada opsi domains di file .ini misal domain.com.
Ini contoh untuk SSL domain namablogku.com
Lakukan ke semua domain yang ingin dipasangi SSL dengan kembali memilih domain di Override a Virtual Host Setting. Dan lakukan seperti langkah di atas tanpa perlu mengganti nama SSL-nya.
Setelah selesai semua, paksa supaya Zpanel atau Sentora VPS melakukan perubahan segera:
# Zpanel
php -q /etc/zpanel/panel/bin/daemon.php
# Sentora
php -q /etc/sentora/panel/bin/daemon.php
# Restart
Apache service httpd restart
Tunggu. Jika VPS dengan dengan banyak blog/artikel proses bisa lama.
Auto-renew Let’s Encrypt
Masa berlaku dari SSL dari Let’s Encrypt hanya 90 hari. Namun kita bisa membuat script bash yang dipadukan dengan cron untuk memperpanjang SSL secara otomatis jika sudah akan expire.
Pertama buat script bash-nya:
vi /etc/letsencrypt/le-renew
Isikan dengan script berikut:
#!/bin/bash
web_service=’httpd’
config_file=”/etc/letsencrypt/domain.ini”
le_path=’/opt/letsencrypt’
exp_limit=30;
if [ ! -f $config_file ]; then
echo “[ERROR] config file does not exist: $config_file”
exit 1;
fi
domain=`grep “^\s*domains” $config_file | sed “s/^\s*domains\s*=\s*//” | sed ‘s/(\s*)\|,.*$//’`
cert_file=”/etc/letsencrypt/live/$domain/fullchain.pem”
if [ ! -f $cert_file ]; then
echo “[ERROR] certificate file not found for domain $domain.”
fi
exp=$(date -d “`openssl x509 -in $cert_file -text -noout|grep “Not After”|cut -c 25-`” +%s)
datenow=$(date -d “now” +%s)
days_exp=$(echo \( $exp – $datenow \) / 86400 |bc)
echo “Checking expiration date for $domain…”
if [ “$days_exp” -gt “$exp_limit” ] ; then
echo “The certificate is up to date, no need for renewal ($days_exp days left).”
exit 0;
else
echo “The certificate for $domain is about to expire soon. Starting webroot renewal script…”
echo “Stopping $web_service”
service $web_service stop
$le_path/letsencrypt-auto certonly –standalone –agree-tos –renew-by-default –config $config_file
echo “Starting $web_service”
service $web_service start
echo “Renewal process finished for domain $domain”
exit 0;
fi
Setelah disimpan pastikan script tersebut bisa dieksekusi:
chmod +x /etc/letsencrypt/le-renew
Sekarang kita hanya perlu membuat cron yang berjalan satu minggu sekali untuk mengecek apakah SSL sudah mau expire dan jika SSL akan expire kurang dari 30 hari maka otomatis script bash akan me-renew sertifikatnya.
# Membuka crontab
crontab -e
# Isikan baris berikut
0 0 * * 0 /etc/letsencrypt/le-renew > /var/log/le-renew.log 2>&1
Untuk mengetestnya kita eksekusi saja script bashnya. Contoh outputnya sebagai berikut:
Checking expiration date for example.com…
The certificate is up to date, no need for renewal (89 days left).
Memang ribet untuk pertama kalinya, apalagi bagi yang belum terbiasa menggunakan VPS atau OS Linux. Tapi jika ada kemauan pasti ada jalan.
Awalnya saya pun juga bingung, namun akhirnya 8 blog yang ada di VPS dapat menggunakan https setelah dipasang SSL dari Let’s Encrypt.
Instalasi SSL Gratis Di VPS Dengan Zpanel Atau Sentora