Kembali
Gambar Unggulan dari Pos Cara memasang ZeroSSL + Renew Otomatis di Netlify dan BunnyCDN

Cara memasang ZeroSSL + Renew Otomatis di Netlify dan BunnyCDN

Daftar Isi

Pembuka

Artikel kali ini akan membahas tentang Cara memasang ZeroSSL + Renew secara Otomatis di Netlify dan BunnyCDN.

Blog ini telah menggunakan ZeroSSL sebagai Sertifikat SSL nya dalam bentuk Wildcard. Gak percaya? Silahkan Anda lihat sendiri sertifikat SSL di Blog ini atau kunjungi domain saya, yakni franqois.id, lalu lihat sertifikat nya.

Kendala saat pemasangan nya adalah tidak banyak penyedia yang mendukung ZeroSSL ini, kebanyakan hanya mendukung Let’s Encrypt saja.

Sehingga saya perlu menggunakan acme.sh untuk menerbitkan/memperbarui Sertifikat SSL, lalu saya melakukan Request ke Server API nya Netlify dan BunnyCDN untuk memasangkan Sertifikat SSL nya menggunakan cURL. Terlihat sederhana, bukan? Tapi, sebenarnya itu tidak sesederhana dan semudah yang Anda bayangkan.

Berkat bantuan dari beberapa referensi, akhirnya saya dapat memasangkan Sertifikat SSL dan membuat nya dapat diperbarui secara otomatis. Nah, makanya saya buat artikel ini, siapa tahu Anda mungkin tertarik atau merasa tertantang untuk memasang Sertifikat SSL dari ZeroSSL ini ke Web/Blog Anda bila dibandingkan dengan Let’s Encrypt. Semoga bermanfaat bagi Anda 🙂

Di sini, Anda akan mempelajari untuk menerbitkan Sertifikat SSL yang bisa Anda dapatkan dari ZeroSSL, baik jangkauan nya untuk 1 Domain, Banyak Domain atau Subdomain, atau Wildcard dengan menggunakan acme.sh sebagai perkakasnya, setelah itu Anda akan memasang sertifikat SSL dengan memanggil Server API milik Bunny.net dan Netlify memakai cURL.

Bagi yang belum tahu, acme.sh adalah sebuah perkakas klien untuk Protokol ACME, yang bertujuan sebagai alat bantu untuk menerbitkan/memperbarui/mencabut atau mengelola Sertifikat SSL. Perkakas tersebut dibuat dengan menggunakan Shell dan Kompatibel di hampir semua Sistem Operasi yang berbasis *nix.

Sedangkan ZeroSSL adalah salah satu CA (Certificate Authority) atau PSrE (Penyelenggara Sertifikat/Penyelenggara Sertifikat Elektronik) yang menerbitkan/mengelola/mencabut Sertifikat SSL untuk Internet. Ia merupakan salah satu produk dari apilayer.

Tunggu, ZeroSSL Gratis? Bukannya bayar?

Iya, untuk saat ini ZeroSSL memanglah gratis, bahkan Anda juga bisa menerbitkan Sertifikat SSL Wildcard nya secara gratis dengan jumlah yang tidak terbatas, dengan kunci RSA maupun ECC.

Tapi, itu hanya berlaku jika Anda membuat sertifikat SSL melalui Server ACME nya, bukan melalui Situs Web ataupun REST API nya. Semua sertifikat yang diterbitkan dengan Protokol ACME akan memiliki masa berlaku selama 90 hari kedepan.

Serta, jika Anda membuat/menerbitkan sebuah Sertifikat SSL menggunakan Protokol ACME dan Server ACME nya, maka kuota SSL yang ada di Situs Web tidak akan bertambah sama sekali.

Infonya dari mana? Salah satu infonya berasal dari dokumentasinya.

Tapi, sebetulnya jika kamu lebih teliti lagi, di Halaman “Pricing” nya pun kamu akan menemukan tulisan “90-Day ACME Certs” yang bersebelahan dengan Simbol “tidak terbatas”, yang artinya kamu dapat menerbitkan Sertifikat SSL dari Server ACME nya dalam bentuk apapun secara gratis tanpa batasan jumlah.

Nah, sekarang sudah paham, kan? Jadi, Anda tidak perlu jadi orang kaya atau berduit banyak dulu biar bisa menerbitkan Sertifikat SSL dari ZeroSSL, kecuali jika Anda ingin Layanan Dukungan, Akses REST API nya, serta sertifikat SSL dengan masa berlaku selama 1 Tahun, Anda bisa berlangganan yang berbayar.

Kenapa ZeroSSL? Dan, kenapa gak Let’s Encrypt aja?

Mengakar pada Sectigo/COMODO CA

Sertifikat SSL dari ZeroSSL bergantung pada Sectigo (sebelumnya dikenal sebagai “COMODO CA”/“COMODO” saja) sebagai Sertifikat Akar, yang telah didukung dan dipercaya oleh mayoritas perangkat lunak sejak lama.

Informasi mengenai sertifikat akarnya sebagai berikut:

Ini artinya, hampir semua perangkat lunak bisa menggunakan Sertifikat ini, bahkan oleh perangkat lunak versi lama sekalipun (cth. Internet Explorer 6.0+, Mozilla Firefox 1.0+, Opera 6.1+, AOL 5+, Peramban pada Blackberry 4.3.0+, Android 1.5+, dll)

Untuk lebih lanjut, Anda bisa kunjungi halaman daftar kompatibilitas nya.

Akar dari Sertifikat Let’s Encrypt (DST Root X1) memang mendukung dan dipercaya oleh mayoritas perangkat lunak, termasuk Windows XP.

Namun, sebelumnya sempat ada “kegundahan” karena Akar yang mereka gunakan sudah mau habis masa berlakunya, sehingga ini berimbas pada perangkat lama, terutama untuk Android 7.1.1 kebawah.

Tapi, masalah ini selesai untuk Android dengan melakukan Cross-Signing antara akar “DST X1 Root” (dari “IdenTrust”) dan akar yang baru, yakni “ISRG X1 Root” (dari “Internet Security Research Group”).

Hal ini bukan berarti masalah sudah selesai sepenuhnya, kemungkinan besar bahwa ada perangkat lain yang tidak kompatibel dengan Akar “ISRG X1 Root” ini setelah Akar pertama habis masa berlaku nya, selain Windows XP SP3 dan Android 2.3.6 (atau di atasnya). Jika Anda ingin melihat kompatibilitasnya, silahkan kunjungi halaman ini.

Jadi, jika Anda ingin sebuah Sertifikat SSL Gratis untuk Web/Blog atau Aplikasi Anda serta dapat diakses oleh hampir semua orang, mungkin ZeroSSL bisa menjadi pilihan yang terbaik buat Anda.

Tidak (atau Belum?) menerapkan Rate Limit

Sampai artikel ini diterbitkan, ZeroSSL tidak (atau Belum?) menerapkan Rate Limit atau batasan penerbitan Sertifikat SSL, tidak seperti Let’s Encrypt yang telah menerapkan nya. Gak percaya? Silahkan Anda kunjungi halaman komparasinya (Baca bagian “ACME” nya) atau halaman dokumentasinya.

Jadi, Anda tidak perlu takut jika Anda mengalami kegagalan menerbitkan sertifikat SSL dengan alasan apapun, karena Rate Limit tidak ditentukan di sana.

Persyaratan Perangkat Lunak

Di artikel ini, Anda akan mempelajari menerbitkan Sertifikat SSL dengan menggunakan acme.sh yang (harusnya) hanya kompatibel dengan Sistem Operasi berbasis *nix/mirip Unix, termasuk tapi tidak terbatas pada GNU/Linux, macOS, BSD dan Android.

Maka, persyaratan perangkat lunak yang harus Anda penuhi bagi pengguna Sistem Operasi agar bisa menggunakan acme.sh serta agar dapat mengikuti artikel ini secara keseluruhan. Berikut di bawah ini adalah persyaratannya:

Untuk Pengguna GNU/Linux, macOS, BSD dan Sistem Operasi berbasis *nix lainnya

tl;dr

Jika terlalu panjang, maka persyaratan nya adalah sebagai berikut:

  • OpenSSL (atau LibreSSL?)
  • cURL
  • Cron
  • Socat (Opsional, karena tidak saya bahas)

Sistem Operasi berbasis Unix/Unix-like (*nix) seperti GNU/Linux, macOS, dan BSD, sebetulnya tidak usah ditanya, mereka sudah pasti kompatibel dengan acme.sh karena aplikasi tersebut memang dirancang untuk *nix.

Asal punya OpenSSL (atau LibreSSL?), cURL dan Cron, maka acme.sh dapat dijalankan sebagaimana mestinya, serta Anda dapat mengikuti Artikel ini secara keseluruhan. Wget juga bisa Anda gunakan, di artikel ini saya bahas hanya untuk mengunduh dan menginstal acme.sh saja.

Selain itu, Anda juga dapat meng-instal Socat (Socket Cat) agar acme.sh dapat dijalankan dalam “Standalone Mode”, tapi itu tidak saya bahas di dalam artikel ini.

Untuk Pengguna Windows

tl;dr

Jika terlalu panjang, maka persyaratan nya adalah sebagai berikut:

  • Memiliki Akses ke Lingkungan Unix/Unix-like: (Pilih salah satu caranya)
    • Mengaktifkan fitur WSL (Windows Subsystem for Linux) untuk Windows 10 atau di atasnya
    • Mesin Virtual atau Kontainer dengan Sistem Operasi berbasis Unix/Unix-like (disarankan GNU/Linux)
    • Mengakses Server Anda yang menggunakan Sistem Operasi *nix dengan menggunakan Klien SSH
  • Persyaratan Perangkat Lunak pada WSL, Mesin Virtual/Kontainer atau pada Server bisa mengikuti persyaratan untuk Sistem Operasi *nix

Jika Anda menggunakan Windows, maka Anda perlu untuk mengakses Lingkungan Unix/Unix-like (*nix), Anda bisa gunakan cara apapun untuk melakukan nya. Jika Anda menggunakan Windows 10 (atau di atasnya), maka Anda bisa gunakan fitur WSL (Windows Subsystem for Linux) agar Anda bisa menggunakan Sistem Operasi GNU/Linux di dalam Windows.

Atau, jika Anda tidak ingin/tidak bisa menggunakan WSL, maka Anda juga bisa memiliki Mesin Virtual/Kontainer dan Instal, lalu gunakan Sistem Operasi berbasis Unix/Unix-like (seperti GNU/Linux) di dalam Mesin tersebut.

Atau, Anda juga bisa akses Server Anda yang menggunakan Sistem Operasi *nix untuk mengikuti artikel ini dengan menggunakan Klien SSH tanpa perlu mengorbankan kinerja pada Komputer/Laptop Anda.

Ketika Anda sedang memakai WSL, Mesin Virtual/Kontainer atau Server, maka Anda bisa mengikuti persyaratan perangkat lunak untuk Sistem Operasi *nix. Jadi pastikan jika cURL, OpenSSL (atau LibreSSL?) dan Cron sudah ada di dalam Sistem WSL (Biasanya ada), di dalam Mesin Virtual/Kontainer atau di dalam Server Anda.

Untuk Pengguna Android (tidak perlu akses root)

tl;dr

Jika terlalu panjang, maka persyaratan nya adalah sebagai berikut:

  • Tidak perlu Akses root atau perangkat tidak perlu dalam keadaan ter-root. Jika demikian, ya tidak masalah
  • Menggunakan Sistem Operasi Android versi 7.0 atau di atasnya, sebagai syarat untuk menggunakan Termux. Jika di bawah 7.0, maka Anda bisa gunakan versi lama nya, tapi saya tidak bisa menjamin bahwa Anda akan bisa mengikuti artikel ini kedepan nya, karena saya belum mengujinya, mungkin saja caranya akan berbeda dibandingkan dengan yang saya bahas di sini
  • Terinstalnya Termux di dalam Perangkat Android Anda. Bisa Anda unduh di F-Droid resminya, jangan unduh di Google Play Store! (Alasan nya di sini)
  • Persyaratan di Termux setelah di-instal sebagai berikut:
    1. Perbarui semua Paket yang ada di Termux dengan perintah: pkg update
    2. Persyaratan Perangkat Lunak pada Termux bisa mengikuti persyaratan untuk GNU/Linux. Tapi, Anda juga dapat meng-instal semua keperluan nya dengan perintah: pkg install curl wget openssl-tools cronie termux-services, lalu mulai ulang Termux jika berhasil
    3. Aktifkan Layanan (Service) Cron di Latar Belakang dengan Perintah: sv-enable crond
    4. Pastikan Termux bisa mengakses Penyimpanan Internal atau Eksternal pada perangkat Anda, agar Anda bisa berbagi penyimpanan pada Termux. Referensi: “Internal and external storage” dari Wiki Termux (Baca dan pahami mulai dari bagian “Access shared and external storage”)

Jika Anda menggunakan Android, maka Anda bisa gunakan Termux untuk itu, selalu gunakan versi terbaru untuk pengalaman yang lebih nyaman. Sebelum mengunduh, pastikan bahwa Android yang Anda gunakan sudah versi 7.0 atau di atas nya, sebagai syarat untuk menggunakan Termux.

Tapi jika versi Android Anda berada di bawah 7.0 (terutama versi 5 atau 6), maka Anda bisa gunakan versi lama nya, namun saya tidak bisa menjamin bahwa Anda akan bisa mengikuti artikel ini kedepan karena versi pustaka yang digunakan masih lama dan saya belum mengujinya, serta mungkin caranya akan berbeda dibandingkan dengan yang saya bahas di sini.

Setelah itu, pastikan Termux tidak diunduh melalui Google Play Store, melainkan melalui F-Droid nya.

Kenapa? Karena Termux sudah tidak lagi diperbarui di Google Play Store sejak 02 November 2020 yang lalu, untuk alasannya silahkan Anda baca di sini.

Ketika Anda sedang menggunakan Termux, maka Anda bisa mengikuti persyaratan perangkat lunak untuk Sistem Operasi berbasis *nix. Jadi pastikan jika cURL, OpenSSL, dan Cron sudah ada di dalam Termux Anda.

Tapi sayangnya, di dalam Termux belum terinstal OpenSSL dan Cron secara bawaan. Jadi setelah Anda Instal Termux, maka hal yang perlu Anda lakukan adalah perbarui semua paket-paket yang ada, lalu instal paket-paket yang diperlukan dengan perintah berikut:

pkg update
pkg install curl wget openssl-tools cronie termux-services

Kalau perlu, ganti Repository pada Termux dengan perintah termux-change-repo dan gunakan Repository Resmi dari Termux terlebih dahulu agar mendapatkan versi terbaru, barulah Anda eksekusikan perintah di atas.

Setelah itu, mulai ulang Termux Anda dengan eksekusi perintah exit, lalu buka lagi Termux nya agar perubahannya bisa diterapkan. Setelah Termux dibuka lagi, aktifkan Cron dari latar belakang dengan meng-eksekusi perintah sv-enable crond.

Selain itu, pastikan Termux bisa mengakses Penyimpanan Internal dan Eksternal pada perangkat Anda. agar Anda bisa berbagi penyimpanan pada Termux. Silahkan Anda baca halaman dokumentasinya dan pahami mulai dari bagian “Access shared and external storage”.

Semua hal di atas bisa Anda lakukan tanpa perlu akses root sedikitpun dan perangkat tidak perlu dalam keadaan ter-root, jadi Anda tidak perlu khawatir akan kehilangan garansi pada perangkat Anda.

Sanggahan

Sebelum Anda lanjut, saya peringati bahwa Artikel/Tutorial yang dibahas ini sangatlah “Panjang x Lebar”, jika Anda tidak sanggup membaca Artikel yang terlalu panjang, maka saya sarankan cari Artikel lain yang membahas ini secara sederhana, jangan paksakan diri Anda kecuali jika Anda ingin belajar.

Meskipun artikel ini Panjang x Lebar, saya usahakan agar semuanya saya bahas dalam langkah-demi-langkah, sehingga mudah dipahami oleh Anda.

Jika Anda mengalami kesulitan navigasi, silahkan Anda gunakan tombol CTRL+F, lalu isi dengan bagian atau teks yang ingin Anda cari.

Saya usahakan agar pembahasan di artikel ini bisa diterapkan/diikuti oleh hampir semua pengguna Sistem Operasi, termasuk tapi tidak terbatas pada Sistem Operasi Windows dan hampir semua Sistem Operasi berbasis *nix, seperti Sistem Operasi yang menggunakan Kernel Linux (cth. GNU/Linux, Android, Alpine Linux, Void Linux, dll), macOS, BSD, dan Sistem Operasi *nix lainnya.

Namun, bukan berarti Anda bisa mengikuti semuanya meskipun saya berusaha agar ini bisa diikuti oleh hampir semua Sistem Operasi, karena saya belum mencoba di Sistem Operasi selain GNU/Linux, Windows dan Android, sehingga saya tidak berani menjamin nya.

Jadi, mohon perhatian dan pengertian nya, jika Anda melanjutkan berarti Anda sudah memahami nya. Terima kasih dan selamat melanjutkan 😊

Sebelum menerbitkan Sertifikat SSL

Sebelum menerbitkannya, Anda perlu mengikuti beberapa poin pembahasan terlebih dahulu. Poin-poin akan saya bahas dalam langkah-demi-langkah.

Jadi, harap Anda jangan melewati satu langkahpun, kecuali jika ada catatan yang mengizinkannya.

Atau, Anda juga bisa lewati bagian ini jika Anda sudah pernah mendaftarkan akun ZeroSSL, meng-install dan konfigurasi acme.sh, serta melakukan pengaitan akun ZeroSSL dengan acme.sh sebelumnya.

Membuat Akun ZeroSSL dan mendapatkan Kredensial EAB nya

Catatan:

Jika Anda belum mempunyai Akun nya dan ingin menggunakan acme.sh tanpa harus mendaftarkan akun ZeroSSL nya, lewati ini dan langsung lanjut saja.

Sebelum Anda menerbitkan Sertifikat SSL nya, maka Anda disarankan untuk mendaftar akun ZeroSSL nya terlebih dahulu melalui Situs Webnya.

Setelah mendaftar, Anda tidak perlu membuat/menerbitkan Sertifikatnya di sana, melainkan Anda hanya perlu Kredensial EAB (External Account Binding) yakni EAB KID dan EAB HMAC Key nya saja. Langkah-langkahnya sebagai berikut:

  1. Daftar Akun ZeroSSL nya di sana dan Login setelah itu (Atau, Anda hanya perlu Login saja jika Anda sudah pernah mendaftar akun sebelumnya)
  2. Pada Dasbor ZeroSSL, klik Developer
  3. Setelah itu, pada bagian EAB Credentials for ACME Clients, klik Button Generate
  4. Simpan EAB KID dan EAB HMAC Key yang telah dihasilkan itu dengan baik, nanti akan digunakan lagi untuk acme.sh
  5. Setelah menyimpannya, Anda tinggal klik Button Done dan Selesai

Jika Anda tidak memahami langkah-langkah di atas, maka Anda dapat melihat Cuplikan Layar berikut yang cukup menyesuaikan dengan langkah-langkah di atas: (Silahkan perbesar gambarnya dengan mengkliknya)

Setelah Kredensial EAB dibuat, ya sudah lanjut saja ke langkah berikutnya, yakni Instal acme.sh, Anda sama sekali tidak perlu menerbitkan Sertifikat SSL nya di sana.

