Beberapa hari yang lalu, saat mengakses salah satu blog milik saya, tiba-tiba saja muncul tulisan di halaman utama yang berbunyi, “Your connection is not Private. Attackers might be trying to steal your information from xxx.com (for example, passwords, messages, or credit cards) …..“, dengan gambar segitiga merah bertanda seru di dalamnya.
Setelah saya periksa, ternyata hal tersebut terjadi karena sertifikat SSL milik saya sudah kadaluarsa, sehingga Google melabeli blog saya tersebut sebagai situs yang tidak aman dan akan memperingatkan setiap orang yang akan mengaksesnya untuk berhati-hati.


Sejak tahun 2017, Google memang sudah melakukan hal tersebut. Mereka melabeli sebuah website yang hanya menggunakan HTTP untuk melakukan transaksi seperti meminta password atau memasukkan nomor kartu kredit sebagai web yang tidak aman.
Guna membuat blog saya menjadi “aman” kembali, maka saya harus memperbarui sertifikat SSL milik blog saya. Dan kali ini pilihan jatuh kepada Let’s Encrypt Free SSL sebagai solusinya. Untuk yang belum tahu apa itu Let’s Encrypt, itu merupakan sebuah Open CA (Certification Authority) yang menjalankan layanannya untuk manfaat publik. Let’s Encrypt ini merupakan sebuah proyek yang dijalankan oleh Internet Security Research Group (ISRG).
Alasan terkuat saya menggunakan SSL dari Let’s Encrypt adalah karena GRATIS. Alasan kedua, Let’s Encrypt sudah mendukung Wildcard Certificate dengan menggunakan protokol ACME2, jadi sekali menerbitkan sertifikat (misal: untuk *.domain.kamu), saya bisa menggunakannya untuk semua subdomain yang saya miliki (misal: test.domain.kamu).
Dan berikut ini adalah tutorial untuk men-generate Wildcard Certificate dari Let’s Encrypt yang bisa saya bagikan untuk kalian, usai saya sukses memasangnya pada server milik saya
Alat dan Bahan
- Ubuntu Server
- Koneksi Internet
- Akses ke CPanel dari domain kalian
Tahapan
- Install Certbot. Karena Certbot belum tersedia dalam repositori milik Ubuntu, maka kita perlu menambahkannya terlebih dahulu melalui terminal. Caranya:
sudo add-apt-repository ppa:certbot/certbot
Menambahkan repositori untuk certbot - Setelah repositori berhasil ditambahkan, sekarang update paket-paket yang ada di Ubuntu. Caranya:
sudo apt update
apt update - Setelah di-update, jalankan perintah berikut untuk memasang Certbot:
sudo apt install certbot
installing certbot *Pastikan kalian menggunakan certbot versi 0.22 atau di atasnya. Sebab versi certbot sebelum 0.22 tidak mendukung Wildcard Certificate.
- Certbot sudah terpasang, sekarang waktunya untukmen-generate sertifikatnya. Caranya:
sudo certbot certonly --manual -d *.domain.kamu -d domain.kamu --agree-tos --no-bootstrap --manual-public-ip-logging-ok --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory
Silakan ganti domain.kamu dengan alamat domain yang kalian miliki. Dalam contoh di atas, kita akan membuat sertifikat baik untuk *.domain.kamu dan domain.kamu
- Setelah menjalankan perintah di atas, kalian akan mendapatkan keluaran seperti berikut:
01 --server https://acme-v02.api.letsencrypt.org/directory Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator manual, Installer None Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): email.kamu@gmail.com Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Starting new HTTPS connection (1): supporters.eff.org Obtaining a new certificate Performing the following challenges: dns-01 challenge for domain.kamu dns-01 challenge for domain.kamu
Pada keterangan di atas, kalian diminta untuk memasukkan alamat email dan kemudian certbot akan memberikan challenge kepada domain kalian.
- Challenge yang diberikan adalah seperti berikut:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please deploy a DNS TXT record under the name _acme-challenge.domain.kamu with the following value: TKP7RYKPlALs-j6rfFtu-MLhUdkbjQ5sntpY_zL6odg Before continuing, verify the record is deployed. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Press Enter to Continue

