Nama BlogKu

Catatan sederhana kegiatan blogging

Instalasi SSL Gratis Di VPS Dengan Zpanel Atau Sentora

- Posted in Internet by



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.

VPS menggunakan Zpanel atau Sentora

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

menambah ssl di sentora

Dari halaman menu Apache Config -> Scroll ke bawah dan pilih Override a Virtual Host Setting. Pilih domain yang akan di konfigurasi untuk ditambahkan SSL.

tambah ssl di domain VPS

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

contoh ssl di vps

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.

Comments