Instal acme.sh

Setelah mendaftar akun ZeroSSL, salah satu yang perlu Anda lakukan adalah meng-instal acme.sh terlebih dahulu di dalam Sistem Operasi Anda.

Tidak perlu menggunakan Akun Administrator atau root untuk meng-instalnya, atau tidak perlu dieksekusikan melalui perintah sudo, cukup gunakan saja akun Anda, seperti biasanya. (Bahkan, lebih baik gini)

Cara meng-instalnya adalah dengan meng-eksekusikan salah satu perintah berikut:

Dengan cURL:

curl https://get.acme.sh | sh -s email=aku@contoh.com

Atau, dengan GNU Wget:

wget -O -  https://get.acme.sh | sh -s email=aku@contoh.com

Ganti aku@contoh.com dengan Alamat Surel Anda, jangan lupa dimasukkan. Tapi jika Anda lupa memasukkan/tidak atau salah memasukkan alamat surel saat meng-instalnya, maka Anda dapat eksekusi perintah di bawah ini setelah terinstal:

cp ${HOME}/.acme.sh/account.conf ${HOME}/.acme.sh/account.conf.1 ## Backup dulu
sed -i '/ACCOUNT\_EMAIL\=/d' ${HOME}/.acme.sh/account.conf ## Hapus Variabel `ACCOUNT_EMAIL` yang sudah ada
printf "ACCOUNT_EMAIL='aku@contoh.com'\n" >> ${HOME}/.acme.sh/account.conf

Ganti aku@contoh.com dengan Alamat Surel Anda.

Setelah selesai instal, pastikan bahwa acme.sh dapat dieksekusi dengan baik dengan mengetikkan acme.sh --version di dalam Terminal, lalu tekan tombol “Enter”.

Jika dapat dieksekusi dengan baik, maka akan tampil versi dari acme.sh dan selamat Anda telah meng-instalnya dengan benar.

Jika tidak, gunakan perintah source untuk memperbarui Shell (cth. source ${HOME}/.bashrc atau . ${HOME}/.bashrc), kalau masih tidak bisa juga, maka Anda perlu memasukkan direktori acme.sh kedalam variabel PATH, dengan salah satu cara berikut:

Untuk pengguna GNU Bash:

cp ${HOME}/.bashrc ${HOME}/.bashrc.1  ## Backup dulu
echo 'PATH="${HOME}/.acme.sh:${PATH}" && export PATH' >> ${HOME}/.bashrc
echo 'LE_WORKING_DIR="${HOME}/.acme.sh" && export LE_WORKING_DIR' >> ${HOME}/.bashrc
chmod +x ${HOME}/.acme.sh/acme.sh
. ${HOME}/.bashrc

Untuk pengguna Zsh:

cp ${HOME}/.zshrc ${HOME}/.zshrc.1  ## Backup dulu
echo 'PATH="${HOME}/.acme.sh:${PATH}" && export PATH' >> ${HOME}/.zshrc
echo 'LE_WORKING_DIR="${HOME}/.acme.sh" && export LE_WORKING_DIR' >> ${HOME}/.zshrc
chmod +x ${HOME}/.acme.sh/acme.sh
. ${HOME}/.zshrc

Bagaimana untuk pengguna Shell selain yang disebutkan di atas seperti fish, tcsh (TENEX C Shell), dan Shell lain nya?

Solusinya adalah ganti ${HOME}/.bashrc atau ${HOME}/.zshrc di atas menjadi berkas yang memiliki fungsi yang sama dengan nya, seperti fish yang menggunakan berkas ${HOME}/.config/fish/config.fish atau tcsh yang menggunakan berkas ${HOME}/.tshrc, sesuaikan saja dengan Shell yang Anda gunakan.

Berkas ${HOME}/.profile mungkin bisa dijadikan alternatif karena biasanya itu digunakan oleh banyak Shell seperti bash (GNU Bash), sh (Bourne shell), dash (Debian Almquist shell), dan lain-lain nya, namun berkas tersebut mungkin tidak akan terbaca oleh beberapa Shell seperti Zsh atau GNU Bash jika sudah ada berkas ${HOME}/.bash_profile.

Verifikasi DNS di acme.sh

Agar Sertifikat SSL dapat diterbitkan melalui Protokol ACME, maka pengguna diperlukan melakukan verifikasi. Salah satunya adalah dengan verifikasi DNS.

Verifikasi DNS merupakan sebuah metode yang menggunakan pengaturan DNS Otoritatif pada Domain untuk memverifikasi Kepemilikan Domain sebelum sertifikat SSL diterbitkan/diperbarui.