challenge yang diberikan Pada tahap ini, kalian harus membuat sebuah DNS Text Record dengan nama _acme-challenge yang berisi karakter acak yang ada di atas. Kalian harus menunggu beberapa menit sebelum DNS Record tersebut terpropagasi.
- Bila gagal, kalian akan mendapatkan keluaran seperti berikut:
Press Enter to Continue Waiting for verification... Resetting dropped connection: acme-v02.api.letsencrypt.org Cleaning up challenges Failed authorization procedure. domain.kamu (dns-01): urn:ietf:params:acme:error:unauthorized :: The client lacks sufficient authorization :: Incorrect TXT record "TKP7RYKPlALs-j6rfFtu-MLhUdkbjQ5sntpY_zL6odg" found at _acme-challenge.domain.kamu IMPORTANT NOTES: - The following errors were reported by the server: Domain: domain.kamu Type: unauthorized Detail: Incorrect TXT record "TKP7RYKPlALs-j6rfFtu-MLhUdkbjQ5sntpY_zL6odg" found at _acme-challenge.domain.kamu To fix these errors, please make sure that your domain name was entered correctly and the DNS A/AAAA record(s) for that domain contain(s) the right IP address. - 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.

verifikasi gagal Kegagalan ini kemungkinan terjadi karena DNS Record tersebut belum terpropagasi, tapi kalian sudah menekan tombol continue atau juga bisa disebabkan IP dari domain yang kalian masukkan tidak ditemukan. Kalau sudah gagal seperti ini, silakan ulangi kembali prosesnya dari awal.
- Sedangkan yang berhasil, keluarannya adalah seperti berikut:
Press Enter to Continue Waiting for verification... Cleaning up challenges IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/domain.kamu/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/domain.kamu/privkey.pem Your cert will expire on 2020-03-03. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le

verifikasi berhasil dan sertifikat berhasil digenerate - Selamat, sertifikat tersebut telah berhasil digenerate. Sekarang kalian bisa menggunakan Wildcard Certificate itu untuk semua subdomain dari domain yang kalian punya.
- Sekarang kalian bisa mengkonfigurasi secara manual path sertifikat tersebut ke dalam Webserver kalian. Seperti ini contohnya:
<VirtualHost *:80> ServerAdmin webmaster@domain.kamu DocumentRoot /var/www/domainkamu/public_html serverName test.domain.kamu Redirect permanent / https://test.domain.kamu/ </VirtualHost> <VirtualHost _default_:443> ServerAdmin webmaster@domain.kamu DocumentRoot /var/www/domainkamu/public_html serverName test.domain.kamu SSLEngine On ErrorLog ${APACHE_LOG_DIR}/domainkamu_ssl-error.log CustomLog ${APACHE_LOG_DIR}/domainkamu_ssl-access.log combined SSLCertificateFile /etc/letsencrypt/live/domain.kamu/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/domain.kamu/privkey.pem <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> <Directory /var/www/domainkamu/public_html/> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> - Untuk mengujicoba konfigurasi di atas, jalankan perintah berikut:
sudo apache2ctl configtest - Jika hasilnya sudah sukses, silakan restart service apahce dengan perintah:
sudo service apache2 restart
configtest dan restart apache - Sekarang akses kembali website kalian dan sertifikat kini sudah diperbarui. Tidak ada lagi peringatan dari Google

Sertifikat berhasil diperbarui
Catatan
- Masa aktif sertifikat keluaran dari Let’s Encrypt adalah 3 bulan.
- Untuk memperbarui semua sertifikat kalian, jalankan perintah “certbot renew”.
- Untuk memverifikasi apakah DNS Record kalian sudah aktif, kalian bisa memasukkan URL berikut di browser kalian:
sslforfree.com/create?dns_txt_verify=_acme-challenge.domain.kamu

Verifikasi DNS Record