Verifikasi seperti ini tidak memerlukan keberadaan Web Server atau tidak perlu mengakses konten apapun (cth. Mengakses http://domain.com/.well-known/.acme-challenge-xxxxxxxxxxxx) untuk itu, sehingga Anda bisa menerbitkan nya di mana saja dan di perangkat apa saja (termasuk Ponsel Pintar, Komputer PC, Laptop, dll), tanpa harus mempunyai/menyewa sebuah Server terlebih dahulu.

Ini juga sebagai syarat agar Anda dapat menerbitkan sertifikat SSL untuk semua Subdomain Anda (Wildcard SSL) dengan mudah.

Selain itu, karena Anda ingin memasang sertifikat SSL di Penyedia Web yang sedang saya bahas di artikel ini, yakni Netlify dan BunnyCDN, serta Anda melakukan nya di dalam perangkat seperti Komputer PC, Laptop dan Ponsel Pintar Anda atau di dalam perangkat selain Server, maka metode verifikasi seperti ini wajib Anda pelajari.

Namun, agar acme.sh dapat melakukan verifikasi DNS secara otomatis saat menerbitkan dan memperbarui sertifikat SSL nya, maka acme.sh harus dapat mengakses dan merubah DNS Record di dalam Domain milik Anda dengan mengakses Akun Penyedia DNS Otoritatif milik Anda.

Untuk itu, Anda perlu memberikan acme.sh sebuah izin untuk mengaksesnya dengan memberinya sebuah Token, Kunci API atau bahkan Nama Pengguna dan Kata Sandi untuk mengakses akun tertentu.

Untuk Pengguna DNS Otoritatif Cloudflare

Jika Anda menggunakan Cloudflare sebagai DNS Otoritatif untuk Domain Anda, Anda tinggal buat sebuah API Token (CF_Token) dan dapatkan Account ID (CF_Account_ID) nya, jika berkenan, Anda juga bisa mendapatkan Zone ID (CF_Zone_ID) nya juga agar acme.sh hanya menargetkan ke 1 Domain Utama saja secara spesifik.

Untuk membuat API Token nya, silahkan Anda baca dokumentasinya, di sana sudah dijelaskan secara lengkap tentang bagaimana cara membuat API Token nya.

Jika belum jelas, saya bahas saja caranya di sini. Caranya sebagai berikut:

  1. Pastikan Anda sudah login terlebih dahulu menggunakan akun Cloudflare Anda dengan mengunjungi Halaman Dasbor nya. Udah? Kalo gitu, Anda bisa lanjut
  2. Jika Anda sudah sampai di halaman dasbor nya: a. Klik pada Ikon Orang di pojok kanan atas -> b. Lalu, klik My Profile -> c. Setelah itu, klik pada tab API Tokens. Atau sederhananya, silahkan klik di sini
  3. Setelah Anda memasukki bagian API Token, klik pada Button Create Token (Seperti pada cuplikan berikut)

  1. Saat proses membuat Token, Anda akan memilih templat yang digunakan untuk membuat Token nya. Maka dari itu, gunakan saja templat Edit zone DNS dengan meng-klik Button Use this template di sebelahnya (Seperti pada cuplikan berikut)

  1. Setelah menentukan templat nya, nanti Anda akan diminta untuk melengkapi informasi yang ada di sana. Lengkapi informasi berikut ini:

    • Token Name: Itu merupakan nama Token yang ingin Anda buat. Secara asali, nama Token menggunakan nama templatnya, Anda bisa rubah itu sesuka Anda dengan meng-klik pada ikon Pensil di sebelah namanya
    • Permissions: Itu merupakan perizinan untuk Token yang Anda buat nantinya, karena menggunakan templat Edit zone DNS, maka seharusnya Informasi tersebut sudah dilengkapi. Pastikan itu sudah diisi dengan Zone, DNS dan Edit, kalau sudah, Anda bisa lewati ini.
    • Zone Resources: Itu merupakan cakupan Zona (Zone) untuk Token ini. Jika Anda ingin Token yang Anda buat itu dapat mencakup semua Domain yang telah Anda tambahkan di Cloudflare, maka pastikan pilih: (salah satu)
      • Include dan All zones
      • Include, All zones from an account, lalu pilih Akun yang ingin Anda cakup
    • Client IP Address Filtering: Jika Anda ingin mengatur/menyaring Alamat IP Klien/Pengguna API, maka Anda bisa atur itu. Jika tidak, maka sebaiknya lewati saja.
    • TTL: Atur itu jika Anda ingin Token yang Anda buat memiliki masa berlaku, jika tidak maka sebaiknya lewati saja
  2. Jika Anda sudah mengisi semua informasi nya, klik pada Button Continue to summary

    Kira-kira untuk no. 4 dan 5, cuplikan nya akan menjadi seperti berikut:

  1. Di sana Anda akan melihat kesimpulan dari Token yang ingin Anda buat, jika merasa yakin, silahkan klik pada Button Create Token (Seperti pada cuplikan berikut)

  1. Setelah itu, kodenya akan tampil di sana. Salinkan API Token tersebut dengan mengklik pada Button Copy, lalu simpan itu baik-baik karena kode tersebut tidak akan tampil lagi, serta pastikan bahwa tidak ada satupun orang lain yang mengetahuinya kecuali dengan seizin Anda. Selain itu, Anda juga dapat menguji nya di sana untuk memastikan apakah kode terebut bekerja atau tidak.

Nah, setelah API Token dibuat, maka Anda perlu mendapatkan Account ID nya minimal, kalau perlu bisa dapatkan Zone ID nya juga.

Untuk mendapatkan kedua itu, Anda tinggal ke Halaman Dasbor Cloudflare, pilih Domain nya, lalu gulirkan kebawah, nanti akan ketemu Informasi mengenai Account ID dan Zone ID, seperti di bawah ini:

Nah, setelah semuanya berhasil didapat, maka Anda tinggal masukkan saja semua Informasinya ke dalam variabel. Dengan cara berikut:

### Di bawah ini adalah Informasi yang wajib dimasukki
CF_Token="API_TOKEN_KAMU_DI_SINI" && export CF_Token
CF_Account_ID="ACCOUNT_ID_KAMU_DI_SINI" && export CF_Account_ID

### Anda juga dapat memasukkan "Zone ID" jika Anda ingin acme.sh menargetkan hanya
### untuk 1 Domain Utama saja secara spesifik, tapi ini bukanlah hal yang wajib, jadi sebaiknya tidak usah saja
CF_Zone_ID="ZONE_ID_KAMU_DI_SINI" && export CF_Zone_ID

Atau, dengan cara berikut:

### Di bawah ini adalah Informasi yang wajib dimasukki
export CF_Token="API_TOKEN_KAMU_DI_SINI"
export CF_Account_ID="ACCOUNT_ID_KAMU_DI_SINI"

### Anda juga dapat memasukkan "Zone ID" jika Anda ingin acme.sh menargetkan hanya
### untuk 1 Domain Utama saja secara spesifik, tapi ini bukanlah hal yang wajib, jadi sebaiknya tidak usah saja
export CF_Zone_ID="ZONE_ID_KAMU_DI_SINI"

Udah itu aja, jika Anda menggunakan Cloudflare dan sudah memasukkan Informasi-informasi di atas, maka Anda hanya perlu langsung melanjutkan ke langkah berikutnya saja.

Untuk Pengguna Netlify DNS

Jika Anda menggunakan Netlify sebagai DNS Otoritatif untuk Domain Anda, Anda tinggal buat sebuah Personal Access Token (NETLIFY_ACCESS_TOKEN) nya.

Ngomong-ngomong, selain bisa untuk Verifikasi DNS, Token ini bisa Anda gunakan untuk memasang sertifikat SSL nya nanti. Jadi, setelah Anda membuatnya, simpanlah Token tersebut dengan baik agar bisa digunakan nanti.

Cara membuatnya sebagai berikut:

  1. Anda bisa langsung masuk ke sini, lakukan login terlebih dahulu jika diminta.
  2. Klik pada Button New access token di Bagian Personal access tokens

  1. Masukkan Nama/Deskripsi mengenai Token nya
  2. Setelah itu, klik pada Button Generate untuk menghasilkan Access Token nya

  1. Setelah Access Token tampil, simpan itu baik-baik, karena Access Token tersebut tidak bisa tampil lagi dan itu akan digunakan kembali, serta pastikan bahwa tidak ada orang lain yang mengetahuinya
  2. Klik pada Button Done“jika merasa sudah selesai

Jika Anda tidak memahami langkah-langkah di atas, maka Anda dapat melihat Cuplikan Layar berikut yang cukup menyesuaikan dengan langkah-langkah di atas: (Silahkan perbesar gambarnya dengan mengklik nya)

Nah, setelah berhasil didapat, maka Anda tinggal masukkan saja semua Informasinya ke dalam variabel. Dengan cara berikut:

NETLIFY_ACCESS_TOKEN="ACCESS_TOKEN_KAMU_DI_SINI" && export NETLIFY_ACCESS_TOKEN

Atau, dengan cara berikut:

export NETLIFY_ACCESS_TOKEN="ACCESS_TOKEN_KAMU_DI_SINI"

Udah itu aja, jika Anda menggunakan Netlify dan sudah memasukkan Informasi-informasi di atas, maka Anda hanya perlu langsung melanjutkan ke langkah berikutnya saja.

Untuk Pengguna DNS Otoritatif lain

Jika Anda menggunakan Layanan DNS Otoritatif selain Cloudflare dan Netlify DNS, seperti Hurricane Electric Free DNS, Constellix, NS1, ClouDNS, Amazon Route 53, dll, maka Anda perlu membaca halaman dokumentasinya.

Karena setiap Penyedia DNS Otoritatif mempunyai cara yang berbeda-beda untuk mengaksesnya. Jadi, silahkan ikuti yang ada di dokumentasinya.

Jika sudah, silahkan lanjut ke langkah berikutnya.

Registrasi Akun melalui acme.sh

Secara bawaan, acme.sh menggunakan ZeroSSL sebagai CA (Certificate Authority) nya, jadi jika Anda adalah orang yang pertama kali menggunakan acme.sh, silahkan registrasikan akun ZeroSSL yang telah Anda buat terlebih dahulu ke Server ACME nya menggunakan acme.sh dengan perintah berikut:

acme.sh --register-account --eab-kid EAB_KID_KAMU_DI_SINI --eab-hmac-key EAB_HMAC_KEY_KAMU_DI_SINI

Ganti EAB_KID_KAMU_DI_SINI dan EAB_HMAC_KEY_KAMU_DI_SINI dengan “EAB KID” dan “EAB HMAC Key” yang telah kamu simpan sebelumnya.

Atau, jika Anda belum pernah daftar akun ZeroSSL sama sekali dan ingin menggunakan acme.sh tanpa harus mendaftarkan akun ZeroSSL dari Web, maka Anda dapat eksekusi perintah berikut:

acme.sh --register-account

Keluaran nya akan seperti di bawah ini:

[Sel 10 Agu 2021 05:31:16  WIB] Create account key ok.
[Sel 10 Agu 2021 05:31:16  WIB] No EAB credentials found for ZeroSSL, let's get one
[Sel 10 Agu 2021 05:31:17  WIB] Registering account: https://acme.zerossl.com/v2/DV90
[Sel 10 Agu 2021 05:31:20  WIB] Registered
[Sel 10 Agu 2021 05:31:20  WIB] ACCOUNT_THUMBPRINT='f4qxxxxxxxxxxxxxxxxx_xxxxxxx-xxxxxxxxx_xxxx'
Perhatian !

Dengan mengeksekusi perintah di atas, itu bukan berarti Anda telah mendaftarkan akun ZeroSSL yang kemudian bisa Anda gunakan untuk login ke dalam Situs Web ZeroSSL nya.

Jika Anda ingin mengelola sertifikat tersebut di Web nya, maka saya sarankan agar Anda membuat akunnya terlebih dahulu melalui Situs Web nya, caranya bisa Anda baca di langkah pertama, lalu kaitkan Kredensial EAB nya di acme.sh.

Anda bisa Simpan ACCOUNT_THUMBPRINT nya dengan baik, barangkali suatu saat nanti Anda ingin menjalankan acme.sh dalam “Stateless Mode”. Tapi, Anda bisa dapatkan itu kembali dengan mengeksekusi perintah acme.sh --register-account.

Setelah itu, kamu telah dapat menggunakan acme.sh seperti biasanya untuk menerbitkan/membuat dan memperbarui Sertifikat SSL kamu.

Menerbitkan Sertifikat SSL dengan acme.sh

Nah, setelah mengikuti beberapa langkah, akhirnya Anda bisa sampai di sini, yakni menerbitkan Sertifikat SSL.

Ada beberapa cara untuk menerbitkannya menggunakan acme.sh, tidak perlu Anda ikuti semua dan sesuaikan dengan selera Anda, kecuali jika ada teks “Wajib dipelajari” nya, bagian itu yang wajib Anda pelajari.

Berikut adalah cara-caranya:

Menerbitkan Sertifikat SSL (Wajib dipelajari)

Jika Anda ingin menerbitkan sertifikat SSL dengan acme.sh (cth. hanya untuk 1 Domain dan 1 Subdomain), maka format perintah nya akan menjadi seperti berikut:

acme.sh --issue -d domain.com -d www.domain.com METODE_VERIFIKASI PARAMETER_TAMBAHAN

Jika Anda mengeksekusi perintah di atas, maka Anda menerbitkan Sertifikat SSL hanya untuk 1 Domain dan 1 Subdomain saja, yakni domain.com dan www.domain.com.

Parameter -d berfungsi untuk menentukan domain yang dijangkau oleh Sertifikat SSL tersebut saat diterbitkan, isikan itu dengan Domain Anda. Sebenarnya, Anda juga dapat menambahkan perameter -d agar Sertifikat SSL menjangkau setiap domain yang Anda masukkan, sebanyak yang Anda mau.

Domain Pertama yang Anda masukkan akan menjadi Common Name, Subject atau Issued to pada Sertifikat SSL, selain SAN (Subject Alternative Name), sedangkan domain kedua dan seterusnya hanya dimasukkan kedalam SAN saja.

Selain itu, nama direktori untuk Sertifikat SSL nya sendiri akan ditentukan berdasarkan domain pertama yang Anda masukkan.

Contohnya seperti Cuplikan berikut di Windows:

Atau, di bawah ini untuk GNU/Linux: (Lebih tepatnya di Peramban Web berbasis Chromium/Google Chrome untuk GNU/Linux)

Jika Anda melihat cuplikan di atas, “Common Name” yang tampil adalah farrel.franqois.id bukan *.farrel.franqois.id, padahal Sertifikat yang saya terbitkan itu adalah Sertifikat SSL Wildcard, dan *.farrel.franqois.id malah cuma dimasukkan ke dalam SAN (Subject Alternative Name) saja bersamaan dengan Domain Pertama nya.

Kenapa bisa begitu? Sederhananya karena Domain Pertama yang saya masukkan ketika menerbitkan sebuah Sertifikat SSL adalah farrel.franqois.id, bukan *.farrel.franqois.id. Nah, sekarang sudah paham, kan?

Parameter --issue berfungsi agar acme.sh menerbitkan Sertifikat SSL Anda. Parameter selain --issue adalah sebagai berikut:

  • --renew untuk memperbarui Sertifikat SSL yang ada
  • --revoke untuk mencabut salah satu Sertifikat SSL yang ada di dalam perangkat Anda
  • --remove untuk menghapus salah satu Sertifikat SSL dari perangkat Anda
  • --renew-all untuk memperbarui semua Sertifikat SSL yang ada (Catatan: Anda tidak perlu menambahkan parameter -d jika menggunakan parameter ini)
  • Dan lain-lain nya

Metode Verifikasi (METODE_VERIFIKASI)

Anda harus menggantikan METODE_VERIFIKASI di atas dengan parameter/argumen mengenai metode verifikasi yang ada, menjadi parameter berikut: (Setidaknya gunakan salah satu parameter)

  • --webroot lokasi_webroot atau -w lokasi_webroot jika Anda ingin menggunakan metode Webroot.

    Ganti lokasi_webroot dengan lokasi Web Anda, seperti /var/www/html, /home/username/public_html, atau apa aja yang penting itu menandakan lokasi Web Anda.

  • --dns nama_dns jika Anda ingin menggunakan metode DNS.

    Ganti nama_dns dengan yang ada di halaman dokumentasinya dan sesuaikan dengan Penyedia DNS Otoritatif yang Anda gunakan. (Saya bahas ini di bagian terpisah)

  • --apache jika Anda ingin menggunakan Web Server Apache2 sebagai verifikasi nya.

  • --nginx (lokasi_conf) jika Anda ingin meggunakan Web Server NGINX sebagai verifikasi nya.

    Anda bisa ganti (lokasi_conf) dengan lokasi berkas konfigurasi untuk NGINX Anda jika diinginkan, barangkali acme.sh tidak bisa mendeteksi berkas konfigurasi NGINX secara otomatis, jika tidak maka cukup tulis --nginx saja.

  • --standalone jika Anda tidak mempunyai Aplikasi Web Server atau sedang tidak berada di dalam Server Web (cth. Sedang berada di dalam Server FTP atau SMTP).

Jadi, Anda tidak bisa sembarangan membuat Sertifikat SSL untuk domain lain. Berhasil atau Gagal akan menambahkan Rate Limit jika Anda menggunakan CA seperti Let’s Encrypt dan Buypass CA. Jadi, berhati-hatilah ketika ingin menerbitkan Sertifikat SSL dengan menggunakan Protokol ACME, terutama jika Anda menggunakan CA selain ZeroSSL.

Parameter Tambahan (PARAMETER_TAMBAHAN)

Anda bisa menggantikan PARAMETER_TAMBAHAN dengan parameter lain yang ingin Anda tambahkan saat menerbitkan Sertifikat SSL, parameter lain nya sebagai berikut:

  • --force jika Anda ingin melakukan nya dengan cara paksa.

  • --test atau --staging jika Anda ingin menjalankannya dalam mode pengujian. Ini cocok bagi Anda yang sedang belajar menggunakan acme.sh atau menguji penerbitan Sertifikat SSL dengan metode verifikasi yang berbeda tanpa mempengaruhi Rate Limit aslinya.

    Jadi, saya sarankan agar Anda selalu gunakan parameter ini jika Anda sedang mempelajari penggunaan acme.sh atau memastikan apakah sertifikat SSL bisa diterbitkan dengan benar atau tidaknya tanpa mempengaruhi Rate Limit dari suatu CA.

    Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL nya untuk Produksi dengan menggunakan parameter --issue --force, tanpa parameter --test atau --staging.

  • --server opsi_ca jika Anda ingin menerbitkan sertifikat SSL oleh CA lain, yang secara bawaan diterbitkan oleh ZeroSSL sebagai CA.

    Ganti opsi_ca menjadi nama pendek dari CA yang mendukung, seperti: zerossl, buypass, buypass_test, letsencrypt, letsencrypt_test, sslcom.

    Atau, Anda juga bisa ganti opsi_ca dengan memasukkan Alamat URL Server ACME dari Penyedia CA Anda. Untuk selengkapnya, silahkan Anda pelajari dari Halaman Wiki nya.

  • --keylength opsi atau -k opsi jika Anda ingin menerbitkan Sertifikat SSL dengan ukuran kunci atau kunci yang berbeda. Ganti opsi dengan 2048, 3072, 4096, 8192, ec-256, ec-384, atau ec-512 (Saya bahas di bagian terpisah)

  • --cert-file file untuk menyalinkan berkas Sertifikat ke dalam direktori lain setelah menerbitkan/memperbarui Sertifikat SSL nya. Ganti file menjadi lokasi atau/dan nama berkas yang Anda inginkan.

  • --key-file file untuk menyalinkan berkas Kunci ke dalam direktori lain setelah menerbitkan/memperbarui Sertifikat SSL nya. Ganti file menjadi lokasi atau/dan nama berkas yang Anda inginkan.

  • --ca-file file untuk menyalinkan berkas Sertifikat CA/Sertifikat Penengah ke dalam direktori lain setelah menerbitkan/memperbarui Sertifikat SSL nya. Ganti file menjadi lokasi atau/dan nama berkas yang Anda inginkan.

  • --fullchain-file file untuk menyalinkan berkas Sertifikat Fullchain ke dalam direktori lain setelah menerbitkan/memperbarui Sertifikat SSL nya. Ganti file menjadi lokasi atau/dan nama berkas yang Anda inginkan.

  • --reloadcmd perintah untuk mengeksekusikan perintah untuk me-reload Server setelah menerbitkan/memperbarui Sertifikat SSL nya.

  • --ecc agar perintah tersebut ditujukan untuk sertifikat SSL yang menggunakan kunci ECC/ECDSA.

    Tanpa parameter ini, maka perintah tersebut akan dieksekusi untuk sertifikat SSL yang berkunci RSA. Parameter ini hanya bisa digunakan jika ada parameter --renew, --revoke, --remove, --install-cert, --to-pkcs12 dan --create-csr saja.

    Contoh penggunaan nya di bawah ini:

    • acme.sh --remove -d domain.com --ecc untuk menghapus salah satu sertifikat SSL yang berkunci ECC dari perangkat Anda
    • acme.sh --revoke -d domain.com --ecc untuk mencabut salah satu sertifikat SSL yang berkunci ECC
    • Dan masih banyak lagi!

    Jadi, Anda tidak bisa gunakan parameter ini untuk menerbitkan sertifikat SSL, atau bisa dibilang bahwa Anda hanya bisa menggunakan nya saat sertifikat SSL tersebut telah diterbitkan dengan menggunakan kunci ECC/ECDSA saja

Udah itu saja yang saya bahas, parameter lainnya masih banyak, tapi yang saya bahas adalah kasus umumnya saja.

Jika Anda ingin mempelajari parameter lain nya lebih lanjut, silahkan Anda gunakan perintah acme.sh --help untuk menampilkan parameter apa saja yang bisa Anda gunakan.

Jika Anda tidak ingin menambahkan parameter lain, Anda bisa menghapus PARAMETER_TAMBAHAN nya.

Setelah menerbitkan sertifikat SSL

Jika Anda menerbitkan Sertifikat SSL memakai acme.sh dan dinyatakan berhasil, maka akhir dari keluaran nya kira-kira akan seperti berikut:

[Kam 12 Agu 2021 02:14:50  WIB] Cert success.
-----BEGIN CERTIFICATE-----
ISI SERTIFIKAT
-----END CERTIFICATE-----
[Kam 12 Agu 2021 02:14:50  WIB] Your cert is in: /home/username/.acme.sh/domain.com/domain.com.cer
[Kam 12 Agu 2021 02:14:50  WIB] Your cert key is in: /home/username/.acme.sh/domain.com/domain.com.key
[Kam 12 Agu 2021 02:14:50  WIB] The intermediate CA cert is in: /home/username/.acme.sh/domain.com/ca.cer
[Kam 12 Agu 2021 02:14:50  WIB] And the full chain certs is there: /home/username/.acme.sh/domain.com/fullchain.cer

Ini artinya, bahwa Sertifikat SSL telah berhasil dibuat/diterbitkan oleh CA dan berkas-berkas yang diperlukan telah disimpan di dalam direktori /home/username/.acme.sh/domain.com atau di ${HOME}/.acme.sh/domain.com.

Berkas-berkas seperti domain.com.cer, domain.com.key dan ca.cer atau fullchain.cer dan domain.com.key akan diperlukan untuk pemasangan sertifikat SSL di Layanan Hosting/CDN, untuk lebih lanjut akan saya bahas di bagian terpisah.

Tapi, nama direktori untuk menyimpan dan bahkan nama dari berkas-berkas tersebut biasanya bergantung pada domain pertama yang dimasukkan saat ingin menerbitkan sebuah sertifikat SSL.

Contohnya Anda ingin menerbitkan sertifikat SSL dengan perintah berikut:

acme.sh --issue -d www.domain.com -d domain.com --nginx

Karena domain pertama yang dimasukkan adalah www.domain.com, bukan domain.com sesuai perintah di atas, maka berkas-berkas yang diperlukan akan disimpan di dalam direktori /home/username/.acme.sh/www.domain.com, bukan di dalam direktori /home/username/.acme.sh/domain.com jika berhasil.

Nah, sekarang Anda sudah paham, kan? Kalau sudah paham, tinggal pelajari verifikasi menggunakan DNS dan tentukan cara menerbitkan sertifikat SSL nya dengan sesuka kamu.

Menerbitkan Sertifikat SSL dengan Menggunakan DNS sebagai Metode Verifikasi (Wajib dipelajari)

Jika Anda ingin menerbitkan Sertifikat SSL yang menggunakan DNS sebagai Metode Verifikasi nya, maka Anda tinggal tambahkan saja parameter --dns nama_dns.

Contoh di bawah ini adalah perintah untuk menerbitkan Sertifikat SSL untuk 1 Domain dan 1 Subdomain dengan menggunakan DNS dari Cloudflare sebagai Metode Verifikasi:

acme.sh --issue -d domain.com -d www.domain.com --dns dns_cf
Perhatian !

Jika Anda sedang mempelajari penggunaan perkakas acme.sh, maka saya sarankan agar Anda selalu tambahkan parameter --test atau --staging untuk menjalankan perkakas acme.sh dalam mode pengujian, ini cocok untuk Anda yang sedang belajar.

Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL nya untuk Produksi dengan menggunakan parameter --issue --force, tanpa parameter --test atau --staging.

Jika Anda menggunakan Penyedia DNS Otoritatif selain Cloudflare, ganti saja dns_cf nya menjadi yang ada di dalam dokumentasinya.

Misalnya: Anda ingin menerbitkan sebuah Sertifikat SSL untuk domain.com dan ingin menggunakan Netlify DNS sebagai Metode Verifikasinya, maka Anda tinggal tambahkan saja parameter --dns dns_netlify. Jadinya seperti berikut:

acme.sh --issue -d domain.com -d www.domain.com --dns dns_netlify

Nah, sekarang paham, kan? Ini juga sangat penting untuk menerbitkan Sertifikat SSL dalam bentuk Wildcard, karena Verifikasi melalui DNS merupakan salah satu syarat yang wajib.

Selain itu, jika Anda ingin memasang sertifikat SSL di Penyedia Web yang sedang saya bahas di artikel ini, yakni Netlify dan BunnyCDN, serta Anda melakukan nya di dalam perangkat seperti Komputer PC, Laptop dan Ponsel Pintar Anda atau di dalam perangkat selain Server, maka metode verifikasi seperti ini wajib Anda pelajari.

Menerbitkan Sertifikat SSL untuk Banyak Domain dan Subdomain

Untuk menerbitkan Sertifikat SSL yang menargetkan Banyak Domain dan Subdomain, sebenarnya Anda tinggal masukkan parameter -d untuk setiap domainnya. Contohnya seperti berikut:

Untuk 2 Domain dan 4 Subdomain:

acme.sh --issue -d domain1.com -d www.domain1.com -d sub.domain1.com -d domain2.com -d www.domain2.com -d sub.domain2.com
Perhatian !

Jika Anda sedang mempelajari penggunaan perkakas acme.sh, maka saya sarankan agar Anda selalu tambahkan parameter --test atau --staging untuk menjalankan perkakas acme.sh dalam mode pengujian, ini cocok untuk Anda yang sedang belajar.

Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL nya untuk Produksi dengan menggunakan parameter --issue --force, tanpa parameter --test atau --staging.

Untuk 4 Domain saja:

acme.sh --issue -d domain1.com -d domain2.com -d domain3.com -d domain4.com

Atau, jika Anda ingin menggunakan metode verifikasi yang berbeda-beda untuk setiap domain, maka Anda bisa meraciknya dengan contoh seperti berikut:

acme.sh --issue \
        -d domain1.com -d www.domain1.com --dns dns_cf \
        -d domain2.com -d www.domain2.com --dns dns_netlify \
        -d domain3.com -d www.domain3.com -w /home/username/public_html \
        -d domain4.com -d www.domain4.com --apache \
        -d domain5.com -d www.domain5.com --nginx

Dan seterusnya akan seperti itu caranya.

Menerbitkan Sertifikat SSL yang menjangkau Seluruh Subdomainnya

Jika Anda ingin menerbitkan Sertifikat SSL yang menjangkau seluruh Subdomain atau dalam bentuk Wildcard, maka Anda tinggal tambahkan parameter -d '*.domain.com' saja.

Tapi Anda juga harus menambahkan parameter --dns nama_dns, karena dibutuhkan verifikasi melalui Metode DNS sebagai Syarat Wajib agar bisa menerbitkannya dalam bentuk Wildcard.

Contoh di bawah ini adalah perintah untuk menerbitkan Sertifikat SSL untuk 1 Domain dan Semua Subdomainnya dengan menggunakan DNS dari Cloudflare sebagai Verifikasi:

acme.sh --issue -d '*.domain.com' -d domain.com --dns dns_cf
Perhatian !

Jika Anda sedang mempelajari penggunaan perkakas acme.sh, maka saya sarankan agar Anda selalu tambahkan parameter --test atau --staging untuk menjalankan perkakas acme.sh dalam mode pengujian, ini cocok untuk Anda yang sedang belajar.

Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL nya untuk Produksi dengan menggunakan parameter --issue --force, tanpa parameter --test atau --staging.

Sertifikat yang diterbitkan dengan perintah di atas adalah untuk *.domain.com dan domain.com dengan menggunakan DNS dari Cloudflare sebagai Verifikasi.

Jika Anda bukan pengguna Cloudflare, maka Anda perlu baca halaman dokumentasinya terlebih dahulu, di situ sudah dijelaskan cara-caranya.

Kenapa Wildcard nya dikutip? Karena terkadang Shell lain tidak dapat meng-intepretasi tanda bintang dengan baik jika tidak dikutip, seperti Zsh (Z shell) misalnya.

Kenapa Wildcard nya diletakkan di awal? Agar Domain Wildcard nya tampil sebagai “Common Name”/“Subject”/“Issued to” pada Sertifikat SSL. Kenapa? Karena Sertifikat SSL Wildcard yang saya lihat menampilkan Domain Wildcard sebagai “Issued to”/“Common Name” nya. Apa itu “Issued to”/“Common Name”? Itu sudah saya jelaskan di bagian awal.

Apakah itu menjangkau Sub-subdomain seperti sub.sub.domain.com? Tentu saja tidak, karena sertifikat SSL tersebut cuma diterbitkan untuk *.domain.com dan domain.com, yang mana cuma menjangkau sub1.domain.com, sub2.domain.com, dst, bukan sub.sub.domain.com.

Jika Anda mau seperti itu, tambahkan saja Subdomain Anda beserta Wildcard nya, jadi parameter yang Anda tambahkan adalah -d '*.sub.domain.com' -d sub.domain.com.

Contohnya menjadi seperti berikut:

acme.sh --issue -d '*.domain.com' -d domain.com -d '*.sub.domain.com' -d sub.domain.com --dns dns_cf

Nah, sekarang paham, kan?

Menerbitkan Sertifikat SSL dengan ukuran kunci yang berbeda

Secara Bawaan/Asali, acme.sh akan menerbitkan Sertifikat SSL dengan kunci RSA yang berukuran 2048 bit (RSA-2048).

Jika Anda ingin menerbitkan Sertifikat SSL dengan ukuran kunci yang berbeda, tambahkan saja parameter --keylength ukuran_kunci_rsa. Ganti ukuran_kunci_rsa dengan Ukuran kunci RSA yang didukung.

Contoh Perintah di bawah ini jika Anda ingin menerbitkannya dengan kunci RSA yang berukuran 3072 bit (RSA-3072):

acme.sh --issue -d domain.com -d www.domain.com --keylength 3072
Perhatian !

Jika Anda sedang mempelajari penggunaan perkakas acme.sh, maka saya sarankan agar Anda selalu tambahkan parameter --test atau --staging untuk menjalankan perkakas acme.sh dalam mode pengujian, ini cocok untuk Anda yang sedang belajar.

Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL nya untuk Produksi dengan menggunakan parameter --issue --force, tanpa parameter --test atau --staging.

Atau, berikut di bawah ini jika Anda ingin menerbitnya dalam bentuk Wildcard:

acme.sh --issue -d '*.domain.com' -d domain.com --keylength 3072 --dns dns_cf

Jika Anda ingin menerbitkannya dengan ukuran kunci sebesar 4096 bit, Anda tinggal ganti saja menjadi --keylength 4096. Intinya, Anda perhatikan saja terhadap nilai parameternya.

Ukuran Kunci RSA yang didukung oleh acme.sh beserta nilai parameter keylength nya adalah:

  • RSA-2048 (Bawaan)
  • RSA-3072 (3072)
  • RSA-4096 (4096)
  • RSA-8192 (8192)

Catatan: Didukung oleh perkakas acme.sh, bukan berarti didukung oleh CA yang digunakan, tapi ZeroSSL sepertinya mendukung semua itu.

PERINGATAN !

Saya tidak menyarankan Anda untuk menerbitkan serta menggunakan ukuran kunci yang terlalu besar.

Karena selain menghasilkan kunci dengan ukuran yang besar, terkadang proses pemuatan konten pada Perangkat Lunak (termasuk Peramban Web) akan memakan waktu saat sedang proses ‘jabat tangan’ TLS (TLS handshake), yang berakibat pada membengkaknya penggunaan CPU/Prosesor pada Perangkat tertentu untuk meng-enkripsi transaksi data saat proses ‘jabat tangan’.

Jika Anda merupakan pemilik Web/Blog, maka kemungkinan hal ini akan mempengaruhi performa Web/Blog secara keseluruhan dan ini mungkin akan berpotensi mengurangi pengunjung pada Web/Blog Anda.

Saya sarankan agar Anda gunakan ukuran kunci yang ideal. Ukuran kunci yang ideal untuk kebanyakan kasus adalah 2048 bit atau 3072 bit, atau yang paling besar adalah 4096 bit, tidak perlu terlalu besar.

Menerbitkan Sertifikat SSL dengan kunci ECC/ECDSA

Secara bawaan, acme.sh akan menerbitkan Sertifikat SSL dengan kunci RSA.

Jika Anda ingin menerbitkannya menggunakan kunci ECC (Eliptic Curve Cryptography)/ECDSA (Eliptic Curve Digital Signature Algorithm), maka Anda hanya perlu tambahkan saja parameter --keylength ec-ukuran_kuncinya. Ganti ukuran_kuncinya dengan Ukuran kunci ECC yang didukung.

Contoh Perintah di bawah ini jika Anda ingin menerbitkan Sertifikat SSL ECDSA dengan ukuran P-384:

acme.sh --issue -d domain.com -d www.domain.com --keylength ec-384
Perhatian !

Jika Anda sedang mempelajari penggunaan perkakas acme.sh, maka saya sarankan agar Anda selalu tambahkan parameter --test atau --staging untuk menjalankan perkakas acme.sh dalam mode pengujian, ini cocok untuk Anda yang sedang belajar.

Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL nya untuk Produksi dengan menggunakan parameter --issue --force, tanpa parameter --test atau --staging.

Atau, berikut di bawah ini jika Anda ingin menerbitkannya dalam bentuk Wildcard:

acme.sh --issue -d '*.domain.com' -d domain.com --keylength ec-384 --dns dns_cf

Jika Anda ingin menerbitkannya dengan kunci ECDSA P-256, tinggal ganti saja menjadi --keylength ec-256. Perhatikan saja nilai parameter dari keylength nya.

Ukuran Kunci ECC/ECDSA yang didukung oleh acme.sh beserta nilai dari parameter keylength adalah:

  • ECDSA P-256 (ec-256)
  • ECDSA P-384 (ec-384)
  • ECDSA P-512 (ec-512)

Catatan: Didukung oleh acme.sh, bukan berarti didukung oleh CA yang digunakan, termasuk Let’s Encrypt yang belum mendukung kunci ECDSA dengan ukuran kunci P-512.

Informasi:

Jika Anda menerbitkan sertifikat SSL dengan kunci ECC/ECDSA, maka berkas-berkas sertifikat SSL akan tersimpan di dalam direktori yang berakhiran dengan _ecc, seperti: /home/username/.acme.sh/domain.com_ecc, bukan di dalam direktori /home/username/.acme.sh/domain.com.

Nama berkas-berkasnya akan sama saja, tidak ada yang berbeda.

Satu hal lagi, jika Anda ingin mencabut, menghapus, atau memperbarui/me-renew sertifikat SSL secara manual maka tambahkan parameter --ecc di setelahnya.

Contoh: acme.sh --remove -d domain.com --ecc

  • Contoh di atas merupakan perintah untuk menghapus sertifikat SSL yang berkunci ECC/ECDSA. Ganti --remove dengan parameter/argumen lain yang Anda inginkan

    Salah satunya: --renew jika Anda ingin memperbarui sertifikat nya, atau --revoke jika Anda ingin mencabut sertifikat nya, atau parameter lain nya.

  • Ganti domain.com dengan alamat domain pertama yang Anda masukkan saat menerbitkan sertifikat SSL.

Berkas-berkas acme.sh

Bagian ini akan membahas tentang berkas-berkas yang berada di dalam direktori acme.sh itu terinstal.

Ini bukanlah hal yang wajib, sehingga bisa Anda lewati jika berkenan, tapi ini sangat disarankan untuk dipelajari, selain supaya Anda bisa memasang sertifikat SSL nya dengan baik, ini juga dapat membantu Anda untuk menyelesaikan masalah Anda saat menggunakannya.

Letak acme.sh dan konfigurasi akunnya

Biasanya, acme.sh akan terinstal di dalam direktori ${HOME}/.acme.sh.

Sedangkan letak berkas konfigurasi (terutama untuk konfigurasi Akun) itu terletak di ${HOME}/.acme.sh/account.conf.

Berkas tersebut menyimpan sejumlah Informasi yang berkaitan dengan Akun yang Anda masukkan melalui variabel dari sebuah Shell (Seperti Token, Kunci API, atau bahkan Nama Pengguna dan Kata Sandi), acme.sh akan menyimpan Informasi tersebut secara otomatis ke dalam berkas account.conf jika dijalankan dan akan digunakan kembali jika tersimpan.

Contoh isi berkas account.conf:

$ cat ${HOME}/.acme.sh/account.conf

#LOG_FILE="/home/username/.acme.sh/acme.sh.log"
#LOG_LEVEL=1

#AUTO_UPGRADE="1"

#NO_TIMESTAMP=1


UPGRADE_HASH='d96cca382274c7595785a94816ef586e452b7f27'
ACCOUNT_EMAIL='aku@contoh.com'
USER_PATH='/home/username/bin:/home/username/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/var/lib/snapd/snap/bin'

Jadi, jika Anda memiliki masalah saat menggunakan acme.sh hanya karena akunnya tidak valid, entah itu salah memasukkan atau Informasinya tidak ada, Anda bisa menggantinya dengan mengganti variabel di dalam Shell nya, lalu hapus variabel tersebut di dalam berkas account.conf nya.

Isi direktori dan berkas yang diperlukan

Setelah mengetahui direktori, sekarang isi direktori nya. Isi nya akan seperti ini:

$ ls -la ${HOME}/.acme.sh/domain.com
total 44
drwxr-xr-x  2 user user 4096 Jul  8 08:46 .
drwx------ 10 user user 4096 Jul  8 08:50 ..
-rw-r--r--  1 user user 4399 Jul  8 08:46 ca.cer
-rw-r--r--  1 user user 2472 Jul  8 08:46 domain.com.cer
-rw-r--r--  1 user user  580 Jul  8 08:46 domain.com.conf
-rw-r--r--  1 user user 1318 Jul  8 08:45 domain.com.csr
-rw-r--r--  1 user user  164 Jul  8 08:45 domain.com.csr.conf
-rw-r--r--  1 user user 2459 Jul  8 08:45 domain.com.key
-rw-r--r--  1 user user 6871 Jul  8 08:46 fullchain.cer

Jika Penyedia Hosting/CDN nanti meminta kita untuk memasukkan 3 Informasi untuk mengaktifkan/memasang Sertifikat SSL nya, maka berkas yang perlu Anda gunakan/kirimkan/masukkan adalah:

  • domain.com.cer (Sebagai Sertifikat nya)
  • domain.com.key (Sebagai Kunci nya)
  • ca.cer (Sebagai Sertifikat CA/Sertifikat Penengah/“Intermediate Certificate” nya)

Atau, jika mereka cuma meminta 2 Informasi saja, maka berkas yang perlu Anda gunakan/kirimkan/masukkan adalah:

  • fullchain.cer (Sebagai Sertifikat nya)
  • domain.com.key (Sebagai Kunci nya)

Udah itu saja? Udah, hanya itu yang perlu kamu unggah nantinya. Berkas .csr, .csr.conf dan .conf tidak perlu kamu unggah sama sekali, karena itu akan berguna nantinya untuk memperbarui Sertifikat SSL Anda.

Kenapa bukan domain.com.cer? Karena fullchain.cer itu merupakan gabungan dari domain.com.cer dan ca.cer.

Praktik terbaik dalam memasang Sertifikat SSL, selain sertifikat untuk domain, adalah Anda diharuskan untuk memasang/memberikan Informasi mengenai Kunci dan Sertifikat Penengah (Intermediate Certificate) dari CA kepada penyedia nya.

Jika Anda hanya menggunakan berkas domain.com.cer daripada fullchain.cer sebagai Informasi Sertifikat saat Penyedia hanya meminta 2 Informasi saja, maka rantai pada Sertifikat SSL yang terpasang malah tidak sempurna, karena tidak ada Sertifikat Penengah dari CA nya.

Selain berkas CSR dan Sertifikat, berkas domain.com.conf juga berguna sebagai konfigurasi acme.sh untuk domain tertentu (cth. domain.com), Anda bisa atur Perintah yang akan dieksekusi sebelum, setelah atau setelah sertifikat sukses diperbarui melalui berkas tersebut, akan saya bahas ini di setelah bagian pemasangan sertifikat SSL.

Memasang Sertifikat SSL

Setelah menerbitkan sertifikat SSL, Anda perlu memasangkan nya. Setiap penyedia Web mempunyai cara memasang Sertifikat SSL yang berbeda-beda, kali ini saya bahas cara memasang Sertifikat SSL untuk Netlify dan Bunny CDN.

Memasang Sertifikat SSL yang saya bahas di sini tidaklah menggunakan metode unggah manual melalui Web, melainkan kamu ‘Nembak’ ke API nya.

Maksudnya Anda akan melakukan Request dengan metode POST kepada Server API masing-masing penyedianya agar Sertifikat SSL bisa terpasang.

Berikut adalah cara-caranya:

Di Netlify

Membuat Personal Access Token dan Mendapatkan Site ID

Catatan:

Anda bisa abaikan ini jika Anda sudah membuat dan masih menyimpan Personal Access Token dan Site ID nya di dalam Perangkat Anda.

Agar Anda bisa mengakses Server API nya, maka Anda perlu untuk membuat kunci akses nya, salah satunya adalah dengan membuat Personal Access Token nya.

Untuk membuat Personal Access Token nya sendiri sudah saya bahas di bagian “Verifikasi DNS di acme.sh”. Jika Anda belum sempat membuat Personal Access Token sebelumnya, silahkan klik di sini untuk caranya.

Setelah Personal Access Token dibuat, maka Anda perlu mendapatkan Site ID nya. Tapi untuk mendapatkan nya, Anda bisa pergi ke Site settings, lalu klik pada General -> Terakhir, klik Site details, di situ akan muncul informasi-informasi mengenai Web Anda, seperti cuplikan berikut:

Jika Anda melihat cuplikan di atas, API ID yang saya tunjuk itu merupakan Site ID nya, simpan ID tersebut baik-baik. Selain API ID, Anda juga bisa menggunakan domain Anda atau menggunakan subdomain dari Netlify sebagai Site ID nya.

Langkah selanjutnya adalah memasang Sertifikat SSL melalui API nya.

Memasang Sertifikat SSL melalui API dari Netlify

Sekarang Anda tinggal memasang sertifikat nya saja melalui API dari Netlify. Sebelum itu, Netlify meminta agar kita mengirimkan 3 Informasi/Berkas untuk memasang Sertifikat SSL nya.

Agar kita dapat mengirimkan berkas-berkas itu melalui API nya, maka sebelum mengakses API nya, Anda perlu menyimpan isi dari 3 berkas tersebut ke dalam sebuah Variabel.

Karena Anda cuma diminta 3 berkas, maka berkas-berkas yang diperlukan untuk diunggah/Anda kirimkan ke Netlify adalah domain.com.cer sebagai Sertifikatnya, domain.com.key sebagai Kunci Pribadi nya dan ca.cer Sertifikat Penengahnya, berkas lain nya (seperti: fullchain.cer) tidak perlu Anda kirimkan.

Anda dapat menyimpan nya dengan perintah berikut:

PLAIN_CERT="$(awk '{printf "%s\\n", $0}' ${HOME}/.acme.sh/domain.com/domain.com.cer)"
PLAIN_KEY="$(awk '{printf "%s\\n", $0}' ${HOME}/.acme.sh/domain.com/domain.com.key)"
PLAIN_CA="$(awk '{printf "%s\\n", $0}' ${HOME}/.acme.sh/domain.com/ca.cer)"
NETLIFY_ACCESS_TOKEN="ACCESS_TOKEN_KAMU_DI_SINI"

Atau, di bawah ini jika Anda ingin menggunakan perintah cat:

PLAIN_CERT="$(cat ${HOME}/.acme.sh/domain.com/domain.com.cer | awk '{printf "%s\\n", $0}')"
PLAIN_KEY="$(cat ${HOME}/.acme.sh/domain.com/domain.com.key | awk '{printf "%s\\n", $0}')"
PLAIN_CA="$(cat ${HOME}/.acme.sh/domain.com/ca.cer | awk '{printf "%s\\n", $0}')"
NETLIFY_ACCESS_TOKEN="ACCESS_TOKEN_KAMU_DI_SINI"

Silahkan ubah direktori dan nama berkasnya sesuai dengan sertifikat SSL yang telah tersimpan di dalam Perangkat Anda.

Selain direktori dan nama berkasnya, Anda juga bisa bebas menggantikan nama variabel nya sesuka Anda, misalnya: PLAIN_CERT jadi PLAIN_CERT_1, atau CERT, atau lain nya, asal bisa Anda gunakan variabel tersebut kembali.

Setelah memasukkannya ke dalam Variabel, Anda tinggal panggil saja API nya dengan perintah berikut:

curl -X POST \
     -H 'Authorization: Bearer '${NETLIFY_ACCESS_TOKEN}'' \
     -H 'content-type: application/json' \
     --data '{"certificate": "'"${PLAIN_CERT}"'", "key": "'"${PLAIN_KEY}"'", "ca_certificates": "'"${PLAIN_CA}"'"}' \
     --url https://api.netlify.com/api/v1/sites/SITE_ID_KAMU_DI_SINI/ssl

Atau, gunakan perintah berikut ini jika Anda ingin memanggilnya dalam satu baris saja:

curl -X POST -H 'Authorization: Bearer '${NETLIFY_ACCESS_TOKEN}'' -H 'content-type: application/json' --data '{"certificate": "'"${PLAIN_CERT}"'", "key": "'"${PLAIN_KEY}"'", "ca_certificates": "'"${PLAIN_CA}"'"}' --url https://api.netlify.com/api/v1/sites/SITE_ID_KAMU_DI_SINI/ssl

Jika sukses, maka akan tampil pesan dalam format JSON, seperti di bawah ini:

{"id":"5dxxxxxxxxxxxxxxxxxxxxxx","state":"custom","domains":["domain.com","*.domain.com"],"created_at":"2019-08-30T06:39:58.331Z","updated_at":"2021-07-12T17:07:40.622Z","expires_at":"2021-10-06T23:59:59.000Z","custom":true,"migrate_to_le_running":false,"renewal_error_message":null,"renewable":false,"renew_running":false}

Atau, penampilan nya akan seperti di bawah ini jika dipercantik:

{
   "id":"5dxxxxxxxxxxxxxxxxxxxxxx",
   "state":"custom",
   "domains":[
      "domain.com",
      "*.domain.com"
   ],
   "created_at":"2019-08-30T06:39:58.331Z",
   "updated_at":"2021-07-12T17:07:40.622Z",
   "expires_at":"2021-10-06T23:59:59.000Z",
   "custom":true,
   "migrate_to_le_running":false,
   "renewal_error_message":null,
   "renewable":false,
   "renew_running":false
}

Jika gagal, maka pastinya muncul pesan yang tidak seperti di atas, melainkan Pesan Galat (Error) yang pesan nya berbeda-beda.

Nah, gimana? Cukup mudah, bukan? Jika Anda berhasil memasang Sertifikat SSL Anda di Netlify dengan API nya dan tidak ada penyedia lain, maka Anda hanya perlu membuat sebuah skrip Shell agar SSL bisa diperbarui secara otomatis.

Di Bunny.net (Sebelumnya: BunnyCDN)

Mendapatkan “Access Key” dan “Pull Zone ID” nya

Catatan:

Anda bisa abaikan ini jika Anda sudah membuat dan masih menyimpan Access Key dan Pull Zone ID nya di dalam Perangkat Anda, serta jika Anda telah mengetahui Nama Hos tujuan nya.

Sebelum Anda bisa memasang Sertifikat SSL menggunakan API dari Bunny.net (sebelumnya: BunnyCDN), maka Anda perlu mendapatkan Access Key dan Pull Zone ID nya terlebih dahulu, berikut di bawah ini adalah caranya:

  1. Silahkan akses ke Dasbor Bunny.net nya, login jika diminta.
  2. Klik pada Account yang letaknya di atas dan berikon seorang raja
  3. Di bagian API, kamu akan melihat sebuah kotak teks diisikan dengan lingkaran atau tanda bintang, klik pada Ikon mata jika Anda ingin melihatnya isi sebenarnya
  4. Nah, Access Key sudah tampil, simpan itu baik-baik untuk digunakan nanti dan pastikan orang lain tidak mengetahui Access Key nya

Jika Anda tidak memahami langkah-langkah di atas, maka Anda dapat melihat Cuplikan Layar berikut yang cukup menyesuaikan dengan langkah-langkah di atas: (Silahkan perbesar gambarnya dengan mengklik nya)

Untuk Pull Zone ID nya, Anda bisa dapatkan itu di pengaturan nya. Caranya setelah login dan diarahkan ke Halaman Dasbor, klik Pull Zones -> Lalu kamu pilih Pull Zone yang ingin kamu pasangkan Sertifikat SSL nya -> Setelah dipilih dan diklik, maka alamat URL pada Peramban Web akan menjadi seperti format di bawah ini:

https://panel.bunny.net/pullzones/edit/ANGKA_YANG_MUNCUL

Angka yang muncul di akhir alamat URL (ANGKA_YANG_MUNCUL) itu adalah Pull Zone ID kamu, jadi simpan itu baik-baik jika Anda ingin memasangkan Sertifikat SSL nya dan pastikan kamu telah membuat Custom Hostname sebelumnya di sana.

Karena selain Access Key dan Pull Zone ID, mempunyai Custom Hostname merupakan hal yang wajib hukumnya, karena Anda tidak bisa menggunakan Subdomain dari Bunny.net (b-cdn.net) untuk dipasangkan Sertifikat SSL nya.

Setelah mendapatkan semuanya, selanjutnya adalah memasang Sertifikat SSL melalui API nya.

Memasang Sertifikat SSL melalui API dari Bunny.net

Sekarang Anda tinggal memasang sertifikat nya saja melalui API dari Bunny.net. Sebelum itu, Bunny.net meminta agar kita hanya mengirimkan 2 Informasi/Berkas saja untuk memasang Sertifikat SSL nya.

Agar kita dapat mengirimkan 2 Informasi/Berkas itu melalui API nya, maka sebelum mengakses API nya, Anda perlu menyimpan isi dari 2 berkas tersebut ke dalam sebuah Variabel.

Karena Anda cuma diminta 2 berkas saja, maka berkas-berkas yang diperlukan untuk diunggah/Anda kirimkan ke BunnyCDN adalah domain.com.key untuk Kunci Pribadi nya dan fullchain.cer untuk Sertifikatnya, berkas lain nya (seperti: ca.cer dan domain.com.cer) tidak perlu Anda kirimkan.

Tapi dalam pengiriman berkas untuk SSL, Bunny.net sedikit berbeda daripada Netlify yang hanya menerima dalam bentuk teks biasa (Plain text), di sana Anda hanya bisa mengirimkan nya dalam bentuk Base64 saja.

Sehingga untuk menyimpan nya ke dalam variabel, maka Anda harus meng-encode isi berkas-berkas tersebut ke dalam Base64.

Tanpa basa-basi lagi, Anda dapat menyimpan nya ke dalam variabel dengan perintah berikut:

BASE64_FULLCHAIN_CER="$(cat ${HOME}/.acme.sh/domain.com/fullchain.cer | openssl base64 -A)"
BASE64_KEY="$(cat ${HOME}/.acme.sh/domain.com/domain.com.key | openssl base64 -A)"
BUNNY_ACCESS_KEY="ACCESS_KEY_KAMU_DI_SINI"

Silahkan ubah direktori dan nama berkasnya sesuai dengan Sertifikat SSL yang tersimpan di dalam Perangkat Anda.

Selain direktori dan nama berkasnya, Anda juga bisa bebas menggantikan nama variabel nya sesuka Anda, misalnya: BASE64_FULLCHAIN_CER jadi FULLCHAIN_CER, atau FULLCHAIN, atau lain nya, asal bisa Anda gunakan variabel tersebut kembali.

Setelah memasukkannya ke dalam Variabel, Anda tinggal panggil saja API nya dengan perintah berikut:

curl -X POST \
     -H 'Accept: application/json' \
     -H 'AccessKey: '${BUNNY_ACCESS_KEY}'' \
     -H 'Content-Type: application/json' \
     --data '{"Hostname": "CUSTOM_HOSTNAME_KAMU_DI_SINI", "Certificate": "'"${BASE64_FULLCHAIN_CER}"'", "CertificateKey": "'"${BASE64_KEY}"'"}' \
     --url https://api.bunny.net/pullzone/PULL_ZONE_ID_KAMU_DI_SINI/addCertificate

Atau, gunakan perintah berikut ini jika Anda ingin memanggilnya dalam satu baris saja:

curl -X POST -H 'Accept: application/json' -H 'AccessKey: '${BUNNY_ACCESS_KEY}'' -H 'Content-Type: application/json' --data '{"Hostname": "CUSTOM_HOSTNAME_KAMU_DI_SINI", "Certificate": "'"${BASE64_FULLCHAIN_CER}"'", "CertificateKey": "'"${BASE64_KEY}"'"}' --url https://api.bunny.net/pullzone/PULL_ZONE_ID_KAMU_DI_SINI/addCertificate

Jika berhasil, maka tidak akan muncul pesan apapun (Kode Status: 204 No Content), berbeda daripada Netlify yang menampilkan pesan dalam format JSON. Sebaliknya, jika tidak berhasil, maka pesan galat akan muncul dengan pesan yang berbeda-beda, tergantung kondisi yang ada.

Nah, gimana? Cukup mudah, bukan? Jika Anda berhasil memasang Sertifikat SSL Anda di BunnyCDN dengan memanggil API nya dan tidak ada penyedia lain, maka Anda hanya perlu membuat sebuah skrip Shell agar SSL bisa diperbarui secara otomatis atau mungkin Anda perlu mempelajari Konfigurasi acme.sh untuk Domain tertentu terlebih dahulu sebelum itu.

Disebutkan secara khusus: Di cPanel (butuh Akses SSH)

Jika Anda merupakan pengguna Layanan Shared Hosting dan menggunakan cPanel sebagai Kontrol Panel nya, mungkin Anda bisa kunjungi Halaman Wiki nya untuk panduan nya.

Saya tidak bisa jelaskan lebih lengkap dan tidak bisa menjamin bahwa ini akan bekerja, karena saya tidak menggunakan nya.

Anda akan membutuhkan kemampuan untuk Akses SSH ke Akun cPanel Anda untuk melakukan itu, silahkan hubungi dukungan terkait agar Akses SSH bisa dibuka dan sertai alasan yang jelas agar Anda tidak dianggap sebagai orang yang ingin menyalahgunakan fitur tersebut.

Tapi, ada beberapa layanan Hosting Web yang memisahkan paket tertentu untuk Akses SSH nya, sehingga mungkin Anda perlu Upgrade paket terlebih dahulu agar bisa menggunakan fitur tersebut.

Lain nya

Jika Anda menggunakan Penyedia Hosting selain Netlify (seperti GitHub Pages, Vercel, Surge.sh, Render.com), Kontrol Panel untuk Layanan Hosting selain cPanel (seperti DirectAdmin, Virtualmin/Webmin, CyberPanel, Kloxo-MR, InterWorx, dll) atau menggunakan Penyedia CDN selain Bunny CDN (seperti Cloudflare, Fastly, AWS CloudFront, Akamai, Verizon EdgeCast, SwiftServe, dll), mohon maaf di sini belum tersedia.

Kenapa? Karena setiap penyedia dan perangkat lunak mempunyai cara yang berbeda untuk memanggil API nya, serta cara yang berbeda dalam mengirim datanya dan jika saya ingin mengetahui cara kerjanya, maka saya harus mencobanya terlebih dahulu, maka dari itu saya belum (atau mungkin tidak) bisa menyediakan semuanya di sini.

Anda bisa membaca dan mempelajari masing-masing dokumentasinya sebagai referensi Anda untuk memasang Sertifikat SSL di Penyedia lain. Bila berkenan, Anda juga dapat membantu saya menambahkan Penyedia di sini dengan berkomentar di dalam kolom komentar.

Konfigurasi acme.sh untuk Domain tertentu

Salah satu kelebihan acme.sh selain ringan dan kompatibel di hampir semua Sistem Operasi berbasis *nix adalah mampu memberikan fleksibilitas bagi Anda untuk mengatur perkakasnya dan mengatur apa yang dilakukan baik sebelum dan sesudah mengeksekusi perkakas tersebut melalui konfigurasinya.

Konfigurasi tersebut bisa Anda lakukan untuk Domain tertentu, sehingga tidak semua Domain yang menggunakan acme.sh terkena efek nya. Hal ini akan menjadi kelebihan tersendiri sejak penyedia Hosting/CDN memperlakukan setiap Domain dengan berbeda-beda.

Jadi, sebelum membuat/menentukan skrip untuk me-renew/memperbarui sertifikat SSL, mungkin ada baiknya Anda pelajari terlebih dahulu cara mengkonfigurasi acme.sh untuk Domain tertentu di sini, meskipun ini bisa langsung Anda lewati.

Pertama-tama, lihat isi dari berkas domain.com.conf terlebih dahulu, seperti biasa, ganti domain.com dengan Domain Anda.

Contoh isi dari berkas domain.com.conf adalah sebagai berikut:

$ cat ${HOME}/.acme.sh/domain.com/domain.com.conf
Le_Domain='domain.com'
Le_Alt='*.domain.com'
Le_Webroot='dns_cf'
Le_PreHook=''
Le_PostHook=''
Le_RenewHook=''
Le_API='https://acme.zerossl.com/v2/DV90'
Le_Keylength='ec-384'
Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/kyxxxxxxxxxxxxxxxxxxxx/finalize'
Le_LinkOrder='https://acme.zerossl.com/v2/DV90/order/kyxxxxxxxxxxxxxxxxxxxx'
Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/20xxxxxxxxxxxxxxxxxxxx'
Le_CertCreateTime='1625708943'
Le_CertCreateTimeStr='Thu Jul  8 01:49:03 UTC 2021'
Le_NextRenewTimeStr='Mon Sep  6 01:49:03 UTC 2021'
Le_NextRenewTime='1630806543'

Jika Anda ingin merubahnya, silahkan Anda rubah/edit isi dari berkas tersebut dengan Editor Teks favorit Anda.

Dari semua variabel, yang boleh dirubah adalah nilai dari variabel Le_PreHook, Le_PostHook, dan Le_RenewHook saja. Bagaimana dengan lainnya? Untuk lainnya saya sarankan agar Anda tidak merubahnya, apalagi Le_Domain, Le_Alt, Le_API, Le_OrderFinalize, Le_LinkOrder, dan Le_LinkCert, kecuali jika Anda memahami apa yang sedang Anda lakukan dan siap menerima resikonya.

Jadi, saya bahas yang boleh dirubah saja. Berikut adalah penjelasan mengenai nilai dari konfigurasi/variabel di atas:

  • Le_PreHook: adalah perintah yang akan dieksekusi sebelum perkakas acme.sh menjalankan tugasnya untuk menerbitkan/memperbarui sertifikat SSL
  • Le_PostHook: adalah perintah yang akan dieksekusi setelah perkakas acme.sh menjalankan tugasnya untuk menerbitkan/memperbarui sertifikat SSL, tidak peduli apakah berhasil atau gagal
  • Le_RenewHook: adalah perintah yang akan dieksekusi setelah perkakas acme.sh berhasil memperbarui sertifikat SSL nya

Ketiga variabel tersebut bisa Anda isi dengan perintah itu langsung, contoh berikut ini adalah ketika Anda ingin menyetak teks “Halo, Dunia!” di sebelum perkakas acme.sh menjalankan tugasnya:

Le_PreHook='echo "Halo, Dunia!"'

Namun, jika perintah yang ingin Anda jalankan itu mengandung multi-baris atau lebih dari satu baris perintah, maka saya sarankan Anda buat saja berkas Shell di dalam direktori di mana berkas domain.conf itu berada (cth. di dalam direktori ${HOME}/.acme.sh/domain.com/).

Setelah itu, rubah nilai dari variabel Le_RenewHook, Le_PreHook atau Le_PostHook menjadi cara Anda mengeksekusikan/menjalankan berkas skrip nya. (Disarankan: /usr/bin/env sh nama-berkas-skrip.sh)

Tapi perlu diingat, perintah yang dieksekusi/dijalankan melalui acme.sh akan menggunakan direktori di mana berkas domain.com.conf itu berada sebagai direktori kerjanya.

Jadi, segala aktivitas masukkan/keluaran pada penyimpanan yang telah Anda lakukan saat perintah tersebut dijalankan (cth. membuat sebuah berkas atau folder, melihat isi dari berkas dengan perintah cat, dll) tanpa menyertakan direktori lengkapnya, maka Anda akan melakukan nya di dalam direktori ${HOME}/.acme.sh/domain.com/.

Setelah perintah tersebut berhasil dieksekusi, maka nilai variabel yang telah Anda rubah sebelumnya akan menjadi seperti berikut:

__ACME_BASE64__START_(BARIS_PERINTAH_DALAM_BENTUK_BASE64)__ACME_BASE64__END_

(BARIS_PERINTAH_DALAM_BENTUK_BASE64) adalah Base64 dari perintah yang sebelumnya Anda terapkan di dalam variabel tersebut. Ya, acme.sh secara otomatis meng-konversikan perintah yang Anda tentukan menjadi Base64.

Contoh Kasus: Menjalankan sebuah Berkas Skrip setelah Memperbarui Sertifikat SSL

Contohnya Si Udin membuat sebuah berkas skrip yang bernama renew.sh untuk memperbarui SSL pada domain www.si-udin.com miliknya yang di Hosting menggunakan Netlify dan dia ingin agar skrip tersebut dijalankan/dieksekusi setelah sertifikat SSL sukses diperbarui.

Isi berkas skrip nya sebagai berikut:

#!/usr/bin/env sh

# Skrip ini saya lisensikan di bawah lisensi "The Unlicense" (https://unlicense.org/)
# Silahkan Anda kembangkan sendiri kode skrip di bawah ini

PLAIN_CERT="$(cat www.si-udin.com.cer | awk '{printf "%s\\n", $0}')"
PLAIN_KEY="$(cat www.si-udin.com.key | awk '{printf "%s\\n", $0}')"
PLAIN_CA="$(cat ca.cer | awk '{printf "%s\\n", $0}')"
NETLIFY_ACCESS_TOKEN="ACCESS_TOKEN_KAMU_DI_SINI"
NETLIFY_SITE_ID="SITE_ID_KAMU_DI_SINI"

curl -X POST \
     -H 'Authorization: Bearer '${NETLIFY_ACCESS_TOKEN}'' \
     -H 'content-type: application/json' \
     --data '{"certificate": "'"${PLAIN_CERT}"'", "key": "'"${PLAIN_KEY}"'", "ca_certificates": "'"${PLAIN_CA}"'"}' \
     --url https://api.netlify.com/api/v1/sites/${NETLIFY_SITE_ID}/ssl

Kenapa perintah cat nya mengarahkan kepada berkas nya langsung? Kenapa tidak ditentukan direktori nya? Itu karena suatu saat skrip tersebut dijalankan, maka direktori kerjanya adalah ${HOME}/.acme.sh/www.si-udin.com yang di dalam nya ada berkas www.si-udin.com.cer, www.si-udin.com.key dan ca.cer dan itu diperlukan bagi Netlify, serta itu merupakan tempat berkas www.si-udin.com.conf berada, yang gunanya untuk mengkonfigurasi supaya skrip tersebut bisa digunakan.

Sehingga, dia tidak perlu menentukan direktori nya lagi secara absolut, dia cuma perlu menuliskan nama berkas nya saja.

Setelah pembuatan skrip nya selesai, ia simpan berkas tersebut, berkas skrip tersebut ia simpan di dalam direktori ${HOME}/.acme.sh/www.si-udin.com/, sehingga berkas tersebut berdekatan dengan berkas konfigurasi nya, yakni www.si-udin.com.conf.

Setelah menyimpan nya, ia perlu melakukan konfigurasi supaya Skrip nya bisa dijalankan saat acme.sh sukses memperbarui sertifikatnya. Untuk melakukan konfigurasi, maka ia perlu mengubah isi dari berkas ${HOME}/.acme.sh/www.si-udin.com/www.si-udin.com.conf.

Di dalam berkas tersebut ada banyak variabel yang kosong, termasuk Le_PreHook, Le_PostHook, dan Le_RenewHook. Karena ia mau menjalankan skrip tersebut saat sertifikat SSL sukses diperbarui, jadi ia memilih untuk mengisi variabel Le_RenewHook ketimbang variabel lain.

Nah, dia isi itu dengan /usr/bin/env sh renew.sh. Jadi, variabel nya akan menjadi seperti berikut:

Le_RenewHook='/usr/bin/env sh renew.sh'

Setelah itu, ia simpan berkas tersebut dan beberapa bulan kemudian, acme.sh memperbarui sertifikat SSL tersebut dan berhasil, lalu skrip tersebut akhirnya berhasil dijalankan dan www.si-udin.com telah menggunakan sertifikat yang lebih baru.

Setelah skrip tersebut berhasil dijalankan dan melihat lagi konfigurasi nya, ia melihat kalau nilai dari variabel Le_RenewHook itu berubah menjadi seperti berikut:

Le_RenewHook='__ACME_BASE64__START_L3Vzci9iaW4vZW52IHNoIHJlbmV3LnNo__ACME_BASE64__END_'

Itu artinya, perintah tersebut telah dikonversikan menjadi Base64 secara otomatis oleh acme.sh saat perintah tersebut dieksekusi. L3Vzci9iaW4vZW52IHNoIHJlbmV3LnNo adalah Base64 dari perintah /usr/bin/env sh renew.sh.

Nah, sekarang Anda sudah paham, kan? Jika sudah paham, silahkan Anda lanjut ke bagian selanjutnya.

Membuat Skrip untuk me-renew SSL

Setelah Anda mempelajari di bagian-bagian sebelumnya, sekarang Anda tinggal membuat Sertifikat SSL ini bisa diperbarui/di-renew secara otomatis. Lalu, bagaimana caranya?

Anda perlu membuat sebuah skrip terlebih dahulu agar SSL dapat diperbarui, ada dua metode yang bisa Anda coba. Metode nya sebagai berikut:

Metode ke-1: Memanfaatkan Konfigurasi dari acme.sh (Disarankan)

Anda bisa gunakan konfigurasi dari perkakas acme.sh agar dia mengeksekusi baris perintah setelah acme.sh berhasil memperbarui sertifikat SSL nya untuk Domain tertentu. Untuk selengkapnya, bisa Anda pelajari itu di bagian sebelumnya.

Kenapa saya rekomendasikan? Karena dengan ini Anda tidak perlu memanggil API setiap hari yang memakan kuota Internet Anda (terlebih jika Anda menggunakan Data Seluler) karena mengunggah berkas-berkas yang diperlukan, Anda bisa memanggil API tersebut hanya di saat tertentu saja (cth. Hanya saat acme.sh sukses memperbarui sertifikat SSL nya).

Selain itu, jika Anda menyalinkan acme.sh ke perangkat lain, maka acme.sh tetap akan mengeksekusikan skrip tersebut di perangkat lain sesuai konfigurasi yang telah Anda atur di dalamnya daripada Anda membuat skrip sendiri secara terpisah.

Setelah melakukan konfigurasi, Anda tinggal perlu menunggu sampai acme.sh berhasil memperbarui sertifikat SSL nya untuk Anda, pastikan Cron Job dalam keadaan aktif.

Metode ke-2: Membuat Berkas Skrip Shell

Jika Anda lebih suka membuat Skrip secara terpisah, maka Anda bisa membuat sebuah Berkas Skrip Shell nya terlebih dahulu agar sertifikat SSL dapat diperbarui dengan menggunakan Shell/di dalam Terminal, untuk isinya Anda bisa pelajari contohnya berikut:

#!/usr/bin/env sh

# Skrip ini saya lisensikan di bawah lisensi "The Unlicense" (https://unlicense.org/)
# Silahkan Anda kembangkan sendiri kode skrip di bawah ini

### Di bawah ini adalah perintah untuk memperbarui Sertifikat SSL melalui acme.sh
### dengan memanfaatkan parameter `--cron` nya
${HOME}/.acme.sh/acme.sh --cron --home ${HOME}/.acme.sh

### Di bawah ini adalah memasukkan Informasi yang diperlukan untuk memasang SSL di Netlify 
### ke dalam Variabel
NETLIFY_ACCESS_TOKEN="ACCESS_TOKEN_KAMU_DI_SINI"
PLAIN_CERT="$(awk '{printf "%s\\n", $0}' ${HOME}/.acme.sh/domain.com/domain.com.cer)"
PLAIN_KEY="$(awk '{printf "%s\\n", $0}' ${HOME}/.acme.sh/domain.com/domain.com.key)"
PLAIN_CA="$(awk '{printf "%s\\n", $0}' ${HOME}/.acme.sh/domain.com/ca.cer)"

### Di bawah ini adalah memasukkan Informasi yang diperlukan untuk memasang SSL di Bunny.net 
### ke dalam Variabel
BUNNY_ACCESS_KEY="ACCESS_KEY_KAMU_DI_SINI"
BASE64_FULLCHAIN_CER="$(cat ${HOME}/.acme.sh/domain.com/fullchain.cer | openssl base64 -A)"
BASE64_KEY="$(cat ${HOME}/.acme.sh/domain.com/domain.com.key | openssl base64 -A)"

### Di bawah ini adalah perintah untuk memasang/memperbarui SSL di Netlify
curl -X POST \
     -H 'Authorization: Bearer '${NETLIFY_ACCESS_TOKEN}'' \
     -H 'content-type: application/json' \
     --data '{"certificate": "'"${PLAIN_CERT}"'", "key": "'"${PLAIN_KEY}"'", "ca_certificates": "'"${PLAIN_CA}"'"}' \
     --url https://api.netlify.com/api/v1/sites/SITE_ID_KAMU_DI_SINI/ssl

### Di bawah ini adalah perintah untuk memasang/memperbarui SSL di Bunny.net
curl -X POST \
     -H 'Accept: application/json' \
     -H 'AccessKey: '${BUNNY_ACCESS_KEY}'' \
     -H 'Content-Type: application/json' \
     --data '{"Hostname": "CUSTOM_HOSTNAME_KAMU_DI_SINI", "Certificate": "'"${BASE64_FULLCHAIN_CER}"'", "CertificateKey": "'"${BASE64_KEY}"'"}' \
     --url https://api.bunny.net/pullzone/PULL_ZONE_ID_KAMU_DI_SINI/addCertificate

### Di bawah ini adalah baris perintah untuk membuat berkas log untuk memastikan bahwa Cron telah berhasil dijalankan
echo "Cron sukses dijalankan. Waktu: $(date +"%Y-%m-%d %H:%M:%S%z")" >> renew-ssl.log

Silahkan Anda pelajari skrip di atas dan kembangkan sendiri skrip nya menjadi versi Anda sendiri. Jika sudah selesai, maka simpanlah berkas tersebut, boleh Anda namakan dengan apa saja dan disimpan di mana saja asal bisa Anda gunakan kembali.

Tapi saya sarankan agar Anda menyimpan nya di dalam folder ${HOME}, dan saya asumsikan bahwa Anda menamainya dengan renew-ssl.sh agar lebih mudah, karena pastinya Anda menamainya dengan nama yang berbeda.

Jika sudah tersimpan, Anda bisa tes skrip tersebut dengan perintah sh /lokasi/ke/berkas/renew-ssl.sh atau ./lokasi/ke/berkas/renew-ssl.sh di dalam Terminal Anda. Jika sudah berhasil, maka Anda tinggal jadwalkan saja agar skrip otomatis dijalankan sesuai jadwal yang telah Anda atur.

Otomatisasi Skrip dengan Cron Job

Anda bisa membuat Skrip tersebut (Melalui Konfigurasi atau berkas renew-ssl.sh) berjalan secara Otomatis/terjadwal dengan Cron Job. Bagaimana caranya? Caranya sebagai berikut:

Edit Crontab dengan perintah berikut: (tanpa perlu akses root ataupun menggunakan sudo)

crontab -e

Saat mengedit, Anda akan menemukan sebuah Cron dengan teks yang mirip seperti berikut:

6 0 * * * "/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" > /dev/null

"/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" adalah perintahnya. Perintah pada Crontab untuk acme.sh mungkin akan berbeda-beda, karena perbedaan Nama Pengguna, dll.

Jika Anda menggunakan Metode ke-2 untuk membuat Skrip nya, ganti itu dengan perintah untuk mengeksekusi berkas renew-ssl.sh, contohnya seperti ini: /usr/bin/env sh /lokasi/ke/berkas/renew-ssl.sh, tapi jika tidak ya sebaiknya tidak usah diganti.

Jika Anda menyimpan skrip tersebut di dalam folder ${HOME}, maka Anda dapat menambahkan variabel nya di sana, contoh: /usr/bin/env sh ${HOME}/lokasi/ke/berkas/renew-ssl.sh.

6 0 * * * adalah parameter Crontab yang menentukan kapan Perintah tersebut dilaksanakan, 6 0 * * * artinya kalau perintah tersebut akan dilaksanakan pada pukul 00:06 untuk setiap harinya. Parameter yang Anda temukan nanti mungkin berbeda-beda, jadi silahkan Anda ganti parameter tersebut dengan sesuka Anda, selama masih mengikuti aturan dari Cron.

Misalnya, jika Anda ingin perintah tersebut dieksekusi pada menit ke-0 dan setiap jam ke-2 dari pukul 0 hingga 23, atau setiap 2 jam sekali pada pukul dengan kelipatan 2 di menit ke-0 (seperti pukul 00:00, 02:00, 04:00, 06:00, 08:00, 10:00, 12:00, 14:00, dst), maka Anda bisa menggantinya menjadi 0 0/2 * * *. Contohnya seperti berikut:

0 0/2 * * * /usr/bin/env sh ${HOME}/lokasi/ke/berkas/renew-ssl.sh > /dev/null

Atau, contoh lainnya seperti berikut:

0 0/2 * * * "/home/username/.acme.sh"/acme.sh --cron --home "/home/username/.acme.sh" > /dev/null

Atau, Anda bisa manfaatkan Situs Web Crontab.guru untuk membantu Anda dalam menentukan Parameter pada Crontab nya.

Untuk > /dev/null nya biarkan saja, fungsinya itu hanya membuang keluaran, karena ini dijalankan melalui Cron Job, maka keluaran tidak diperlukan untuk itu. Tapi Anda bisa mengganti atau menghapusnya jika merasa tidak yakin.

Setelah semuanya selesai, simpan berkas tersebut dan keluar dari editor teks yang Anda gunakan sekarang. Setelahnya, Cron Job akan dijalankan, tinggal tunggu waktunya saja agar skrip dijalankan sesuai jadwal.

Renew SSL secara Otomatis di Android

Catatan:

Ini berlaku bagi Anda yang melakukan semuanya dengan menggunakan Komputer/Laptop Anda. Jika Anda melakukan semuanya di Ponsel Pintar (Smartphone) dengan Sistem Operasi Android Anda, maka Anda tidak perlu mengikuti bagian ini.

Memperbarui/Me-renew Sertifikat SSL secara Otomatis di Ponsel Pintar (Smartphone) yang menggunakan Sistem Operasi Android di Latar Belakangnya (Background) itu merupakan kelebihan tersendiri jika dibandingkan dengan di Komputer PC/Laptop.

Selain karena bisa dibawa ke mana-mana dan sering digunakan, ponsel juga cenderung bisa dinyalakan selama 24x7 jam secara nonstop (kecuali jika kehabisan baterai), Anda hanya perlu koneksi Internet saja.

Serta, perangkat ponsel pintar dengan Sistem Operasi Android juga sangat bervariasi (tidak eksklusif dibuat oleh/untuk 1 merek saja), begitupula dengan harganya, jadi saya yakin banyak orang yang memilikinya, mungkin termasuk Anda?

Tanpa basa-basi lagi, caranya sebagai berikut:

  1. Pastikan Perangkat Lunak pada Ponsel Android Anda sudah memenuhi Persyaratan nya terlebih dahulu. Sudah? Kalau begitu, Anda bisa lanjut.
  2. Sebelum itu, Anda perlu menyalinkan direktori acme.sh ke perangkat lain dari Komputer PC/Laptop Anda. Kompresi direktori dan berkas tersebut dengan perintah berikut dari Komputer PC/Laptop Anda:
cd
tar --exclude '.acme.sh/deploy' --exclude '.acme.sh/notify' --exclude '.acme.sh/dnsapi' --exclude '.acme.sh/acme.sh' --exclude '.acme.sh/*.env' --format pax -cvzf acme.sh.tar.gz .acme.sh

Anda bisa mengganti acme.sh.tar.gz menjadi nama berkas yang Anda inginkan, asal terakhirnya ada .tar.gz nya.

Catatan: Jika Anda menggunakan Metode ke-2, maka Anda perlu kompresi berkas renew-ssl.sh nya juga.

  1. Setelah meng-kompresinya, silahkan Anda langsung menyalinkan nya ke dalam penyimpanan perangkat Anda. Jika perlu, silahkan lakukan enkripsi pada berkas tersebut terlebih dahulu sebelum menyalinkan/mengirimkan nya

  2. (Catatan: Mulai sekarang/di langkah ini, gunakan Ponsel Pintar Anda dan langkah seterusnya akan menggunakan Ponsel Pintar, tidak lagi menggunakan Komputer PC/Laptop) Setelah disalin ke dalam perangkat Anda, silahkan Anda pindahkan berkas tersebut ke dalam direktori “Home” yang berada di dalam Penyimpanan Termux.

    Pastikan Aplikasi Manajemen Berkas di Android Anda dapat mengakses Penyimpanan Termux, sesuai dengan persyaratan

  3. Setelah itu, buka Termux, lalu instal terlebih dahulu acme.sh nya di dalam Termux dengan perintah berikut:

curl https://get.acme.sh | sh -s
  1. Setelah Anda meng-instal nya, dekripsi berkas acme.sh.tar.gz jika Anda melakukan enkripsi, lalu ekstrak berkas tersebut dengan perintah berikut:
tar -xvzf acme.sh.tar.gz
  1. Setelah diekstrak, aturlah USER_PATH di dalam berkas ${HOME}/.acme.sh/account.conf dengan perintah berikut:
cp ${HOME}/.acme.sh/account.conf ${HOME}/.acme.sh/account.conf.1 ## Backup dulu
sed -i '/USER\_PATH\=/d' ${HOME}/.acme.sh/account.conf
printf "USER_PATH='%s'\n" ${PATH} >> ${HOME}/.acme.sh/account.conf
  1. Jika Anda membuat berkas skrip terpisah (mengikuti Metode ke-2), maka aturlah Crontab di Termux agar Berkas Skrip renew-ssl.sh bisa dieksekusi secara terjadwal oleh Cron Job. Bila masih belum paham/lupa, silahkan Anda baca bagian Otomatisasi dengan Cron Job di atas.

    Jika Anda mengikuti Metode Pertama, maka harusnya Anda bisa lewati langkah ini, karena biasanya Crontab secara otomatis di atur setelah Anda meng-instal perkakas acme.sh nya.

    Kalau tidak yakin, Anda bisa mengaturnya secara manual atau eksekusikan perintah acme.sh --install-cronjob di dalam Termux Anda untuk memasang Cron Job nya.

  2. Jika sudah selesai, maka jangan tutupi Aplikasi Termux nya (cth. Dengan menutup/mengakhiri semua sesi Termux dengan perintah exit, Berhenti Paksa Termux, Mulai Ulang Perangkat, Mematikan Perangkat, dll), biarkan saja dia berjalan di latar belakang.

    Jika kamu menutupinya, silahkan buka Termux nya lagi, lalu eksekusikan perintah: sv-enable crond untuk mengaktikan kembali layanan Cron nya

  3. Jika ini berhasil, maka sebaiknya Anda hapus Cron Job yang berkaitan dengan acme.sh atau pembaruan sertifikat SSL di dalam Komputer PC/Laptop Anda, hal ini dilakukan agar supaya tidak menimbulkan konflik saat memperbarui sertifikat SSL nya hanya karena Informasi nya sama.

    Jadi, serahkan saja kepada ponsel Anda untuk memperbarui sertifikat SSL nya, sedangkan PC/Laptop Anda gunakan untuk memperbarui dan mengkonfigurasi acme.sh nya.

    Caranya bisa hapus manual melalui crontab -e, atau gunakan perintah acme.sh --uninstall-cronjob untuk menghapusnya secara otomatis

Ya udah, gitu aja. Setelah Anda mengikuti langkah-langkah di atas, silahkan gunakan ponsel Anda dengan sebagaimana mestinya tanpa perlu menutup Termux nya.

Akhirnya, selesai juga setelah mengikuti langkah-langkah di atas. Gimana, pusing kan? Atau, malah bosen? Iyalah, gimana tidak, artikel ini saja panjang lebarnya nya kebangetan.

Ya sudah, semua pembahasan di artikel ini sudah selesai, kamu bisa akhiri saja sampai sini jika Anda tidak mempunyai keluhan apapun. Tapi jika Anda memiliki pertanyaan, maka ada baiknya baca terlebih dahulu bagian berikutnya sebelum bertanya, barangkali saja pertanyaan dari pikiran kamu bisa terjawab di sini.

Pertanyaan yang (mungkin) akan sering ditanya, beserta jawaban nya

Pertanyaan ke-1: Apa itu Protokol ACME?

Jawab: Protokol ACME (singkatan dari “Automatic Certificate Management Environment”) adalah protokol komunikasi untuk mengotomatisasi interaksi antara Penyelenggara Sertifikat (bahasa Inggris: Certificate Authority atau disingkat dengan CA) dan Pengguna Server Web nya.

Hal ini memungkinkan untuk penyebaran/penginangan Infrastruktur Kunci Publik/Umum (bahasa Inggris: Public Key Infrastructure atau disingkat dengan PKI) dengan biaya yang rendah/murah.

Protokol tersebut dirancang oleh pihak Internet Security Research Group (ISRG), yang pada awalnya untuk layanan Let’s Encrypt mereka.

Protokol yang berbasis pada penyampaian pesan berformat JSON melalui Protokol HTTPS, telah ditetapkan sebagai Standar Internet di dalam RFC 8555 oleh kelompok kerja IETF yang disewanya sendiri.

Pertanyaan ke-2: Apa itu CA?

Certificate Authority (disebut juga sebagai: Certification Authority) atau disingkat CA (bahasa Indonesia: Penyelenggara Sertifikat/Penyelenggara Sertifikat Elektronik atau disingkat dengan PSrE) adalah sebuah entitas yang mengeluarkan/menerbitkan sertifikat digital dengan memverifikasi identitas pihak subjek (seperti Situs Web, Alamat Surel, Perusahaan, Organisasi/Lembaga/Yayasan atau Perseorangan).

Dalam Sertifikat SSL, CA juga bertindak sebagai pihak ketiga yang tepercaya/dipercaya baik oleh subjek (pemilik) sertifikat dan oleh pihak yang mengandalkan sertifikat (Perangkat Lunak).

Pertanyaan ke-3: Apa saja CA selain ZeroSSL dan Let’s Encrypt yang bisa menggunakan Protokol ACME?

Jawab: Untuk yang gratisan, ada BuyPass Go SSL dan SSL.com.

Sedangkan yang berbayar ada DigiCert, Entrust dan mungkin SSL.com ada versi berbayarnya juga.

Pertanyaan ke-4: Bagaimana caranya agar acme.sh menggunakan CA Let’s Encrypt atau lain nya sebagai CA Asali/Baku (Default CA), bukan ZeroSSL?

Jawab: Jika Anda ingin menggantikan CA Asali/Baku pada acme.sh, maka Anda tinggal jalankan perkakas acme.sh dengan parameter --set-default-ca --server opsi_ca.

Maka format perintah nya akan seperti berikut:

acme.sh --set-default-ca --server opsi_ca

Anda bisa ganti opsi_ca dengan nama pendek dari CA yang didukung oleh acme.sh atau dengan Alamat URL Server ACME yang dimiliki oleh CA. Untuk mengetahui nama pendek atau Alamat URL nya, Anda bisa mengunjungi Halaman Wikinya.

Contoh perintah di bawah ini adalah menggantikan CA Asali/Baku menjadi Let’s Encrypt:

acme.sh --set-default-ca --server letsencrypt

Penggantian ini harusnya dilakukan sebelum Anda menerbitkan sertifikat SSL apapun, karena ini hanya berefek jika Anda menerbitkan sertifikat SSL terbaru. Tapi jika Anda melakukan itu setelah menerbitkan sertifikat SSL nya, maka Anda perlu menggantikan sertifikat SSL tersebut.

Pertanyaan ke-5: Bagaimana caranya agar saya bisa menggantikan sertifikat SSL menjadi dari Let’s Encrypt atau CA lain nya, saya tidak ingin sertifikat SSL dari ZeroSSL?

Jawab: Caranya Anda tinggal terbitkan ulang sertifikat SSL oleh CA yang berbeda secara paksa.

Saat menerbitkan sertifikat SSL, Anda perlu menambahkan parameter --server opsi_ca dan itu harus dibarengi dengan parameter --force agar acme.sh dapat melakukan nya dengan paksa. Tanpa parameter/argumen --force, maka Anda tidak mungkin bisa mengganti nya.

Format perintah nya akan seperti berikut:

acme.sh --issue -d domain.com -d www.domain.com --server opsi_ca --force

Anda bisa ganti opsi_ca dengan nama pendek dari CA yang didukung oleh acme.sh atau dengan Alamat URL Server ACME yang dimiliki oleh CA, seperti yang telah saya bahas di pertanyaan sebelumnya.

Pertanyaan ke-6: Bagaimana caranya agar saya bisa menghapus sertifikat nya?

Jawab: Jika Anda berniat untuk menghapus sertifikat SSL dari acme.sh, maka Anda perlu mengetahui Domain mana yang ingin dihapus sertifikat SSL nya dan Domain Pertama yang Anda masukkan saat menerbitkan sertifikat SSL nya.

Pertama-tama, Anda perlu tahu Domain Pertama yang Anda masukkan dengan mengetahui isi dari direktori acme.sh nya, memakai perintah berikut: (beserta keluarannya)

$ ls -la ${HOME}/.acme.sh
total 276
drwx------  10 user user   4096 Agu 16 01:13 .
drwxr-xr-x 137 user user  20480 Agu 16 01:43 ..
-rw-------   1 user user    560 Agu 12 22:03 account.conf
-rwx--x--x   1 user user 207935 Agu 11 16:56 acme.sh
-rw-------   1 user user     92 Jul  4 18:22 acme.sh.env
drwx------   4 user user   4096 Agu 12 14:14 ca
drwxr-xr-x   2 user user   4096 Agu 11 16:56 deploy
drwxr-xr-x   2 user user   4096 Agu 11 16:56 dnsapi
drwx------   2 user user   4096 Jul 22 12:06 '*.domain.com'
drwx------   2 user user   4096 Jul 22 12:06 '*.domain.com_ecc'
drwx------   2 user user   4096 Jul 22 12:06 domain.com
drwx------   2 user user   4096 Jul 22 12:06 domain.com_ecc
-rw-------   1 user user    335 Agu 16 01:12 http.header
drwxr-xr-x   2 user user   4096 Agu 11 16:56 notify

Nah, sekarang lihat hasil keluaran di atas, itu ada nama domain domain.com dan *.domain.com, itu adalah domain pertama yang Anda masukkan saat menerbitkan sertifikat SSL, beserta ada versi ECC nya (cth. domain.com_ecc dan *.domain.com_ecc).

Anda bisa pilih salah satu domain yang ingin Anda hapus, di pembahasan kali ini saya menghapus sertifikat SSL untuk domain.com yang bukan merupakan sertifikat SSL dengan kunci ECC.

Untuk memasukkan alamat Domain nya, Anda tidak perlu mengingat deretan domain saat menerbitkan SSL, Anda cukup tahu Domain Pertama yang Anda masukkan saat menerbitkan sertifikat SSL nya dan itu bisa Anda lihat melalui nama direktorinya saja.

Setelah itu, Anda bisa menghapusnya dengan perintah berikut:

acme.sh --remove -d domain.com

Nanti keluaran nya akan seperti berikut:

[Sen 16 Agu 2021 01:12:56  WIB] domain.com is removed, the key and cert files are in /home/username/.acme.sh/domain.com
[Sen 16 Agu 2021 01:12:56  WIB] You can remove them by yourself.

Jika perlu, Anda juga bisa menghapus secara manual folder tersebut sesuai dengan keluaran agar lebih bersih.

Tapi jika Anda ingin menghapus sertifikat SSL versi ECC nya, maka Anda tinggal perlu tambahkan paramter --ecc nya saja. Format perintah nya seperti berikut:

acme.sh --remove -d domain.com --ecc

Jadi, sekarang Anda sudah paham kan caranya?

Pertanyaan ke-7: Sertifikat SSL sudah saya hapus, tapi pas saya jalankan acme.sh dalam Cron atau untuk memperbarui semua SSL (--renew-all), kok domain yang terhapus masih ada saat saya cek di Terminal?

Jawab: Itu karena Anda belum menghapus direktori nya setelah menghapus sertifikat SSL dari perkakas acme.sh nya. Jadi, Anda perlu menghapus direktori tersebut secara manual.

Solusi nya adalah Hapus Direktori tersebut (cth. ${HOME}/.acme.sh/domain.com untuk domain.com) secara manual setelah menghapus sertifikat SSL nya.

Pertanyaan ke-8: Kenapa harus acme.sh dan kenapa tidak pakai yang lain seperti Certbot atau Lego?

Jawab: Karena acme.sh lebih sederhana dan lebih mudah dipelajari, serta fiturnya pun lumayan lengkap juga, apalagi untuk kasus umum seperti menerbitkan dan memperbarui sertifikat SSL.

Selain itu, acme.sh juga mendukung berbagai Sistem Operasi *nix dan lebih ringan karena itu merupakan berkas skrip Shell, serta mendukung berbagai layanan DNS Otoritatif yang ada di Internet dan berbagai CA asali selain Let’s Encrypt dan ZeroSSL yang bisa Anda ganti tanpa perlu memasukkan Alamat URL nya lagi.

Mengenai alasan kenapa saya tidak menggunakan Lego sebagai perkakas klien ACME, karena jujur saja saya baru tahu perkakas tersebut dan saya sendiri sudah lama terbiasa dengan acme.sh, jadi saya perlu waktu untuk mempelajari nya.

Tapi, jika Anda lebih suka atau lebih memilih untuk menggunakan Lego atau Certbot, ya silahkan saja.

Pertanyaan ke-9: Selain acme.sh, apakah ada alternatifnya untuk Windows?

Jawab: Ada, namanya win-acme yang mendukung Windows secara native. Sebenarnya, Anda juga bisa menggunakan Certbot, dia juga mendukung Windows.

Tapi, saya belum coba dan keliatan nya saya lebih suka acme.sh daripada lain nya, meskipun saya harus menggunakan WSL agar mengoperasikan acme.sh nya. Kalo mau pake ya silahkan.

Pertanyaan ke-10: Bagaimana caranya saya hapus acme.sh sepenuhnya?

Jawab: Anda tinggal ketik perintah berikut:

acme.sh --uninstall

Lalu, hapus sebuah skrip yang berkaitan dengan acme.sh di dalam berkas Skrip Shell Interaktif milik Anda, seperti di dalam berkas ${HOME}/.bashrc atau ${HOME}/.zshrc.

Setelah itu, gunakan perintah source untuk menyegarkan kembali Shell Anda. Kalau perlu, Anda juga dapat menghapus direktori acme.sh dengan perintah rm -rf ${HOME}/.acme.sh jika direktori tersebut masih ada.

Pertanyaan ke-11: Jika Netlify hanya menerima sertifikat SSL dalam bentuk Teks Biasa, kenapa kita pake perintah awk? Kenapa gak pake perintah cat aja?

Jawab: Karena isi berkas sertifikat itu mengandung multi-baris, sedangkan Netlify tidak menerima itu.

Jika saya hanya menggunakan perintah cat, maka akan tampil isi dari berkas sertifikat yang sebenarnya sebagai keluaran.

Jadi, saya ganti setiap jeda baris/baris pemutus (line break) dengan \n menggunakan perintah awk, agar si Netlify bisa memproses permintaan dari kita.

Pertanyaan ke-12: Kenapa pake OpenSSL untuk melakukan konversi/encoding teks ke Base64? Kenapa gak pake perintah base64 aja?

Jawab: Karena artikel ini saya buat agar bisa diikuti oleh banyak perangkat, seperti Pengguna Windows, GNU/Linux, Android, BSD dan macOS. Maka saya usahakan agar perintah-perintah yang saya bahas di sini kompatibel oleh banyak perangkat lunak dengan hasil yang sama.

Sedangkan base64 itu belum tentu kompatibel dan akan sama hasilnya untuk semua perangkat, base64 milik GNU (GNU coreutils) dan yang bukan milik GNU itu benar-benar berbeda, baik dari segi perintah ataupun hasil keluaran nya.

Serta, macOS tidak menggunakan “GNU coreutils”, sehingga perintah dan keluaran nya pun belum tentu sama dengan perintah dan keluaran yang ada di Sistem Operasi lain, seperti GNU/Linux.

Terlebih, saya memiliki ekspektasi bahwa keluaran nya adalah Base64 tanpa multi-baris atau baris pemisah (line break) sama sekali, sedangkan perintah base64 belum tentu atau bahkan bisa jadi tidak memenuhi ekspektasi saya, tapi saya tidak yakin di Sistem Operasi lain akan seperti apa keluaran nya, sejak perintah-perintahnya saja berbeda.

Jadi, saya gunakan OpenSSL sebagai gantinya, karena saya yakin OpenSSL pasti terinstal di hampir semua Sistem Operasi berbasis Unix/Unix-like (*nix) seperti GNU/Linux, BSD, macOS, dan Sistem Operasi berbasis *nix lain nya.

Kalau di Android Anda tinggal Instal Termux, lalu instal openssl-tools saja di dalam Termux. Bagaimana dengan Windows? Untuk Pengguna Windows sudah saya syaratkan dari awal agar menggunakan Mesin Virtual, Kontainer atau WSL (Windows Subsystem for Linux) sekalian yang sudah terinstal OpenSSL.

Lagian, acme.sh hanya kompatibel dengan Sistem Operasi/Lingkungan *nix, jadi mau-gak mau harus pakai perangkat lunak yang bisa menyediakan lingkungan *nix atau pakai WSL saja sekalian.

Namun, jika Anda bisa menawarkan solusi yang lebih baik daripada ini, silahkan Anda komentar di dalam kolom komentar yang telah disediakan.

Pertanyaan ke-13: Saya menggunakan Windows 10 dan WSL, saya berhasil memasang SSL dengan mengikuti artikel ini, tapi bagaimana cara memperbarui SSL secara Otomatis?

Jawab: Jika Anda mempunyai Ponsel Pintar dengan menggunakan Sistem Operasi Android, saya lebih menyarankan Anda untuk memperbarui SSL secara otomatis melalui Ponsel saja, dan Komputer PC/Laptop Anda gunakan untuk menerbitkan Sertifikat atau saat memakai acme.sh.

Saya sarankan ini karena ponsel bisa dinyalakan selama 24/7 jam secara nonstop (kecuali jika Baterai habis atau Sesi Termux diakhiri), sudah saya bahas tutorialnya secara lengkap di artikel ini.

Tapi jika Anda terpaksa tidak menggunakan Ponsel Pintar Android dengan alasan apapun, Anda bisa melakukan nya di Windows 10.

Untuk saat ini ada dua cara, yakni dengan menggunakan Cron Job yang ada di salah satu distribusi WSL atau menggunakan “Task Scheduler”. Cara-caranya sebagai berikut:

Cara ke-1: Menggunakan Cron Job yang ada di salah satu distribusi WSL

Di salah satu distribusi WSL, seperti Ubuntu 20.04, Anda dapat menggunakan Cron dengan mengaktifkan layanannya terlebih dahulu dengan perintah sudo service cron start, lalu atur Crontab nya seperti biasa.

Tapi, jika sesi distribusi WSL tersebut diterminasi (cth. Diterminasi dengan perintah wsl -t Nama-Distribusi, Komputer PC/Laptop dimatikan/di-shutdown atau dimulai ulang/di-restart, dll), maka semua proses WSL termasuk proses layanan Cron akan dinonaktifkan, sehingga Anda perlu pakai WSL, lalu aktifkan layanan nya dan membiarkan WSL tetap berjalan.

Anda bisa eksekusi C:\Windows\System32\wsl.exe -d Nama-Distribusi -u root /usr/bin/env sh -c service cron start saat Start-up agar layanan Cron bisa diaktifkan tanpa harus mengakses Terminal WSL. Ganti Nama-Distribusi dengan Nama Distribusi WSL yang Anda gunakan sekarang.

Cara ke-2: Menggunakan Task Scheduler

Anda juga dapat menggunakan “Task Scheduler” untuk memperbarui SSL secara otomatis, ini lebih cocok jika Anda membuat Skrip nya dengan terpisah (menjadi Berkas Skrip tersendiri), tapi Anda juga bisa menjalankan Layanan Cron di WSL saat Start-up dengan “Task Scheduler” juga, kok.

Caranya sebagai berikut:

  1. Buka “Task Scheduler

  2. Di dalam folder “Task Scheduler Library”, klik “Create Basic Task” untuk membuat sebuah “Tugas” baru

  3. Nanti akan muncul dialog Wisaya atau Wizard yang menuntun kamu dalam membuat sebuah Tugas. Pertama-tama, tulis Nama dan Deskripsi tugas nya, lalu klik “Next >

  4. Pada langkah “Trigger”, nanti kamu menentukan kapan Tugas tersebut dieksekusi/SSL akan diperbarui, di situ ada salah satu opsi berikut yang bisa Anda pilih: (Klik “Next >” jika sudah selesai)

    • Daily” yang artinya setiap hari
    • Weekly” yang artinya setiap minggu
    • Monthly” yang artinya setiap bulan
    • One time” yang artinya satu kali saja
    • When the computer starts” yang artinya setiap kali komputer dinyalakan dan sistem sudah siap, tidak peduli apakah sudah login atau belum
    • When I log on” yang artinya setiap kamu login
  5. Jika ada sub-langkah setelah “Trigger”, maka tentukan kapan Tugas tersebut dieksekusi dengan memilih opsi-opsi yang ada. Klik “Next >” jika sudah selesai.

  6. Pada langkah “Action”, nanti akan ada 3 pilihan, maka Anda pilih “Start a program

  7. Pada sub-langkah “Start a program”, nanti akan ada kotak teks yang harus Anda isi, berikut adalah Informasinya: (Klik “Next >” jika sudah selesai)

    • Isikan Program/script dengan C:\Windows\System32\wsl.exe
    • Isikan Add arguments (optional) dengan -d Nama-Distribusi -u nama-pengguna /usr/bin/env sh ${HOME}/lokasi/ke/berkas/renew-ssl.sh &
      • Ganti Nama-Distribusi dengan Nama Distribusi WSL yang kamu gunakan
      • Ganti nama-pengguna dengan Nama Pengguna/Username di WSL kamu
      • Ganti ${HOME}/lokasi/ke/berkas/renew-ssl.sh dengan lokasi berkas skrip renew-ssl.sh yang telah kamu buat sebelumnya atau ganti itu dengan ${HOME}/.acme.sh/acme.sh --cron jika Anda menggunakan Metode Pertama dalam membuat skrip.
  8. Pada langkah “Finish”, kamu akan diperlihatkan tugas yang ingin kamu buat. Periksa terlebih dahulu tugas yang ingin kamu buat sebelum diinangkan. Jika merasa yakin, silahkan klik “Finish”.

Cuma kekurangan dari cara “Task Scheduler” adalah jika tugas tersebut dieksekusi, maka akan muncul Jendela/Window yang akibatnya cukup menganggu aktivitas yang sedang Anda lakukan saat menggunakan Aplikasi di Windows (cth. Saat bermain sebuah Gim/Gim Daring, dll)

Mungkin ini bisa diakali jika tugas tersebut dieksekusi setelah kamu masuk/login saja, siapa tahu bisa.

Pertanyaan ke-14: Apa yang terjadi jika rantai pada sertifikat SSL yang terpasang malah tidak sempurna?

Jawab: Tergantung pada ketidaksempurnaannya seperti apa, jika Anda hanya memasang Sertifikat dan Kunci Pribadi (bahasa Inggris: Private Key) nya saja, tanpa sertifikat CA nya, maka perangkat lunak biasanya masih bisa menerima nya, tapi ada yang tidak karena berbagai alasan, salah satunya adalah masalah ‘kepercayaan’ atau keamanan.

Sedangkan jika Anda tidak memasang Kunci Pribadi, maka Sertifikat SSL tersebut biasanya tidak bisa digunakan/tidak diterima oleh Perangkat Lunak, karena Server memerlukan Kunci Pribadi untuk melakukan Dekripsi Data.

Atau, jika Anda tidak memasang Sertifikat untuk Domain nya, sepertinya Anda sudah bisa menebak apa yang akan terjadi.

Kalau jawabanmu adalah “Sertifikat SSL menjadi gagal terpasang dan tidak diterima oleh Perangkat Lunak” maka jawabanmu benar, karena sama saja seperti kamu membuat sebuah Sertifikat, tapi tidak tahu untuk siapa.

Jadi, pasanglah sertifikat SSL dengan benar!

Pertanyaan ke-15: Kok Sertifikat USERTrust yang saya lihat masa berlakunya cuma sampai tahun 2029 saja, bukan nya sampai tahun 2038 seperti yang dibahas tadi?

Jawab: Sertifikat USERTrust yang Anda lihat itu bukanlah Sertifikat Akar nya. Kenapa? Karena ia masih mengakar pada Sertifikat “AAA Certificate Services”.

Syarat agar menjadi “Sertifikat Akar” adalah bahwa ia tidak mengakar pada Sertifikat apapun, melainkan mengakari Sertifikat lain dan dalam hierarki sertifikat SSL, posisi Sertifikat Akar itu merupakan yang paling tinggi dibandingkan dengan bawahan nya.

Jika Anda bingung, silahkan lihat cuplikan berikut:

Seperti yang Anda lihat pada cuplikan di atas, hierarki tertinggi untuk Sertifikat SSL dari ZeroSSL di Windows 10 adalah “Sectigo (AAA)” (sebutan lain dari “AAA Certificate Service”), bukan “USERTrust ECC Certification Authority”.

Berbeda bila dibandingkan dengan Hierarki Sertifikat SSL di Sistem Operasi berbasis *nix seperti GNU/Linux dan Android (terutama versi terbaru), serta Perangkat Lunak lain seperti Mozilla Firefox yang malah menempatkan “USERTrust ECC Certification Authority” sebagai Sertifikat Akar nya.

Jadi, sertifikat akar yang Anda dapatkan itu bergantung pada Perangkat Lunak yang Anda gunakan.

Pertanyaan ke-16: Kenapa Sertifikat Akar yang didapat bisa berbeda-beda di tiap perangkat?

Jawab: Saya kurang tahu, mungkin akan tergantung Perangkat Lunak yang Anda gunakan, bisa jadi karena Perangkat Lunak tersebut mendukung Cross-signing, karena alasan keamanan, ‘kepercayaan’ atau lain nya, yang ini hanya kemungkinan saja, karena saya tidak mempunyai referensi mengenai ini.

Alasan lain kenapa masih menggunakan Sertifikat Akar yang lama oleh Perangkat Lunak adalah karena Perangkat Lunak tersebut sudah ‘berumur’, tidak diperbarui ataupun tidak bisa memperbarui Sertifikat yang ada, sehingga sertifikat akar alternatif belum/tidak ada.

Agar Sertifikat SSL dapat bekerja, maka Perangkat Lunak perlu ‘mempercayai’/mengenali Sertifikat Akar tersebut, salah satunya adalah perlu memiliki Sertifikat Akarnya dan memasangkan nya ke dalam perangkat Anda.

Masalahnya, Sertifikat Akar memiliki masa berlaku, sehingga perlu diperbarui agar sertifikat SSL dapat digunakan secara terus-menerus di dalam perangkat itu.

Memperbarui Perangkat Lunak adalah salah satu cara untuk memperbarui masa berlaku dari sertifikat akar yang lama dan dapat mengenali Sertifikat Akar baru yang sudah bermunculan seiring berjalan nya waktu.

Tapi, jika tidak bisa diperbarui, maka Perangkat Lunak akan menggunakan Sertifikat Akar lama yang tersimpan di dalam tempat penyimpanan sertifikat nya. Jika sertifikat akar tersebut habis masa berlaku nya, maka skenario terburuknya adalah Sertifikat SSL yang telah kamu pasang tidak bisa digunakan.

Akibat dari tidak bisa digunakan nya ini adalah Web/Blog Anda tidak bisa diakses dari perangkat tertentu, karena sertifikat akar habis masa berlaku nya.

Pertanyaan ke-17: Saya mengalami galat/error selama menggunakan acme.sh, bagaimana cara mengatasinya?

Jawab: Cara mengatasinya itu bergantung dengan galat nya. Berbeda pesan galat, maka akan beda penyebabnya, beda penyebab maka solusi pun akan berbeda. Sehingga, saya tidak bisa memberikan solusi yang pasti.

Jadi, pertama-tama Anda perlu diagnosa terlebih dahulu mengenai penyebabnya. Untuk caranya, silahkan Anda kunjungi halaman dokumentasinya.

Anda perlu melihat-lihat/membaca barisan keluaran nya saat acme.sh sedang bekerja, jika ada yang menurut Anda mencurigakan, mungkin saja itu adalah penyebabnya.

Jika Anda merasa kesulitan untuk mengatasi masalahnya, mungkin Anda bisa salinkan semua keluaran nya terlebih dahulu, lalu tempelkan itu ke dalam Layanan Pastebin seperti Pastebin dari Teknik.io, GitHub Gist, IX, dll.

Setelah menempelkannya, maka Anda perlu mengirimkan teks nya, sebelum dikirimkan mungkin Anda perlu menutupi beberapa informasi terlebih dahulu, setelah dikirimkan maka akan muncul Alamat URL untuk mengakses teks nya, salinkan Alamat URL tersebut dan tempelkan itu ke dalam kolom komentar nantinya.

Serta, berikan pembuka dan detail seperti Informasi Sistem Operasi, versi acme.sh, kronologi, dll selengkap mungkin di dalam kolom komentar nya, agar saya dan yang lain bisa lebih cepat membantu Anda, karena Informasi yang diperlukan tersedia.

Pertanyaan ke-18: Bagaimana cara menggantikan Informasi Akun yang telah saya masukkan sebelumnya? Soalnya tadi saya salah memasukkan nya

Jawab: Jika Anda ingin mengganti Informasi Akun yang telah Anda masukkan sebelumnya dengan alasan apapun, seperti salah ketik, informasi nya telah diganti, dll, maka Anda bisa lakukan itu dengan merubah/deklarasi lagi variabel tersebut ke dalam Shell nya, lalu rubah isi berkas account.conf yang berada di dalam direktori acme.sh

Saat menerbitkan/memperbarui sertifikat, acme.sh secara otomatis akan menyimpan Informasi Akun yang Anda masukkan ke dalam berkas account.conf dalam bentuk variabel SAVED_{VARIABEL} dan akan digunakan lagi untuk memperbarui sertifikat SSL yang telah Anda terbitkan sebelumnya.

Misalnya, jika Anda menggunakan Cloudflare sebagai DNS Otoritatif untuk domain Anda, maka Anda perlu menyimpan “API Token” ke dalam variabel CF_Token dan “Account ID” ke dalam variabel CF_Account_ID di dalam Terminal terlebih dahulu.

Setelah menyimpan nya dan menjalankan perkakas acme.sh untuk menerbitkan sertifikat nya, maka secara otomatis acme.sh akan menyimpan kedua informasi tersebut ke dalam berkas account.conf, tapi dalam bentuk variabel SAVED_CF_Token untuk CF_Token dan SAVED_CF_Account_ID untuk CF_Account_ID nya.

Nah, jika Anda menggunakan DNS Otoritatif dari Cloudflare dan ingin menggantikan Informasi akun nya, entah itu ganti “API Token” atau/dan “Account ID” nya, maka ganti nilai dari/deklarasikan lagi variabel CF_Token dan CF_Account_ID atau salah satunya, lalu hapus variabel SAVED_CF_Token dan SAVED_CF_Account_ID atau salah satunya di dalam berkas ${HOME}/.acme.sh/account.conf.

Kalau mau cepat, Anda bisa salin dan tempelkan perintah berikut ke dalam Terminal Anda.

Gunakan Perintah berikut ini jika Anda ingin menggantikan dua-dua nya:

cp ${HOME}/.acme.sh/account.conf ${HOME}/.acme.sh/account.conf.1 ## Backup dulu
CF_Token="API_TOKEN_KAMU_DI_SINI" && export CF_Token
CF_Account_ID="ACCOUNT_ID_KAMU_DI_SINI" && export CF_Account_ID
sed -i '/SAVED\_CF\_Token\=/d' ${HOME}/.acme.sh/account.conf
sed -i '/SAVED\_CF\_Account\_ID\=/d' ${HOME}/.acme.sh/account.conf

Atau, contoh perintah di bawah ini jika Anda hanya ingin menggantikan CF_Token nya saja:

cp ${HOME}/.acme.sh/account.conf ${HOME}/.acme.sh/account.conf.1 ## Backup dulu
CF_Token="API_TOKEN_KAMU_DI_SINI" && export CF_Token
sed -i '/SAVED\_CF\_Token\=/d' ${HOME}/.acme.sh/account.conf

Tapi jika Anda menggunakan DNS Otoritatif lain, maka variabel yang digunakan akan berbeda-beda untuk setiap penyedia, maka Anda perlu mengetahui dan menyesuaikan variabel-variabel tersebut, untuk mengetahui variabel yang mereka gunakan, silahkan Anda kunjungi terlebih dahulu halaman dokumentasinya.

Setelah itu, coba perbarui/terbitkan lagi sertifikat nya, acme.sh akan menyimpan informasi akun lagi secara otomatis setelah dieksekusi.

Selain itu, Anda juga dapat merubah nilai dari variabel SAVED_(VARIABEL) secara langsung di dalam berkas ${HOME}/.acme.sh/account.conf nya tanpa perlu mendeklarasikan variabel nya lagi di dalam Terminal, silahkan gunakan Editor Teks favorit Anda untuk mengubahnya.

Pertanyaan ke-19: Apakah ini juga bisa diikuti oleh pengguna perangkat komputer kecil seperti Raspberry Pi dan perangkat sejenis lain nya?

Jawab: Sangat bisa, Anda sangat bisa untuk mengikuti semua tutorial yang ada di sini menggunakan perangkat komputer kecil Anda, seperti Raspberry Pi atau sejenis nya.

Untuk Sistem Operasi nya, saya sarankan Anda gunakan GNU/Linux yang merupakan Sistem Operasi berbasis *nix dibandingkan dengan Windows. Di Android juga bisa, tapi gunakan aplikasi Termux.

Pertanyaan ke-20: Bagaimana caranya agar saya bisa menyalinkan acme.sh ke dalam Perangkat lain?

Jawab: Untuk menyalinkan acme.sh ke dalam Perangkat lain, Anda bisa baca bagian “Renew SSL secara Otomatis di Android” yang ada di artikel ini.

Bagian tersebut juga membahas bagaimana caranya menyalinkan acme.sh ke dalam Perangkat Ponsel Pintar yang berbasis Android.

Caranya akan sama saja, hanya saja beda nya di Persyaratan untuk Perangkat lain, Perintah untuk mengaktifkan Layanan Cron dan Penyebutan Perangkatnya saja. Sesuaikan semua itu dengan perangkat milik Anda.

Pertanyaan ke-21: Saat saya menerbitkan/memperbarui Sertifikat SSL melalui acme.sh, kok malah muncul error 5xx yah? (cth. “504 Gateway Time-Out”)

Jawab: Penyebab dari masalah ini kemungkinan terbesarnya adalah bahwa Server tersebut sedang mengalami gangguan, kendala atau ketidaktersediaan (downtime) karena suatu masalah, seperti banyaknya pengguna, Koneksi dari Server/Proksi yang melambat, dll.

Jadi, sabarlah menunggu sampai beberapa waktu kemudian, entah itu beberapa menit, jam atau beberapa hari, siapa tahu nanti permasalahan pada Server nya bisa terselesaikan, sehingga bisa digunakan kembali.

Pertanyaan ke-22: Apakah benar bahwa SSL Gratisan itu memiliki Enkripsi yang lemah?

Jawab: Itu tidak benar, jika ada artikel yang menyatakan demikian, itu bisa dipastikan sesat. Karena Enkripsi, baik itu Algoritma, Cipher (Penyandian) dan Entropi pada Enkripsi itu ditentukan sepenuhnya oleh Konfigurasi Cipher Suite yang ada pada Server.

Jadi, besaran kekuatan enkripsi pada Protokol TLS/SSL itu sepenuhnya ditentukan oleh Server, bukan oleh sertifikat maupun pihak CA.

Sertifikat nya sendiri tidak mempunyai andil besar dalam menentukan seberapa kuatnya Enkripsi, karena sebenarnya Sertifikat SSL itu sendiri tidak melakukan nya, itu cuma membuktikan kalau Blog/Web tersebut sudah ‘ditandatangani’ oleh pemilik yang bersangkutan melalui CA sebagai pihak ketiga/perantara, enkripsi nya sendiri dilakukan oleh Perangkat Lunak yang digunakan oleh Klien dan Server.

Bahkan jika Anda menggunakan sertifikat yang telah Anda tandatangani sendiripun (self-signed certificate), proses Enkripsi nya tetap berjalan seperti biasa saat mengunjunginya, tapi Blog/Web nya menjadi tidak bisa diakses dari perangkat lain. Kenapa? Karena sertifikat yang digunakan itu tidak dipercaya oleh perangkat lunak secara universal.

Sertifikat SSL sendiri hanya membawakan Kunci Publik (Public key) yang tertera di dalamnya yang digunakan untuk membantu berjalan nya proses ‘jabat tangan’ TLS (TLS handshake) agar menciptakan proses transaksi yang aman saat mengunjungi sebuah Web/Blog atau mengirimkan data ke dalam sebuah Web serta menerima data dari sebuah Web.

Selain itu, saat sertifikat SSL ingin dibuat dengan acme.sh, Anda bisa menentukan ukuran dan jenis kunci nya dengan bebas, semakin besar ukuran kuncinya maka semakin kuat kunci nya.

Namun, hal itu akan mengorbankan kinerja dari sebuah perangkat saat mengunjungi nya karena perangkat keras belum tentu dapat memprosesnya dengan cepat, apalagi jika tidak memiliki fitur akselerasi dari perangkat keras, sehingga ini juga akan mengorbankan kinerja dari sebuah Web/Blog.

Pertanyaan ke-23: Masa aktif sertifikat SSL gratisan (termasuk dari ZeroSSL) rata-rata hanya 90 hari, apakah itu tidak bermasalah?

Jawab: Selama bisa diperbarui secara otomatis, maka seharusnya tidak masalah, bahkan sertifikat SSL untuk hampir seluruh layanan Google memiliki masa aktif hanya 90 hari atau sekitar 3 bulan saja.

Sekarang ini sudah sangat banyak atau bahkan mayoritas Perangkat Lunak klien untuk Protokol ACME, Penyedia Web (seperti Layanan Hosting Web dan CDN), dll, sanggup memperbarui SSL tersebut secara otomatis berkat dukungan protokol ACME nya.

Untuk kasus pembaruan sertifikat SSL dari ZeroSSL (yang telah saya bahas di artikel ini), itu juga diperbarui secara otomatis melalui perkakas acme.sh yang telah dijalankan di dalam latar belakang pada ponsel/perangkat Anda.

Jadi, Anda hanya perlu duduk diam dan menunggu bahwa sertifikat SSL berhasil diperbarui, tidak perlu melakukan apapun, Anda hanya perlu pastikan bahwa koneksi Internet selalu ada pada ponsel/perangkat Anda.

Untuk masalah keamanan, itu tidak berpengaruh, atau malah justru lebih baik karena ia akan menghasilkan kunci yang baru dalam memperbarui nya. Sehingga, kalaupun kunci nya dicuri atau/dan sertifikat yang diterbitkan oleh CA mengalami kesalahan (mis-issued certificates), maka hal tersebut tidak akan bertahan lama karena masa aktifnya yang relatif singkat.

Untuk masalah ketersediaan (uptime), sebenarnya kurang begitu berpengaruh, bahkan sama sekali tidak berpengaruh, karena sekarang mayoritas Web Server telah mendukung hot-reloading untuk memuat ulang/menerapkan konfigurasinya tanpa harus mengalami downtime. Sehingga Anda dapat memasang sertifikat SSL tanpa ‘rasa sakit’ sedikitpun!

Kalaupun itu berpengaruh, Anda tidak melakukan itu untuk setiap hari/bulan nya, melainkan hanya 4 kali dalam setahun dan itupun cuma beberapa detik saja, gak sampai 3 detik, terutama jika Anda mengikuti Metode Pertama dalam membuat skrip nya untuk memperbarui sertifikat SSL nya.

Namun, jika Anda ingin masa aktif yang lebih dari itu, mungkin Anda bisa coba sertifikat SSL dari Buypass, yakni “Buypass Go SSL” yang memiliki masa aktif maksimal 180 hari atau sekitar 6 bulan saja. Tapi sayangnya Anda tidak bisa menerbitkan nya dalam bentuk Wildcard, namun mungkin Anda bisa menerbitkan nya dalam bentuk multi-domain atau/dan multi-subdomain.

Pertanyaan ke-24: Apakah sertifikat SSL dari ZeroSSL (baik gratisan atau berbayar nya) itu boleh dipasang pada Situs Web untuk keperluan komersial (seperti Perdagangan Elektronik, dll)?

Jawab: Saya kurang tahu secara pastinya apakah sertifikat SSL tersebut boleh tidak digunakan oleh Situs Web yang punya keperluan komersial, seperti Perdagangan elektronik (bahasa Inggris: e-commerce).

Namun, di dalam halaman Syarat & Ketentuan Layanan nya, tertulis kalimat berikut:

You may not use ZeroSSL for any commercial purpose including but not limited to selling, licensing, providing services, or distributing ZeroSSL to any third party unless you have received the express written consent of ZeroSSL beforehand.

Saya kurang tahu/kurang paham apa maksud dari kalimat for any commercial purpose di sini, apakah tidak boleh dipasang di Situs Web Perdagangan Elektronik secara keseluruhan atau melarang tindakan komersil pada layanan ZeroSSL nya saja.

Kalaupun tidak boleh dipasang di Situs Web tersebut, saya juga kurang tahu apakah itu berlaku untuk pengguna gratisan, yang berbayar atau malah semua. Karena TOS ini sepertinya melingkupi semua layanan yang ada pada ZeroSSL, gak peduli itu gratisan ataupun berbayar.

Jadi, jawaban nya saya kurang tahu dan belum saya tanya ke mereka, mungkin saja diperbolehkan sama mereka selama tidak mengkomersilkan layanan mereka tanpa seizin dari mereka.

Pertanyaan ke-25: Apa alasan kamu menggunakan ZeroSSL? Padahal blog ini cuma bisa diakses dengan Web Browser yang Sangat Modern

Jawab: Alasan saya menggunakan ZeroSSL sebagai berikut:

Karena ingin mencoba hal yang baru dan merasa ZeroSSL lebih baik ketimbang Let’s Encrypt

Setelah beberapa tahun saya menggunakan sertifikat SSL dari Let’s Encrypt (entahlah, mungkin sekitar dari 2016 atau 2017-an), karena sekarang ini saya baru tahu kalau ada CA selain Let’s Encrypt yang menawarkan sertifikat SSL nya secara gratis, seperti ZeroSSL, maka saya memutuskan untuk tidak lagi menggunakan Let’s Encrypt sebagai CA/PSrE yang ‘eksklusif’.

Selain itu, dari beberapa aspek, sertifikat SSL dari ZeroSSL jelas lebih baik ketimbang Let’s Encrypt untuk saat ini. Mungkin Let’s Encrypt mendapatkan banyak sponsor/donatur dari luaran sana, namun bukan berarti sertifikat nya lebih baik dibandingkan lain nya.

Bisa jadi uang hasil sponsor atau donasi tersebut digunakan untuk memperbarui infrastruktur mereka, pengembangan fitur-fitur, perangkat lunak dan protokol ACME nya.

Jadi, selama ZeroSSL lebih baik daripada Let’s Encrypt pada beberapa aspek, kenapa tidak? Toh, saya pake ini juga bukan sekadar untuk blog ini saja.

Merasa tertantang dan mendapat ilmu baru

Saat ingin menggunakan ZeroSSL, mayoritas penyedia web belum mendukung antarmuka untuk pemasangan sertifikat SSL dari ZeroSSL secara otomatis, kebanyakan dari mereka cuma mendukung Let’s Encrypt saja, seperti yang pernah saya bahas di awal.

Sehingga saya merasa tertantang untuk menerbitkan, memasang dan meng-otomasi pembaruan sertifikat SSL tersebut sendirian, dengan menggunakan acme.sh untuk mengelola sertifikat nya dan cURL untuk memasang sertifikat nya dengan memanfaatkan Server API dari Penyedia Web nya.

Pada akhirnya, saya mendapatkan ilmu baru yang cukup berguna juga, setidaknya untuk saya sendiri.

Referensi lain di Artikel ini

Di bawah ini adalah referensi-referensi yang saya gunakan untuk Artikel ini yang sebelum nya tidak saya sebut/bahas.

Berikut adalah referensi nya:

Referensi Penggunaan API Bunny.net

  • Halaman Dokumentasi API Bunny.net
  • Cuplikan berikut adalah Obrolan di Dukungan Tiket yang menyatakan jika ingin memasangkan sertifikat SSL menggunakan panggilan API nya, maka berkas-berkas tersebut harus dikirimkan dalam bentuk Base64:

Referensi Penggunaan API Netlify

  • Halaman Dokumentasi API Netlify

  • Halaman yang berjudul "Get started with the Netlify API" dari Netlify

  • Melakukan Inspeksi Jaringan di Peramban Web saat memasang sertifikat SSL secara manual di dalam Situs Web nya, dengan bertujuan untuk mengetahui bagaimana Netlify mengirimkan data nya ke dalam Server dan hasilnya itulah yang dijadikan referensi.

    Anda bisa lakukan itu sendiri dengan cara berikut:

    1. Tekan tombol CTRL+SHIFT+I sebelum memasang sertifikat SSL di Netlify
    2. Klik pada tab “Network”, nanti di situ akan tampil sebuah panel kosong dan hanya berpesan kalau kamu perlu menyegarkan (refresh) halaman nya atau menekan tombol CTRL+R terlebih dahulu, tapi jangan Anda lakukan itu.
    3. Pasang sertifikat SSL kamu secara manual di Halaman Web nya
    4. Jika kamu sudah selesai mengisi semua informasi yang diperlukan, klik pada button “Install certificate”
    5. Setelah kamu meng-klik button tersebut, maka di dalam Panel Inspeksi Jaringan akan muncul sebuah permintaan (request) dari api.netlify.com, klik pada permintaan tersebut, nanti akan muncul sebuah Informasi mengenai permintaan tersebut di sebelah kanan Panel nya.
    6. Setelah muncul, arahkan kursor kamu ke sebelah kanan Panel, lalu kamu gulirkan itu ke bawah menggunakan tetikus (mouse) kamu sampai kamu menemukan bagian “Request Payload” atau sejenisnya.
    7. Jika ketemu, seperti itulah data yang akan kamu kirimkan ke Netlify saat memasang sertifikat SSL kamu secara manual
  • Untuk cara menghilangkan jeda baris nya (line break) dan menggantinya dengan karakter \n, saya menggunakan jawaban dari “Ed Morton” di Stack Overflow sebagai referensi, jawaban nya dilisensikan di bawah lisensi CC BY-SA 4.0.

Referensi untuk lain nya

  • Utas yang berjudul "How do I Crontab on Termux.." di Reddit sebagai referensi untuk meng-instal Cron Job di Termux
  • Utas yang berjudul "Do I need to set crontab again when I restart termux?" di Reddit sebagai referensi untuk mengaktifkan Layanan Cron jika Termux diterminasi
  • Halaman yang berjudul "RSA key lengths" dari Javamex sebagai referensi untuk pengaruh Ukuran kunci RSA bagi kecepatan
  • Hasil dari pengujian dengan perintah openssl speed rsa2048 rsa3072 rsa4096 yang rata-rata menyatakan/menyimpulkan bahwa semakin besar ukuran kunci nya (terutama untuk kunci RSA), maka akan semakin besar pengaruhnya terhadap kecepatan.

Di bawah ini adalah hasil pengujian di Laptop: (Menggunakan Laptop Lenovo Legion 5 15ARH05, Prosesor: AMD Ryzen 7 4800H, RAM: 8x2 GB DDR4, GPU: NVIDIA GTX 1650 Ti)

                  sign    verify    sign/s verify/s
rsa 2048 bits 0.000516s 0.000015s   1937.1  66884.5
rsa 3072 bits 0.001568s 0.000031s    637.9  32169.3
rsa 4096 bits 0.003504s 0.000054s    285.4  18588.0

Dan, di bawah ini adalah hasil pengujian di PC saya: (PC nya menggunakan Prosesor: Intel Pentium G2030, RAM: 2x2 GB DDR3, GPU: Terintegrasi dari Intel)

                  sign    verify    sign/s verify/s
rsa 2048 bits 0.001680s 0.000050s    595.1  19946.8
rsa 3072 bits 0.005208s 0.000106s    192.0   9463.3
rsa 4096 bits 0.012121s 0.000186s     82.5   5368.5

Penutup

Ya udah, segitu aja dulu artikel kali ini. Gimana? Pusing? Meriang? Ya makanya pelan-pelan baca nya, sudah saya jelaskan dari awal kalau artikel ini bakalan panjang kali lebar.

Saya tulis artikel ini sejak 10 Juli 2021 dan perlu waktu 1 bulan lebih agar saya bisa menerbitkan nya, karena artikel ini membahas banyak hal dan juga sedikit ‘riset’ agar artikel ini bisa diikuti oleh banyak perangkat, belum lagi sama kalimat-kalimat nya, itupun belum sama pengujian nya.

Terima kasih bagi Anda yang telah membaca serta mempelajari yang ada di artikel ini, mohon maaf jika artikel ini memiliki beberapa kekeliruan dan kesalahan, seperti salah ketik, kurang jelas, salah informasi, dll, karena artikel ini jauh dari sempurna.

Saya akan berusaha untuk terus-terusan memperbarui artikel ini seiring berkembangnya Informasi yang ada, karena yang saya pos ini adalah tutorial, sehingga perlu adanya penyesuaian.

Jika adanya kesalahan dan kekeliruan, atau kalau Anda memiliki pertanyaan lain nya, bisa Anda berikan masukkan melalui kolom komentar yang tersedia. Masukkan dari Anda akan sangat berarti bagi saya dan artikel ini untuk kedepan nya nanti.

Terima kasih atas perhatian nya 😊

Penggunaan Gambar dan Atribusi

Berkas-berkas Gambar (seperti Cuplikan layar dan Gambar lain nya) yang di gunakan di dalam artikel ini, disediakan di dalam Repository Blog ini.

Jika Anda ingin menjelajahi nya, silahkan kunjungi Alamat URL berikut:

https://github.com/FarrelF/Blog/tree/main/content/post/2021-08-26-cara-memasang-zerossl-dan-renew-otomatis-di-netlify-bunnycdn

ZeroSSL dan logo nya merupakan Merek Dagang, Merek Dagang Terdaftar, atau/dan Pakaian Dagang dari “Stack Holdings GmbH”, sehingga nama merek dan logo tersebut bukanlah milik saya pribadi, saya hanya dapatkan itu dari Situs Web Resmi nya dan di sana belum ada petunjuk penggunaan logo nya.

comments powered by Disqus
Dibangun dengan Hugo
Tema Stack dirancang oleh Jimmy