Pembuka
tl;dr |
---|
Jika Anda tidak ingin membaca basa-basinya, Anda bisa langsung lanjut ke subbagian “Persiapan”. |
Artikel kali ini akan membahas tentang Cara memasang ZeroSSL + Renew secara Otomatis di Netlify dan BunnyCDN.
Blog ini telah menggunakan ZeroSSL sebagai Sertifikat TLS/SSL-nya dalam bentuk Wildcard. Gak percaya? Silahkan Anda lihat sendiri.
PEMBARUAN, 08 Mei 2022: Blog ini telah memakai Google Trust Services (GTS), tidak lagi menggunakan ZeroSSL, namun semua instruksi yang artikel ini bahas tidak banyak berubah/tidak berubah total.
Kendala saat pemasangannya adalah tidak banyak penyedia yang mendukungnya, kebanyakan hanya mendukung Let’s Encrypt saja.
Sehingga saya perlu menggunakan acme.sh untuk menerbitkan/memperbarui sertifikat TLS/SSL (mungkin seterusnya saya akan menyebutnya dengan “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 tersebut dan membuatnya dapat diperbarui secara otomatis.
Nah, makanya saya buat artikel ini, siapa tahu mungkin Anda tertarik atau merasa tertantang untuk memasang sertifikat SSL dari ZeroSSL ini ke dalam Web/Blog Anda bila dibandingkan dengan Let’s Encrypt. Semoga artikel ini akan bermanfaat buat Anda 🙂
Di sini, Anda akan mempelajari untuk menerbitkan sertifikat SSL yang bisa Anda dapatkan dari ZeroSSL, baik jangkauannya untuk 1 Domain, Banyak Domain atau Subdomain, atau Wildcard dengan menggunakan acme.sh sebagai perkakasnya, setelah itu Anda akan memasangkannya dengan cara memanggil Server API milik Bunny.net dan Netlify memakai cURL.
Bagi yang belum tahu, 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 Stack Holdings.
Sedangkan 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.
Tunggu, ZeroSSL Gratis? Bukannya bayar?
Iya, untuk saat ini ZeroSSL memanglah gratis, bahkan Anda juga dapat menerbitkan Sertifikat SSL Wildcard-nya secara gratis dengan jumlah yang tidak terbatas, dengan kunci RSA maupun ECC.
Tapi, itu hanya berlaku jika Anda menerbitkannya 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 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.
PEMBARUAN, 16 Oktober 2021: Simbol tersebut sekarang sudah tidak ada lagi di halaman tersebut, mungkin tujuannya memang untuk marketing biar ZeroSSL tidak dianggap gratis.
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 pakai Let’s Encrypt aja?
Kompatibilitas Perangkat
Sertifikat SSL dari ZeroSSL bergantung pada Sectigo (sebelumnya dikenal sebagai “COMODO CA”/“COMODO” saja) sebagai Sertifikat Akar dari Rantai Sertifikat (yang bisa disebut dengan “Rantai Kepercayaan”, bahasa Inggrisnya: Chain of Trust), yang telah didukung dan dipercaya oleh mayoritas perangkat lunak sejak lama.
Informasi mengenai sertifikat akarnya sebagai berikut:
Akar untuk Rantai (Chain of Trust) Pertama: “AAA Certificate Services” yang masa berlakunya sampai 31 Desember 2028 pukul 23:59:59 atau 01 Januari 2029 dalam waktu UTC
Akar untuk Rantai (Chain of Trust) Kedua: “USERTrust RSA Certification Authority” atau “USERTrust ECC Certification Authority” yang masing-masing masa berlakunya sampai 18 Januari 2038 pukul 23:59:59 atau 19 Januari 2038 dalam waktu UTC
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 kompatibilitasnya.
Sedangkan Akar dari Chain of Trust-nya Let’s Encrypt adalah “DST Root CA X3” (dari “IdenTrust”) yang juga mendukung dan dipercaya oleh mayoritas perangkat lunak, termasuk Windows XP SP3 dan Android 7.1.1 kebawah.
Namun, sebelumnya sempat ada “kegundahan” karena Akar yang mereka gunakan sudah mau habis masa berlakunya, akar tersebut akan habis pada tanggal 30 September 2021 dan akan digantikan dengan yang baru, yakni “ISRG Root X1” (dari “Internet Security Research Group”), sehingga ini berimbas pada perangkat lama, terutama untuk Android 7.1.1 kebawah.
Tapi, masalah ini selesai untuk Android dengan melakukan Cross-Signing, yang artinya sertifikat akar yang lama (DST Root CA X3) telah menerbitkan sertifikat yang ‘sama dengan’ sertifikat akar barunya, yakni “ISRG Root X1” sebagai sertifikat penengah, agar ‘rantai’ dapat terus digunakan meski ada bagian yang rapuh karena sudah habis masanya.
Hal ini bukan berarti masalah sudah selesai sepenuhnya, kemungkinan besar bahwa ada perangkat lain yang tidak kompatibel dengan Akar baru ini setelah Akar pertama habis masa berlakunya, kecuali Windows XP SP3 (jika Anda memperbarui sertifikat akarnya) dan Android 2.3.6 (atau di atasnya).
Berdasarkan Halaman Kompatibilitas sertifikatnya, sepertinya perangkat yang mempercayai “ISRG Root X1” itu berkurang bila dibandingkan dengan perangkat yang mempercayai “DST Root CA X3”. Sehingga, ada kemungkinan bahwa banyak perangkat lain yang tidak kompatibel dengan Let’s Encrypt.
PEMBARUAN, 03 Oktober 2021: |
---|
Per tanggal 30 September 2021 kemarin, sertifikat akar “DST Root CA X3” telah habis masa berlakunya dan telah diganti menjadi “ISRG Root X1”. Meski masa berlakunya habis, Let’s Encrypt tetap kompatibel dengan Sistem Operasi Android 7.1.1 ke bawah, tapi masih menggunakan “DST Root CA X3” sebagai akarnya (lihat cuplikan layar di atas). Jadi, jika Anda menggunakan Android 7.1.1 ke bawah, maka Anda tidak perlu melakukan apapun. Namun jika Anda tidak menggunakan Android, tidak bisa mengakses Web/Blog yang menggunakan Let’s Encrypt atau sekadar ingin menikmati akar baru dari Let’s Encrypt, silahkan unduh sertifikat akar “ISRG Root X1”, lalu instal sertifikat akar tersebut agar dapat dipercaya oleh perangkat Anda. Setelah selesai menginstal, nonaktifkan/hapus sertifikat akar lama, yakni “DST Root CA X3” dari perangkat Anda. Selain mengunduh dan menginstal sertifikat akarnya secara manual, Anda juga dapat memperbarui sistem pada perangkat Anda agar dapat menikmati sertifikat akar yang baru. |
Jadi, jika Anda ingin sebuah Sertifikat SSL Gratis untuk Web/Blog atau Aplikasi Anda serta dapat diakses oleh hampir semua orang atau/dan Anda kurang yakin dengan resolusi dari pihak Let’s Encrypt, mungkin ZeroSSL bisa menjadi pilihan yang terbaik untuk 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 menerapkannya.
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.
Memiliki antarmuka untuk mengelola sertifikat
ZeroSSL memiliki antarmuka untuk mengelola sertifikat SSL di dalam Situs Web-nya. Di sana, Anda bisa melihat sertifikat SSL yang telah Anda terbitkan, sekaligus mengelola sertifikatnya.
Selain itu, Anda bisa menghabiskan kuota “SSL Gratis” yang telah diberikan oleh mereka dengan membuat sertifikat SSL dari Situs Web-nya.
Tapi sayangnya, Anda tidak bisa mencabut sertifikat SSL yang telah Anda terbitkan melalui server ACME-nya di dalam Situs Web-nya, jadi Anda hanya bisa melihat dan mengunduhnya saja.
Persiapan
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.
Anda harus mempersiapkannya agar perkakas acme.sh bisa digunakan dan agar Anda bisa mengikuti artikel ini secara keseluruhan, apalagi jika Anda menggunakan Sistem Operasi Windows.
Berikut di bawah ini adalah persiapannya:
Untuk Pengguna GNU/Linux, macOS, BSD dan Sistem Operasi berbasis *nix lainnya
tl;dr
Jika terlalu panjang, maka perangkat lunak yang harus Anda siapkan adalah sebagai berikut:
- OpenSSL (atau LibreSSL?)
- cURL
- Cron
Socat (Socket Cat) di sini bersifat Opsional jika Anda ingin menjalankan acme.sh dalam “Standalone Mode”, tidak wajib Anda instal dan artikel ini tidak membahasnya lebih lanjut.
Sistem Operasi berbasis Unix/Mirip-Unix (*nix) seperti GNU/Linux, macOS, dan BSD, sebetulnya tidak usah ditanya, mereka sudah pasti kompatibel dengan acme.sh karena perkakas 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, tapi di artikel ini saya bahas Wget hanya untuk mengunduh dan menginstal acme.sh saja.
Anda juga dapat menginstal Socat (Socket Cat) agar acme.sh dapat dijalankan dalam “Standalone Mode”, tapi itu tidak saya bahas lebih lanjut di sini.
Untuk Pengguna Windows
tl;dr
Jika terlalu panjang, maka hal-hal yang harus Anda siapkan adalah sebagai berikut:
- Memiliki Akses ke Lingkungan Unix/Mirip-Unix: (Pilih salah satu caranya)
- Mengaktifkan fitur WSL (Windows Subsystem for Linux) untuk Windows 10 atau di atasnya
- Menggunakan Perangkat Lunak yang dapat mengemulasikan lingkungan UNIX, seperti Git Bash, Cygwin, dll, namun opsi ini belum saya coba
- Mesin Virtual atau Kontainer dengan Sistem Operasi berbasis Unix/Mirip-Unix (disarankan GNU/Linux)
- Mengakses Server Anda yang menggunakan Sistem Operasi *nix dengan menggunakan Klien SSH
- Persiapan Perangkat Lunak pada WSL, Mesin Virtual/Kontainer atau pada Server bisa mengikuti persiapan untuk Sistem Operasi *nix
Jika Anda menggunakan Windows, maka Anda perlu untuk mengakses Lingkungan Unix/Mirip-Unix (*nix), Anda bisa gunakan cara apapun untuk melakukannya.
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.
Jika Anda tidak ingin/tidak bisa menggunakan WSL, maka Anda juga bisa menggunakan perangkat lunak yang dapat mengemulasikan lingkungan UNIX, seperti Git Bash, Cygwin, dan lainnya, namun itu belum saya coba.
Atau, memiliki Mesin Virtual/Kontainer dan Instal, lalu gunakan Sistem Operasi berbasis Unix/Mirip-Unix (seperti GNU/Linux) di dalam Mesin tersebut.
Selain itu, 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 persiapan 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 hal-hal yang harus Anda siapkan adalah sebagai berikut:
- 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 lamanya, tapi saya tidak bisa menjamin bahwa Anda akan bisa mengikuti artikel ini kedepannya, 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! (Alasannya di sini)
- Persiapan yang harus Anda lakukan pada Termux setelah di-instal adalah sebagai berikut:
- Buka Termux-nya
- Perbarui semua Paket yang ada di Termux dengan perintah:
pkg up
- Instal semua keperluannya dengan perintah:
pkg i -y curl wget openssl-tool cronie termux-services
, lalu mulai ulang Termux jika berhasil - Aktifkan Layanan (Service) Cron di Latar Belakang dengan Perintah:
sv-enable crond && sv up crond
- Jika Anda memiliki komputer/laptop dan ponsel pintar berbasis Android yang terkoneksi dengan jaringan yang sama, maka sebaiknya kamu instal
openssh
(atau sejenisnya) di dalam Termux, lalu kamu lakukan semua itu secara remot dari komputer/laptop kamu melalui Klien SSH. Caranya bisa Anda baca artikel ini
Catatan: Semua hal di atas bisa Anda lakukan tanpa perlu akses root sedikitpun dan perangkat tidak perlu dalam keadaan ter-root.
Jika Anda menggunakan Android, maka Anda bisa gunakan Termux untuk itu, selalu gunakan versi terbaru untuk pengalaman yang lebih nyaman dan lebih baik. Sebelum mengunduh, pastikan bahwa Android yang Anda gunakan sudah versi 7.0 atau di atasnya, 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 lamanya, namun saya tidak bisa menjamin bahwa Anda akan bisa mengikuti artikel ini kedepan karena versi pustaka yang digunakan masih lama dan saya belum mengujinya, jadi mungkin caranya akan berbeda dibandingkan dengan yang akan saya bahas di sini.
Setelah itu, pastikan Termux tidak diunduh melalui Google Play Store, melainkan melalui F-Droid.
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 persiapan 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 semua paket yang diperlukan dengan perintah berikut:
|
|
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 && sv up crond
.
Jika Anda memiliki komputer/laptop dan ponsel pintar berbasis Android yang terkoneksi dengan jaringan yang sama, maka sebaiknya kamu instal openssh
(atau sejenisnya) di dalam Termux, lalu kamu lakukan semua itu secara remot dari komputer/laptop kamu melalui Klien SSH, sehingga tidak perlu melakukan pemindahan lagi ke dalam Android.
Anda bisa baca artikel ini untuk mengetahui caranya.
Semua hal di atas bisa Anda lakukan tanpa perlu akses root sedikitpun dan perangkat tidak perlu dalam keadaan ter-root, ini sama sekali tidak menghilangkan garansi pada perangkat Anda, jadi tidak usah khawatir.
Catatan, Peringatan dan 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 dengan lebih 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 lebih mudah dipahami oleh Anda.
Oleh karena itu, saya sarankan untuk memakai perangkat dengan layar yang lebih besar ketimbang layar dari Ponsel yang Anda pakai sekarang (cth. PC/Laptop, Monitor, Tablet/Televisi Pintar, Desktop Mode pada Ponsel/Tablet Pintar, dll) dan memiliki sebuah Papan ketik (Keyboard) untuk mengikuti artikel ini.
Jika Anda mengalami kesulitan dalam bernavigasi, gunakan fitur “Cari di Halaman” di Peramban Web Anda dengan menekan tombol
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 berbasis Linux (cth. GNU/Linux, Android, Alpine 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 menjaminnya.
Jadi, mohon perhatian dan pengertiannya, jika Anda melanjutkan berarti Anda sudah memahami semuanya.
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 langkah pun, 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 akunnya dan ingin menggunakan acme.sh tanpa harus mendaftarkan akun ZeroSSL-nya, lewati ini dan langsung lanjut saja. Tapi saya tetap sarankan agar Anda tidak melewati langkah ini. |
Sebelum Anda menerbitkan sertifikat SSL-nya, maka Anda disarankan untuk mendaftar akun ZeroSSL terlebih dahulu melalui Situs Webnya.
Setelah mendaftar, kamu tidak perlu membuat/menerbitkan sertifikatnya di sana, melainkan hanya perlu Kredensial EAB (External Account Binding) yakni “EAB KID” dan “EAB HMAC Key”-nya saja.
Apa itu Kredensial EAB? Kredensial EAB adalah sebuah kredensial untuk menghubungkan antara perkakas/perangkat lunak yang merupakan klien untuk protokol ACME dengan akun CA/PSrE yang telah Anda daftarkan.
Tanpa basa-basi lagi, langkah-langkahnya sebagai berikut:
- Daftar Akun ZeroSSL-nya di Situs Web-nya dan Login setelah itu (Atau, kamu hanya perlu Login saja jika kamu sudah pernah mendaftar akun sebelumnya)
- Pada Dasbor ZeroSSL, klik “Developer”
- Setelah itu, pada bagian “EAB Credentials for ACME Clients”, klik Button “Generate”
- Simpan “EAB KID” dan “EAB HMAC Key” yang telah dihasilkan itu dengan baik, nanti akan digunakan lagi untuk acme.sh
- Setelah menyimpannya, kamu tinggal klik Button “Done” dan Selesai
Jika Anda tidak memahami langkah-langkah di atas, 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 hal yang perlu Anda lakukan adalah menginstal acme.sh terlebih dahulu di dalam Sistem Operasi kamu.
Tidak perlu menggunakan Akun Administrator atau root
untuk menginstalnya, atau tidak perlu dieksekusikan melalui perintah sudo
layaknya Certbot, cukup gunakan saja akun Anda yang sekarang.
Cara menginstalnya adalah dengan mengeksekusikan salah satu perintah berikut:
Dengan cURL:
|
|
Atau dengan GNU Wget:
|
|
Ganti aku@contoh.com
dengan Alamat Surel Anda, jangan lupa dimasukkan. Tapi, jika Anda lupa memasukkan/tidak atau salah memasukkan alamat surel saat menginstalnya, Anda dapat eksekusi perintah di bawah ini setelah terinstal:
|
|
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 “
Jika dapat dieksekusi dengan baik, maka akan tampil versi dari acme.sh dan selamat Anda telah menginstalnya 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 menambahkan teks berikut di bawah ini ke dalam berkas konfigurasi Shell yang nantinya akan digunakan ketika Anda menjalankan sebuah Shell secara interaktif (cth. ~/.bashrc
untuk pengguna GNU Bash, ~/.zshrc
untuk pengguna Zsh atau ~/.config/fish/config.fish
untuk pengguna fish).
Berikut adalah teksnya:
|
|
Atau, berikut di bawah ini jika Anda menggunakan fish
sebagai Shell:
|
|
Atau, di bawah ini jika Anda menggunakan fish
dengan versi di bawah 3.2.0:
|
|
Setelah selesai menambahkannya, simpanlah berkas tersebut dari Editor Teks favorit Anda dan perbarui Shell-nya dengan menggunakan perintah source
, lalu coba eksekusikan perkakas acme.sh-nya.
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 menerbitkannya di mana saja dan di perangkat apa saja (termasuk Ponsel Pintar, Komputer PC, Laptop, dll), tanpa harus mempunyai/menyewa sebuah Server/Perangkat 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 melakukannya di dalam perangkat seperti Komputer PC, Laptop, Ponsel Pintar Anda atau perangkat lain yang Anda miliki, maka metode verifikasi seperti ini wajib Anda pelajari.
Namun, agar perkakas acme.sh dapat melakukan verifikasi DNS secara otomatis saat menerbitkan dan memperbarui sertifikat SSL-nya, maka acme.sh harus dapat mengakses dan mengubah DNS Record di dalam Domain milik Anda dengan mengakses Akun Penyedia DNS Otoritatif milik Anda.
Untuk itu, Anda perlu berikan sebuah izin untuk membaca dan mengubah DNS Record-nya dengan memberinya sebuah kredensial milik Anda, seperti: Token, Kunci API atau bahkan Nama Pengguna dan Kata Sandi.
Kalau saya gak mau gimana? Bisa saja Anda melakukannya secara Manual, sehingga Anda menambahkan DNS Record-nya secara manual juga.
Tapi sertifikat SSL tersebut memiliki masa berlaku selama 90 hari, sehingga harus diperbarui sebelum habis masanya (minimal 60 hari setelah sertifikat diterbitkan) dan saat pembaruan Anda harus masukkan lagi DNS Record-nya secara manual, sehingga tidak mungkin kamu bisa memperbarui sertifikat SSL tersebut secara otomatis.
Pertanyaannya, apa kamu gak capek kayak gitu terus? Ya terserah kamu, sih. Kalo saya jadi kamu, mending saya pake metode yang Otomatis saja ketimbang pake yang Manual.
Untuk Pengguna DNS Otoritatif Cloudflare
Jika Anda menggunakan Cloudflare sebagai DNS Otoritatif untuk Domain-mu, Anda perlu buat sebuah API Token (CF_Token
) dan dapatkan “Account ID” (CF_Account_ID
)-nya untuk kredensialnya.
Jika berkenan, Anda juga bisa mendapatkan “Zone ID” (CF_Zone_ID
)-nya agar acme.sh hanya menargetkan ke 1 Domain Utama saja secara spesifik, tapi ini tidak wajib, jadi sebaiknya tidak usah.
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:
Pastikan Anda sudah login terlebih dahulu menggunakan akun Cloudflare Anda dengan mengunjungi Halaman Dasbornya. Udah? Kalo gitu, Anda bisa lanjut
Jika Anda sudah sampai di halaman dasbornya:
- 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
Setelah Anda memasukki bagian “API Token”, klik pada Button “Create Token”
Kira-kira untuk no. 1 dan 2 cuplikannya akan seperti berikut:
- Saat proses membuat Token, Anda akan memilih templat yang digunakan untuk membuat Tokennya. Maka dari itu, gunakan saja templat “Edit zone DNS” dengan mengklik Button “Use this template” di sebelahnya (Seperti pada cuplikan berikut)
Setelah menentukan templatnya, 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 baku, nama Token menggunakan nama templatnya, Anda bisa ubah itu sesuka Anda dengan mengklik 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
Jika Anda sudah mengisi semua informasinya, klik pada Button “Continue to summary”
Kira-kira untuk no. 4 dan 5, cuplikannya akan menjadi seperti berikut:
- 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)
- 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 mengujinya di sana untuk memastikan apakah kode terebut bekerja atau tidak.
Nah, setelah API Token dibuat, maka Anda harus mendapatkan Account ID-nya, kalau kamu perlu bisa dapatkan Zone ID-nya juga.
Untuk mendapatkan kedua itu, Anda tinggal ke Halaman Dasbor Cloudflare, pilih Domainnya, 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:
|
|
Atau, dengan cara berikut:
|
|
Atau di bawah ini jika Anda menggunakan fish
sebagai Shell:
|
|
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-mu, Anda perlu 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:
- Anda bisa langsung masuk ke sini, lakukan login terlebih dahulu jika diminta.
- Klik pada Button “New access token” di Bagian “Personal access tokens”
- Masukkan Nama/Deskripsi mengenai Tokennya
- Setelah itu, klik pada Button “Generate” untuk menghasilkan “Access Token”-nya
- 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
- Klik pada Button “Done”“jika merasa sudah selesai
Jika Anda tidak memahami langkah-langkah di atas, Anda dapat melihat Cuplikan Layar berikut yang cukup menyesuaikan dengan langkah-langkah di atas: (Silahkan perbesar gambarnya dengan mengkliknya)
Nah, setelah berhasil didapat, maka Anda tinggal masukkan saja semua Informasinya ke dalam variabel. Dengan cara berikut:
|
|
Atau, dengan cara berikut:
|
|
Atau di bawah ini jika Anda menggunakan fish
sebagai Shell:
|
|
Udah itu aja, jika Anda menggunakan Netlify dan sudah memasukkan Informasi-informasi di atas, 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 baku, 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:
|
|
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.
Kalau saya belum daftar sama sekali gimana? 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:
|
|
Keluarannya akan seperti di bawah ini:
|
|
Kalau saya gak peroleh Kredensial EAB-nya gimana? Apakah bisa memakai perintah di atas? Sepengalaman saya dulu, bisa.
Perhatian ! |
---|
Dengan mengeksekusi perintah di atas ( 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 perintahnya akan menjadi seperti berikut:
|
|
Perintah di atas akan menerbitkan Sertifikat SSL yang hanya menjangkau 1 Domain dan 1 Subdomain saja, yakni www.domain.com
dan 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 Pertamanya.
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-lainnya
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 verifikasinya.--nginx (lokasi_conf)
jika Anda ingin meggunakan Web Server NGINX sebagai verifikasinya.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).
Dengan adanya verifikasi seperti ini, artinya 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.
Jadi, berhati-hatilah ketika Anda 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 lainnya sebagai berikut:
--force
jika Anda ingin melakukannya 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. Gantiopsi
dengan2048
,3072
,4096
,8192
,ec-256
,ec-384
, atauec-512
(Saya bahas di bagian terpisah)--cert-file file
untuk menyalinkan berkas Sertifikat ke dalam direktori lain setelah menerbitkan/memperbarui Sertifikat SSL-nya. Gantifile
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. Gantifile
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. Gantifile
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. Gantifile
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 penggunaannya di bawah ini:
acme.sh --remove -d www.domain.com --ecc
untuk menghapus salah satu sertifikat SSL yang berkunci ECC dari perangkat Andaacme.sh --revoke -d www.domain.com --ecc
untuk mencabut salah satu sertifikat SSL yang berkunci ECC- Dan masih banyak lagi!
Jadi, Anda tidak bisa menggunakan parameter ini untuk menerbitkan sertifikat SSL, atau bisa dibilang bahwa Anda hanya bisa memakainya 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 lainnya 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 keluarannya kira-kira akan seperti berikut:
|
|
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:
|
|
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 verifikasinya, 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:
|
|
Perhatian ! |
---|
Jika Anda sedang mempelajari penggunaan perkakas acme.sh, maka saya sarankan agar Anda selalu tambahkan parameter Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL-nya untuk Produksi dengan menggunakan parameter |
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 www.domain.com
dan ingin menggunakan Netlify DNS sebagai Metode Verifikasinya, maka Anda tinggal tambahkan saja parameter --dns dns_netlify
. Jadinya seperti berikut:
|
|
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 melakukannya di dalam perangkat seperti Komputer PC, Laptop dan Ponsel Pintar Anda atau di dalam perangkat yang sepenuhnya milik Anda, maka metode verifikasi seperti ini wajib Anda pelajari.
Sekadar Informasi saja, sebelum menggunakan DNS sebagai metode verifikasinya, saya sarankan agar Anda membaca dan pahami terlebih dahulu bagaimana cara menambahkan Kredensialnya, silahkan klik di sini.
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:
|
|
Perhatian ! |
---|
Jika Anda sedang mempelajari penggunaan perkakas acme.sh, maka saya sarankan agar Anda selalu tambahkan parameter Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL-nya untuk Produksi dengan menggunakan parameter |
Untuk 4 Domain saja:
|
|
Atau, jika Anda ingin menggunakan metode verifikasi yang berbeda-beda untuk setiap domain, maka Anda bisa meraciknya dengan contoh seperti berikut:
|
|
Dan seterusnya akan seperti itu caranya.
Menerbitkan Sertifikat SSL yang menjangkau Seluruh Subdomain
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:
|
|
Perhatian ! |
---|
Jika Anda sedang mempelajari penggunaan perkakas acme.sh, maka saya sarankan agar Anda selalu tambahkan parameter Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL-nya untuk Produksi dengan menggunakan parameter |
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 tinggal ganti saja dns_cf
-nya.
Kenapa Wildcard-nya dikutip? Karena terkadang Shell lain memperlakukan tanda bintang dengan berbeda 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 seperti itu? 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:
|
|
Nah, sekarang paham, kan?
Menerbitkan Sertifikat SSL dengan ukuran kunci yang berbeda
Secara bawaan/baku, perkakas 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):
|
|
Perhatian ! |
---|
Jika Anda sedang mempelajari penggunaan perkakas acme.sh, maka saya sarankan agar Anda selalu tambahkan parameter Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL-nya untuk Produksi dengan menggunakan parameter |
Atau, berikut di bawah ini jika Anda ingin menerbitnya dalam bentuk Wildcard:
|
|
Jika Anda ingin menerbitkannya dengan ukuran kunci sebesar 4096 bit, tinggal Anda ganti saja parameter menjadi --keylength 4096
. Intinya, 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, salah satunya adalah Let’s Encrypt yang tidak mendukung penggunaan kunci RSA dengan ukuran di atas 4096 bit.
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:
|
|
Perhatian ! |
---|
Jika Anda sedang mempelajari penggunaan perkakas acme.sh, maka saya sarankan agar Anda selalu tambahkan parameter Kalau sudah merasa yakin, Anda bisa terbitkan ulang Sertifikat SSL-nya untuk Produksi dengan menggunakan parameter |
Atau, berikut di bawah ini jika Anda ingin menerbitkannya dalam bentuk Wildcard:
|
|
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.
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 P-256, atau yang paling besar adalah P-384, tidak perlu terlalu besar. |
Sekadar Informasi saja, 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 Anda perlu menambahkan parameter --ecc
di setelahnya.
Contoh perintahnya sebagai berikut:
|
|
Contoh di atas merupakan perintah untuk menghapus sertifikat SSL yang berkunci ECC/ECDSA. Ganti
--remove
dengan parameter/argumen lain yang Anda inginkanSalah satunya:
--renew
jika Anda ingin memperbarui sertifikatnya, atau--revoke
jika Anda ingin mencabut sertifikatnya, atau parameter lainnya.Ganti
domain.com
dengan alamat domain pertama yang Anda masukkan saat menerbitkan sertifikat SSL.
Nah, akhirnya Anda telah berhasil menerbitkan sertifikat SSL-nya, selanjutnya Anda perlu mengetahui berkas-berkas yang berada di dalam direktori acme.sh-nya, terutama mengetahui berkas mana yang perlu dikirimkan nantinya beserta konfigurasi akunnya.
Jika Anda merasa itu gak penting, maka Anda bisa langsung lanjut ke bagian Memasang sertifikat SSL-nya.
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, isi direktorinya beserta fungsi-fungsinya
Biasanya, acme.sh akan terinstal di dalam direktori $HOME/.acme.sh
. Isi dari direktorinya sebagai berikut:
|
|
Catatan: Huruf d
di paling awal baris pada keluaran (cth. drwxr
yang berawalan huruf d
) itu merupakan direktori, bukan sebuah berkas.
Setiap direktori dan berkas yang ada di dalam sana memiliki fungsinya masing-masing. Fungsi-fungsi dari isi direktori acme.sh adalah sebagai berikut:
Berkas
acme.sh
: Berkas utama untuk perkakas acme.sh, berkas tersebut akan dieksekusi ketika Anda menjalankan perkakas acme.shBerkas
acme.sh.env
: Berkas yang digunakan untuk menyimpan lingkungan variabel (environment variables) yang mengatur bagaimana perkakas acme.sh dijalankanBerkas
account.conf
: Berkas konfigurasi untuk perkakas acme.shDirektori
ca
: Direktori yang digunakan sebagai tempat penyimpanan Informasi mengenai akun CA yang telah Anda registrasikan/kaitkan sebelumnya melalui parameter--register-account
atau secara otomatis jika Anda menerbitkan sertifikat SSL untuk pertama kalinya.Direktori tersebut (dan berkas-berkas di dalamnya) akan digunakan oleh perkakas acme.sh untuk menerbitkan, memperbarui dan mencabut sertifikat SSL dengan menggunakan akun yang telah Anda registrasikan/kaitkan sebelumnya
Direktori
deploy
: Direktori yang digunakan sebagai tempat penyimpanan berkas skrip Shell untuk penggunaan fitur Deploy Hook yang ada pada perkakas acme.sh, isi direktori tersebut adalah skrip Deploy Hook yang disediakan oleh perkakas tersebut.Direktori tersebut (dan berkas-berkas di dalamnya) akan digunakan oleh perkakas acme.sh jika Anda menggunakan fitur Deploy Hook-nya. Untuk cara penggunaannya, silahkan kunjungi halaman dokumentasinya
Direktori
dnsapi
: Direktori yang digunakan sebagai tempat penyimpanan berkas skrip Shell untuk penggunaan fitur verifikasi DNS yang ada pada perkakas acme.sh saat menerbitkan dan memperbarui sertifikat SSL. Isi direktori tersebut adalah penyedia DNS yang telah didukung oleh acme.sh untuk verifikasi.Direktori tersebut (dan berkas-berkas di dalamnya) akan digunakan oleh perkakas acme.sh jika Anda menggunakan DNS sebagai verifikasi dalam menerbitkan dan memperbarui sertifikat SSL-nya. Untuk cara penggunaannya itu sudah saya jelaskan sebelumnya, yakni di dalam bagian “Menerbitkan Sertifikat SSL dengan Menggunakan DNS sebagai Metode Verifikasi”.
Direktori yang berawalan dengan nama domain (cth.
domain.com
dan'*.domain.com'
) merupakan Direktori yang digunakan sebagai tempat penyimpanan sertifikat SSL yang telah Anda terbitkan, beserta konfigurasinya. Isi di dalam direktori tersebut adalah berkas-berkas yang diperlukan untuk memasang sertifikat SSL ke dalam Web/Blog Anda, berkas CSR untuk memperbarui sertifikat, dan berkas konfigurasinya.Direktori tersebut (terutama berkas-berkas di dalamnya) sangat wajib untuk diketahui, karena itu akan sangat diperlukan untuk pemasangan dan pengaktifan sertifikat SSL yang telah Anda terbitkan ke dalam Web/Blog Anda. Berkas Konfigurasi di dalamnya (cth.
domain.com.conf
) bisa Anda gunakan untuk mengkonfigurasi perilaku acme.sh baik sebelum dan sesudahnya.Nama dari direktori tersebut ditentukan oleh domain pertama yang telah Anda masukkan saat menerbitkan sertifikat SSL dengan perkakas acme.sh sebelumnya
Direktori yang berawalan dengan nama domain dan berakhiran
_ecc
(cth.domain.com_ecc
dan'*.domain.com_ecc'
): Sama saja seperti no. 7, bedanya di sini menyimpan sertifikat SSL yang telah diterbitkan dengan kunci ECC/ECDSA, yang telah saya bahas di dalam bagian sebelumnya.Berkas
http.header
: Entah berkas ini fungsinya untuk apaan, tapi mungkin berkas ini akan digunakan untuk menerbitkan dan memperbarui sertifikat SSL dengan perkakas acme.sh, jadi sebaiknya jangan dihapusDirektori
notify
: Direktori yang digunakan sebagai tempat penyimpanan berkas skrip Shell untuk penggunaan fitur Notify Hook yang ada pada perkakas acme.sh, isi direktori tersebut adalah skrip Notify Hook yang disediakan oleh perkakas tersebut.Direktori tersebut (dan berkas-berkas di dalamnya) akan digunakan oleh perkakas acme.sh jika Anda menggunakan fitur Notify Hook-nya. Untuk cara penggunaannya, silahkan kunjungi halaman dokumentasinya
Nah, itulah letak acme.sh, isi direktorinya beserta fungsi-fungsinya.
Konfigurasi acme.sh
Letak berkas konfigurasi (terutama untuk konfigurasi Akun) itu terletak di $HOME/.acme.sh/account.conf
.
Berkas tersebut menyimpan sejumlah kredensial 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.
Berikut adalah contoh isi berkas account.conf
:
|
|
Jadi, jika Anda memiliki masalah saat menggunakan acme.sh hanya karena akunnya tidak valid, entah itu salah memasukkan atau kredensialnya tidak ada, Anda bisa menggantinya dengan mengubah berkas tersebut dengan menggunakan Editor Teks favorit Anda.
Isi direktori domain.com
dan berkas yang diperlukan
Berikut di bawah ini adalah isi dari direktori domain.com
yang ada di dalam perkakas acme.sh, di dalamnya ada berkas-berkas yang diperlukan untuk memasangkan sertifikat SSL.
|
|
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 sertifikatnya)domain.com.key
(Sebagai Kuncinya)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 sertifikatnya)domain.com.key
(Sebagai Kuncinya)
Kenapa bukan domain.com.cer
? Karena fullchain.cer
itu merupakan gabungan dari domain.com.cer
dan ca.cer
.
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.
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 penyedianya.
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 memasangkannya supaya sertifikat SSL yang telah Anda terbitkan bisa diaktifkan. Setiap penyedia Web mempunyai cara memasang Sertifikat SSL yang berbeda-beda, kali ini saya bahas cara memasang Sertifikat SSL untuk Netlify dan Bunny CDN (+ cPanel).
Memasang Sertifikat SSL yang saya bahas di sini tidaklah menggunakan metode unggah manual melalui Web, melainkan kamu ‘Nembak’ ke API-nya.
Maksudnya Anda akan memanggil Server API masing-masing penyedianya untuk melakukan Request dengan metode POST 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 aksesnya, 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 mendapatkannya, 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 sertifikatnya 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 Pribadinya dan ca.cer
Sertifikat Penengahnya, berkas lainnya (seperti: fullchain.cer
) tidak perlu Anda kirimkan.
Anda dapat menyimpannya dengan perintah berikut:
|
|
Atau, di bawah ini jika Anda ingin cara lain:
|
|
Atau, di bawah ini jika Anda menggunakan fish
sebagai Shell:
|
|
Silahkan ubah direktori dan nama berkas di atas sesuai dengan letak sertifikat SSL yang telah tersimpan di dalam Perangkat Anda dan ubah teks ACCESS_TOKEN_KAMU_DI_SINI
menjadi Personal access token yang telah Anda buat dan simpan sebelumnya.
Selain direktori dan nama berkasnya, Anda juga bisa bebas menggantikan nama variabelnya sesuka Anda, misalnya: PLAIN_CERT
jadi PLAIN_CERT_1
, atau CERT
, atau lainnya, asal bisa Anda gunakan variabel tersebut kembali.
Setelah memasukkannya ke dalam Variabel, Anda tinggal panggil saja API-nya dengan perintah berikut:
|
|
Atau, gunakan perintah berikut ini jika Anda ingin memanggilnya dalam satu baris saja:
|
|
Jika sukses, maka akan tampil pesan dalam format JSON, seperti di bawah ini:
|
|
Atau, penampilannya akan seperti di bawah ini jika dipercantik:
|
|
Jika gagal, maka pastinya muncul pesan yang tidak seperti di atas, melainkan Pesan Galat (Error) yang pesannya berbeda-beda tergantung penyebabnya.
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 atau mungkin Anda perlu mempelajari Konfigurasi acme.sh untuk Domain tertentu terlebih dahulu sebelum itu.
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 tujuannya. |
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:
- Silahkan akses ke Dasbor Bunny.net-nya, login jika diminta.
- Klik pada “Account” yang letaknya di atas dan berikon seorang raja
- 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
- 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 mengkliknya)
Untuk Pull Zone ID-nya, Anda bisa dapatkan itu di pengaturannya. 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:
|
|
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 sertifikatnya saja melalui API dari Bunny.net. Sebelum itu, Bunny.net meminta agar kita hanya mengunggah 2 Berkas saja untuk memasang Sertifikat SSL-nya.
Agar kita dapat mengunggah 2 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 Pribadinya dan fullchain.cer
untuk Sertifikatnya, berkas lainnya (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 mengirimkannya dalam bentuk Base64 saja.
Sehingga untuk menyimpannya ke dalam variabel, maka Anda harus meng-encode isi berkas-berkas tersebut ke dalam Base64.
Tanpa basa-basi lagi, Anda dapat menyimpannya ke dalam variabel dengan perintah berikut:
|
|
Atau, di bawah ini jika Anda menggunakan fish
sebagai Shell:
|
|
Silahkan ubah direktori dan nama berkas di atas sesuai dengan Sertifikat SSL yang tersimpan di dalam Perangkat Anda dan ubah teks ACCESS_KEY_KAMU_DI_SINI
menjadi Access Key yang telah Anda simpan sebelumnya.
Selain direktori dan nama berkasnya, Anda juga bisa bebas menggantikan nama variabelnya sesuka Anda, misalnya: BASE64_FULLCHAIN_CER
jadi FULLCHAIN_CER
, atau FULLCHAIN
, atau lainnya, asal bisa Anda gunakan variabel tersebut kembali.
Setelah memasukkannya ke dalam Variabel, Anda tinggal panggil saja API-nya dengan perintah berikut:
|
|
Atau, gunakan perintah berikut ini jika Anda ingin memanggilnya dalam satu baris saja:
|
|
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 penyebabnya.
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
Membuat API Token dan Persiapannya
Jika Anda merupakan pengguna cPanel sebagai Kontrol Panelnya, baik itu di dalam Server Anda atau pada Layanan Shared Hosting yang Anda gunakan, maka Anda bisa melakukannya tanpa harus mengakses SSH-nya terlebih dahulu.
Tapi sebelum itu, Anda diharuskan untuk membuat API Token-nya terlebuh dahulu di cPanel-nya, yang tentu saja Anda perlu Akun cPanel-nya untuk ini.
Jika Anda bukan merupakan pengguna/pemilik Server, maka Anda bisa menyewa sebuah layanan Shared Hosting yang memakai cPanel, tidak perlu memilih paket terlalu mahal, paket yang termurah pun juga harusnya bisa dan tidak perlu ada fitur Akses SSH.
Catatan: |
---|
Fitur ini masih dalam tahap eksperimental, sehingga segala perubahan yang terjadi dengan cepat hingga resiko yang akan Anda hadapi kedepannya itu semua Anda tanggung sendiri. |
Cara buatnya adalah sebagai berikut:
- Masuk ke cPanel menggunakan Akun cPanel Anda, bukan Akun Billing (Akun cPanel dan Billing itu beda lho, jangan salah)
- Setelah masuk ke cPanel, gulirkan tetikusnya ke arah bawah sampai ke bagian “Security” (bahasa Indonesia: “Keamanan”), pada bagian tersebut kamu klik “Manage API Tokens”, seperti cuplikan berikut: (Atau, langsung cari aja “Manage API Tokens”, terus tinggal kamu klik aja hasilnya)
Jika Anda baru pertama kali membuat API Token, Anda akan langsung diminta untuk melengkapi informasi yang ada di sana untuk dibuatkan API Token-nya. Lengkapi informasi berikut ini:
- API Token Name: Itu merupakan Nama API Token yang ingin Anda buat, Anda bisa mengisinya dengan bebas, tapi karakter yang boleh dimasukkan adalah alfanumerik (besar dan kecil diperbolehkan), tanda hubung/pisah dan tanda garis bawah saja, serta peka terhadap huruf besar dan kecil (case sensitive)
- Should the API Token Expire?: Itu menentukan masa berlaku API Token yang Anda buat, jika tidak ingin ada masa berlaku, Anda tinggal pilih “The API Token will not expire” atau “Specify an expiration date” jika Anda ingin menyetel tanggalnya (Saran saya jangan ada masa berlaku, kalau mau ada masa berlakunya pastikan Anda bisa memperbaruinya secara otomatis)
Jika sudah selesai, klik pada button “Create” (bahasa Indonesia: “Buat”)
Setelah mengkliknya, kamu akan melihat Kode API Token yang hanya bisa dilihat sekali saja, jadi simpanlah API Token tersebut baik-baik dan pastikan tidak ada seorang pun yang mengetahuinya kecuali Anda sendiri.
Jika sudah, centang pada bagian “Create another token after I click Yes, I saved my token.”, lalu klik pada Button “Yes, I Saved My Token”, seperti cuplikan berikut:
Setelah membuat “API Token” dan menyimpannya, Anda perlu menginstal jq
di dalam perangkat Anda, ini akan sangat diperlukan untuk memasang sertifikat SSL melalui API dari cPanel nantinya, terutama fitur URI Encode-nya yang diperlukan oleh cPanel.
Jika Anda menggunakan Termux, maka Anda bisa menginstalnya dengan perintah berikut:
|
|
Atau, jika Anda merupakan pengguna GNU/Linux (x64), Anda bisa menginstalnya dengan salah satu perintah berikut:
|
|
Setelah menginstalnya, silahkan lanjut ke langkah berikutnya.
Memasang Sertifikat SSL melalui API dari cPanel
Pada langkah ini Anda akan memasangkan sertifikat SSL-nya melalui panggilan API dari cPanel. Pemasangannya sendiri agak beda dari yang lain, kedua penyedia di atas menggunakan metode POST, sedangkan yang ini menggunakan metode GET.
Kedua metode ini memiliki perbedaan dalam mengirimkan datanya, namun dengan tujuan yang sama.
Tanpa basa-basi lagi, Anda dapat menyimpan berkas sertifikat tersebut ke dalam variabel dengan perintah berikut:
|
|
Atau, di bawah ini jika Anda menggunakan fish
sebagai Shell:
|
|
Silahkan ubah direktori dan nama berkas di atas sesuai dengan sertifikat SSL yang tersimpan di dalam perangkat Anda.
Ubah teks NAMA_HOS_UNTUK_CPANEL_KAMU_DI_SINI
menjadi Nama Hos atau Alamat IP yang biasa Anda gunakan untuk login ke cPanel, USERNAME_CPANEL_KAMU_DI_SINI
menjadi Username (bahasa Indonesia: Nama Pengguna) cPanel kamu dan ubah teks API_TOKEN_KAMU_DI_SINI
menjadi API Token yang telah Anda simpan sebelumnya.
Selain direktori dan nama berkasnya, Anda juga bisa bebas menggantikan nama variabelnya sesuka Anda, misalnya: CPANEL_PLAIN_CA
jadi PLAIN_CA
, atau CA
, atau lainnya, asal bisa Anda kembali gunakan variabel tersebut.
Setelah memasukkannya ke dalam Variabel, Anda tinggal panggil saja API-nya dengan perintah berikut:
|
|
Atau, gunakan perintah berikut ini jika Anda ingin memanggilnya dalam satu baris saja:
|
|
Atau, memakai perintah seperti di bawah ini juga boleh biar lebih rapi:
|
|
Ganti <ALAMAT_DOMAIN_KAMU_DI_SINI>
menjadi alamat Domain/Subdomain di cPanel yang ingin kamu pasangkan sertifikatnya.
Jika sukses, maka akan tampil pesan dalam format JSON, seperti di bawah ini:
|
|
Atau, penampilannya akan seperti berikut jika dipercantik:
|
|
Jika gagal, maka pastinya muncul pesan yang tidak seperti di atas, melainkan Pesan Galat (Error) yang pesannya berbeda-beda tergantung penyebabnya.
Nah, gimana? Cukup mudah, bukan? Jika Anda berhasil memasang Sertifikat SSL Anda di cPanel dengan 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.
Lainnya
Jika Anda menggunakan Penyedia Hosting selain Netlify (seperti GitHub Pages, Vercel, Surge.sh, Render.com), Kontrol Panel untuk 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 efeknya. Hal ini akan menjadi kelebihan tersendiri sejak penyedia Hosting/CDN memperlakukan setiap Domain-nya 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:
|
|
Jika Anda ingin mengubahnya, silahkan Anda ubah/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 mengubahnya, 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 SSLLe_PostHook
: adalah perintah yang akan dieksekusi setelah perkakas acme.sh menjalankan tugasnya untuk menerbitkan/memperbarui sertifikat SSL, tidak peduli apakah berhasil atau gagalLe_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:
|
|
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, ubah nilai dari variabel Le_RenewHook
, Le_PreHook
atau Le_PostHook
menjadi cara Anda mengeksekusikan/menjalankan berkas skripnya. (Disarankan: /usr/bin/env sh nama-berkas-skrip.sh
atau /data/data/com.termux/files/usr/bin/env sh renew.sh
jika Anda menggunakan Termux)
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 melakukannya di dalam direktori $HOME/.acme.sh/domain.com/
.
Setelah perintah tersebut berhasil dieksekusi, maka nilai variabel yang telah Anda ubah sebelumnya akan menjadi seperti berikut:
|
|
<BARIS_PERINTAH_DALAM_BENTUK_BASE64>
adalah Base64 dari perintah yang sebelumnya Anda terapkan di dalam variabel tersebut. Ya, acme.sh secara otomatis meng-encode perintah yang telah 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 skripnya sebagai berikut:
|
|
Kenapa perintah di atas mengarahkan kepada berkasnya langsung? Kenapa tidak ditentukan direktorinya? Itu karena suatu saat skrip tersebut dijalankan, maka direktori kerjanya adalah $HOME/.acme.sh/www.si-udin.com
yang di dalamnya 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 direktorinya lagi secara absolut, dia cuma perlu menuliskan nama berkasnya saja.
Setelah pembuatan skripnya 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 konfigurasinya, yakni www.si-udin.com.conf
.
Setelah menyimpannya, ia perlu melakukan konfigurasi supaya skripnya 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, variabelnya akan menjadi seperti berikut:
|
|
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 konfigurasinya, ia melihat kalau nilai dari variabel Le_RenewHook
itu berubah menjadi seperti berikut:
|
|
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 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. Metodenya sebagai berikut:
Metode ke-1: Memanfaatkan Konfigurasi dari acme.sh
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.
Kelebihannya 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/memindahkan 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:
|
|
Catatan: Skrip di atas juga dapat bekerja di Shell yang sangat berbeda dan tidak sesuai dengan POSIX seperti fish
, karena mengikuti Shebang yang telah saya tentukan, yakni /usr/bin/env sh
. Jadi, skrip di atas seharusnya dapat dieksekusi oleh Shell apapun selama mengikuti/‘menghormati’ Shebang yang telah ditentukan.
Skrip di atas menggunakan /usr/bin/env sh
sebagai shebang. Jika Anda adalah pengguna Termux dan kalau mau, Anda bisa menggantinya menjadi /data/data/com.termux/files/usr/bin/env sh
, meskipun Termux sendiri mentoleransi penggunaan /usr/bin/env sh
sebagai shebang.
Silahkan Anda pelajari skrip di atas dan kembangkan sendiri skripnya 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 menyimpannya di dalam folder $HOME
, dan saya asumsikan bahwa Anda menamainya dengan renew-ssl.sh
agar mempermudah saya dalam membahasnya, karena pastinya Anda menamainya dengan nama yang berbeda.
Jika sudah tersimpan, berikan ijin eksekusi terhadap berkas tersebut dengan perintah chmod +x renew-ssl.sh
atau chmod +x /lokasi/ke/berkas/renew-ssl.sh
.
Setelah itu, 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
)
|
|
Saat mengedit, Anda akan menemukan sebuah Cron dengan teks yang mirip seperti berikut:
|
|
"/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 skripnya, 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 variabelnya 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 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 */2 * * *
.
Contohnya seperti berikut:
|
|
Atau, contoh lainnya seperti berikut:
|
|
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.
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 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 jawabannya
Pertanyaan ke-1: Apa itu Protokol ACME?
Jawab: Menurut salah satu Artikel di Wikipedia, 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 (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 ini 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 itu PKI?
Menurut salah satu Artikel di Wikipedia, Public key Infrastructure (bukan tentang Partai Komunis Indonesia) atau disingkat PKI (bahasa Indonesia: Infrastruktur Kunci Publik atau disingkat dengan IKP) adalah seperangkat peran, kebijakan, perangkat keras, perangkat lunak, dan prosedur yang diperlukan untuk membuat, mengelola, mendistribusikan, menggunakan, menyimpan, dan mencabut sertifikat digital dan mengelola enkripsi kunci publik.
Tujuan IKP adalah untuk memfasilitasi transfer informasi elektronik yang aman untuk berbagai aktivitas jaringan seperti perdagangan elektronik (e-commerce), perbankan melalui internet (internet banking), dan perpesanan surel rahasia.
IKP diperlukan untuk aktivitas di mana kata sandi sederhana merupakan metode otentikasi yang kurang memadai dan juga diperlukan sebagai bukti yang lebih ketat untuk mengonfirmasi identitas pihak yang terlibat dalam komunikasi, serta untuk memvalidasi informasi yang ditransfer.
Pertanyaan ke-4: 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-5: Bagaimana caranya agar acme.sh menggunakan CA Let’s Encrypt atau lainnya 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 perintahnya akan seperti berikut:
|
|
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:
|
|
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-6: Bagaimana caranya agar saya bisa menggantikan sertifikat SSL menjadi dari Let’s Encrypt atau CA lainnya, saya tidak ingin sertifikat SSL dari ZeroSSL?
Jawab: Caranya tinggal Anda 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 melakukannya dengan paksa. Tanpa parameter/argumen --force
, maka Anda tidak mungkin bisa menggantinya.
Format perintahnya akan seperti berikut:
|
|
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.
Setelah menerbitkan ulang sertifikatnya, tentu saja acme.sh tidak mengeksekusikan skrip renewal-nya secara otomatis, jadi sertifikat SSL yang terpasang pada Aplikasi/Web yang Anda miliki tidak terganti, apalagi jika Anda lebih memilih untuk membuatkan skripnya secara terpisah.
Lalu, bagaimana caranya agar saya bisa menggantikan sertifikatnya? Ya, Anda tinggal eksekusikan saja skrip renewal tersebut secara manual untuk memasangkan sertifikat SSL yang terbaru di Situs Web/Blog atau Aplikasi Anda.
Pertanyaan ke-7: Bagaimana caranya agar saya bisa menghapus sertifikatnya?
Jawab: Anda bisa menghapusnya dengan perintah berikut:
|
|
Anda bisa menambahkan argumen --ecc
jika Anda ingin menghapus sertifikat ECC/ECDSA, contoh perintahnya akan seperti berikut:
|
|
Ganti domain.com
menjadi Domain mana yang ingin Anda hapus sertifikatnya, tidak perlu mengingat seluruh domain yang Anda masukkan saat menerbitkan sebuah sertifikat SSL, cukup ingat Domain Pertama yang Anda masukkan saat menerbitkannya.
Jika Anda tidak ingat Domain Pertama yang Anda masukkan, silahkan lihat isi dari direktori ~/.acme.sh
atau $HOME/.acme.sh
, di situ akan ada folder yang bernama Alamat Domain Anda.
Setelah mengeksekusi perintah di atas, nanti keluarannya akan seperti berikut:
|
|
Jika perlu, Anda juga bisa menghapus secara manual folder tersebut sesuai dengan keluaran agar lebih bersih.
Nah, sekarang Anda sudah paham kan caranya?
Pertanyaan ke-8: 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 direktorinya setelah menghapus sertifikat SSL dari perkakas acme.sh-nya. Jadi, Anda perlu menghapus direktori tersebut secara manual.
Solusinya adalah Hapus Direktori tersebut (cth. $HOME/.acme.sh/domain.com
untuk domain.com
) secara manual setelah menghapus sertifikat SSL-nya.
Pertanyaan ke-9: 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.
Perkakas tersebut bisa diakses tanpa perlu akun root
atau perintah sudo
sama sekali, sehingga bisa diakses seperti biasa.
Saya dengar kalau Certbot memerlukan akses root atau menggunakan perintah sudo
untuk itu, kalau itu benar maka hal itu gak banget, apalagi kalau kasusnya adalah memasangkan sertifikat SSL di Netlify dan BunnyCDN.
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 baku selain Let’s Encrypt dan ZeroSSL yang bisa Anda ganti tanpa perlu memasukkan Alamat URL-nya lagi, mudah dipindahkan atau digandakan ke perangkat lain, dan sebagainya.
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 mempelajarinya.
Tapi, jika Anda lebih suka atau lebih memilih untuk menggunakan Lego atau Certbot, ya silahkan saja.
Pertanyaan ke-10: Selain acme.sh, apakah ada alternatifnya untuk Windows?
Jawab: Ada, namanya win-acme atau Lego yang mendukung Windows secara native. Sebenarnya, Anda juga bisa menggunakan Certbot, dia juga mendukung Windows.
Tapi, saya belum coba dan keliatannya saya lebih suka (atau mungkin lebih tepatnya “lebih terbiasa” dengan) acme.sh daripada lainnya, meskipun saya harus menggunakan WSL agar mengoperasikannya. Kalo mau pake ya silahkan.
Pertanyaan ke-11: Bagaimana caranya saya hapus acme.sh sepenuhnya?
Jawab: Anda tinggal ketik perintah berikut:
|
|
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-12: 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-13: 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 dan sistem operasi, seperti oleh 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 baik perintah ataupun hasil keluarannya di kebanyakan Sistem Operasi berbasis Unix/Mirip-Unix (*nix), base64
milik GNU (GNU coreutils) dan yang bukan milik GNU itu benar-benar berbeda, baik dari segi perintah ataupun hasil keluaran bakunya.
Lagipula, tidak semua Sistem Operasi berbasis *nix memakai GNU coreutils, sebut saja macOS, Alpine Linux, dan BSD yang merupakan tiga di antaranya, jadi ya wajar saja jika mereka berbeda bila dibandingkan dengan GNU/Linux.
Oleh karena itu, saya memakai OpenSSL sebagai gantinya, selain karena kompatibilitas, saya yakin OpenSSL pasti terinstal di hampir semua Sistem Operasi yang berbasis *nix seperti GNU/Linux, BSD, macOS, dan lainnya.
Kalau di Android Anda tinggal Instal Termux, lalu instal openssl-tool
saja di dalam Termux.
Lalu, bagaimana dengan Windows? Untuk Pengguna Windows sudah saya bahas dari awal di bagian Persiapan.
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-14: Saya menggunakan Windows 10 dan WSL, saya berhasil memasang sertifikat SSL dengan mengikuti artikel ini, tapi bagaimana caranya agar saya bisa memperbaruinya secara otomatis?
Jawab: Jika Anda mempunyai Ponsel Pintar dengan menggunakan Sistem Operasi Android, saya lebih menyarankan Anda untuk memperbaruinya secara otomatis melalui Ponsel saja dan Komputer PC/Laptopnya Anda gunakan untuk meremot Ponselnya menggunakan klien SSH dan menerbitkan serta mengelola sertifikatnya di sana memakai acme.sh.
Saya sarankan ini karena selain bisa dibawa ke mana-mana (karena berukuran kecil) dan konektivitasnya lebih luas/banyak, ponsel juga bisa diaktifkan lebih lama ketimbang Komputer/Laptop kamu, bahkan bisa diaktifkan selama 24/7 jam nonstop kalau kamu mau selama suhu perangkat terjaga dan arus listriknya sehat.
Caranya sudah saya bahas secara lengkap di artikel ini.
Tapi jika Anda terpaksa tidak menggunakannya dengan alasan apapun, Anda bisa melakukannya di Windows 10 atau di atasnya melalui WSL.
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 layanannya 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 skripnya 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:
Buka “Task Scheduler”
Di dalam folder “Task Scheduler Library”, klik “Create Basic Task” untuk membuat sebuah “Tugas” baru
Nanti akan muncul dialog Wisaya atau Wizard yang menuntun kamu dalam membuat sebuah Tugas. Pertama-tama, tulis Nama dan Deskripsi tugasnya, lalu klik “Next >”
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
Jika ada sub-langkah setelah “Trigger”, maka tentukan kapan Tugas tersebut dieksekusi dengan memilih opsi-opsi yang ada. Klik “Next >” jika sudah selesai.
Pada langkah “Action”, nanti akan ada 3 pilihan, maka Anda pilih “Start a program”
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 skriprenew-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.
- Ganti
- Isikan Program/script dengan
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-15: Apa yang terjadi jika rantai pada sertifikat SSL yang terpasang malah tidak sempurna/tidak lengkap?
Jawab: Tergantung pada ketidaksempurnaannya/tidak lengkapnya seperti apa, jika Anda hanya memasang Sertifikat dan Kunci Pribadi (bahasa Inggris: Private Key)-nya saja tanpa sertifikat CA-nya, ada perangkat lunak yang mendukung dan ada yang tidak.
Biasanya kebanyakan Peramban Web di Desktop dan Seluler (terutama versi terbaru) masih mendukungnya karena mereka memanfaatkan dukungan ekstensi AIA (Authority Information Access) yang ada pada sertifikat untuk mengunduh sertifikat penengah (Intermediate Certificate) yang hilang sesuai RFC3280 bagian 4.2.2.1 dan ada pula yang menembolokan (cache) sertifikat penengah untuk melengkapi rantai sertifikat.
Tapi, ada beberapa perangkat lunak klien lainnya yang tidak mendukung ekstensi AIA ini dan ada pula yang tidak menembolokan sertifikat penengah, sehingga mereka tidak mendukung sertifikat SSL yang rantainya tidak lengkap.
Kalau Anda ingin menguji aksesnya dari perangkat Anda, silahkan kunjungi alamat URL https://incomplete-chain.badssl.com/ atau Situs Web badssl.com untuk pengujian lainnya.
Atau, kalau Anda ingin mengecek rantai sertifikat yang terpasang di Situs Web/Blog/Aplikasi Anda, silahkan kunjungi halaman SSL Checker dari SSL Shopper atau SSL Server Test dari Qualys SSL Labs.
Selain hal di atas, jika Anda tidak memasang Kunci Pribadi, maka sertifikat 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 Domainnya, sepertinya Anda sudah bisa menebak apa yang akan terjadi.
Kalau jawabanmu adalah “Sertifikat TLS/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 sertifikatnya dengan benar!
Pertanyaan ke-16: Kok Sertifikat USERTrust yang saya lihat masa berlakunya cuma sampai tahun 2029 saja, bukannya sampai tahun 2038 seperti yang dibahas tadi?
Jawab: Sertifikat USERTrust yang Anda lihat itu bukanlah Sertifikat Akarnya. Kenapa? Karena ia masih bergantung pada Sertifikat “AAA Certificate Services” sebagai Sertifikat Akar.
Syarat agar menjadi “Sertifikat Akar” adalah bahwa ia tidak mengakar pada Sertifikat apapun, melainkan mengakari Sertifikat lain dan dalam hierarki sertifikat SSL atau Rantai Kepercayaan, posisi Sertifikat Akar itu merupakan yang paling tinggi dibandingkan dengan bawahannya.
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/Rantai 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 Akarnya.
Jadi, sertifikat akar/rantai (atau Chain of Trust) yang Anda dapatkan itu bergantung pada Perangkat Lunak yang Anda gunakan.
Pertanyaan ke-17: Kenapa Sertifikat Akar/Rantai 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 lainnya, 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 memasangkannya ke dalam perangkat Anda.
Masalahnya, Sertifikat Akar memiliki masa berlaku, sehingga perlu diperbarui agar aplikasi/web yang menggunakan sertifikat tersebut dapat diakses/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 berjalannya waktu.
Tapi, jika tidak bisa diperbarui, maka Perangkat Lunak akan menggunakan Sertifikat Akar lama yang tersimpan di dalam tempat penyimpanan sertifikatnya.
Jika sertifikat akar tersebut habis masa berlakunya, maka skenario terburuknya adalah Aplikasi/Web yang terpasang sertifikat SSL dengan akar tersebut akan tidak bisa diakses dari perangkat itu sebagaimana mestinya.
Pertanyaan ke-18: Saya mengalami galat/error selama menggunakan acme.sh, bagaimana cara mengatasinya?
Jawab: Cara mengatasinya itu bergantung dengan galatnya. Berbeda pesan galat, maka akan beda penyebabnya, beda penyebab maka solusi pun akan berbeda pula. 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 keluarannya 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 keluarannya terlebih dahulu, lalu tempelkan itu ke dalam Layanan Pastebin seperti Pastebin dari Teknik.io, GitHub Gist, IX, dll.
Setelah menempelkannya, maka Anda perlu mengirimkan teksnya, sebelum dikirimkan mungkin Anda perlu menutupi beberapa informasi terlebih dahulu, setelah dikirimkan maka akan muncul Alamat URL untuk mengakses teksnya, 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 komentarnya, agar saya dan yang lain bisa lebih cepat membantu Anda, karena Informasi yang diperlukan telah tersedia.
Pertanyaan ke-19: Bagaimana cara menggantikan Kredensial Akun yang telah saya masukkan sebelumnya? Soalnya tadi saya salah memasukkannya
Jawab: Jika Anda ingin mengganti Kredensial yang telah Anda masukkan sebelumnya dengan alasan apapun, seperti salah ketik, kredensialnya telah diganti, dll, maka Anda bisa lakukan itu dengan mengubah/deklarasi lagi variabel tersebut ke dalam Shell-nya, lalu ubah isi berkas account.conf
yang berada di dalam direktori acme.sh
Saat menerbitkan/memperbarui sertifikat, acme.sh secara otomatis akan menyimpan kredensial yang telah Anda masukkan sebelumnya melalui Terminal 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 kredensial berupa “API Token” ke dalam variabel CF_Token
dan “Account ID” ke dalam variabel CF_Account_ID
di dalam Terminal terlebih dahulu.
Setelah menyimpannya dan menjalankan perkakas acme.sh untuk menerbitkan sertifikatnya, 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 Kredensialnya, entah itu ganti “API Token” atau/dan “Account ID”-nya, maka Anda tinggal ganti saja nilai dari 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, lalu tempelkan perintah berikut ke dalam Terminal Anda.
Gunakan Perintah berikut ini jika Anda ingin menggantikan dua-duanya:
|
|
Atau, contoh perintah di bawah ini jika Anda hanya ingin menggantikan CF_Token
-nya saja:
|
|
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 sertifikatnya, dengan begini acme.sh akan menggunakan kredensial barunya.
Pertanyaan ke-20: Apakah ini juga bisa diikuti oleh pengguna perangkat komputer kecil seperti Raspberry Pi dan perangkat sejenis lainnya?
Jawab: Sangat bisa, Anda sangat bisa untuk mengikuti semua tutorial yang ada di sini menggunakan perangkat komputer kecil Anda, seperti Raspberry Pi atau sejenisnya.
Untuk Sistem Operasinya, saya sarankan Anda gunakan GNU/Linux yang merupakan Sistem Operasi berbasis *nix dibandingkan dengan Windows. Di Android juga bisa, tapi saya sarankan unduh, instal dan gunakan aplikasi Termux untuk itu.
Pertanyaan ke-21: Bagaimana cara memindahkan salinan acme.sh ke dalam Perangkat lain?
Jawab: Bisa sekali, cara memindahkan acme.sh ke dalam Perangkat lainnya sebagai berikut:
- Pastikan perangkat yang Anda tuju/perangkat baru Anda sudah memenuhi persiapannya terlebih dahulu. Sudah? Kalau begitu, Anda bisa lanjut.
- Sebelum itu, Anda perlu menyalinkan direktori acme.sh ke perangkat baru dari perangkat lama Anda. Kompresi direktori dan berkas tersebut dengan perintah berikut dari perangkat lama Anda:
|
|
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.
Setelah mengkompresinya, silahkan langsung menyalinkannya ke dalam perangkat yang ingin Anda tuju/perangkat baru Anda. Jika perlu, silahkan lakukan enkripsi pada berkas tersebut terlebih dahulu sebelum menyalinkan/mengirimkannya
(Catatan: Mulai sekarang/di langkah ini, gunakan perangkat yang Anda tuju/perangkat baru Anda sampai seterusnya) Setelah disalin ke dalam perangkat baru, silahkan Anda pindahkan berkas tersebut ke direktori
$HOME
atau~
yang ada di dalam perangkat baru Anda.Setelah itu, buka Terminalnya dari perangkat baru, lalu instal terlebih dahulu acme.sh-nya dengan perintah berikut:
|
|
- Setelah Anda menginstalnya, dekripsi berkas
acme.sh.tar.gz
jika Anda melakukan enkripsi, lalu ekstrak berkas tersebut dengan perintah berikut:
|
|
- Setelah diekstrak, aturlah
USER_PATH
di dalam berkas$HOME/.acme.sh/account.conf
dengan perintah berikut:
|
|
Jika Anda membuat berkas skrip terpisah (mengikuti Metode ke-2), maka aturlah Crontab melalui Terminal 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 menginstal perkakas acme.sh-nya.
Kalau tidak yakin, Anda bisa mengaturnya secara manual atau eksekusikan perintah
acme.sh --install-cronjob
di dalam perangkat baru Anda untuk memasang Cron Job-nya.Jika sudah selesai, pastikan agar layanan Cron selalu aktif di dalam perangkat baru Anda, baik saat perangkat dijalankan, bahkan saat perangkat dalam posisi start-up/setelah dinyalakan.
Jika ini berhasil, maka sebaiknya Anda hapus Cron Job yang berkaitan dengan acme.sh atau pembaruan sertifikat SSL di dalam perangkat lama Anda, hal ini dilakukan supaya tidak menimbulkan konflik saat memperbarui sertifikat SSL-nya hanya karena kredensialnya sama.
Caranya bisa hapus manual melalui
crontab -e
, atau gunakan perintahacme.sh --uninstall-cronjob
untuk menghapusnya secara otomatis dari perangkat lama AndaKalau perlu, Anda juga dapat menghapus acme.sh sepenuhnya dari perangkat lama Anda dengan perintah
acme.sh --uninstall; rm -rf ~/.acme.sh
Pertanyaan ke-22: 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 Servernya bisa terselesaikan, sehingga bisa digunakan kembali.
Pertanyaan ke-23: 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.
Sertifikatnya memang punya andil yang sangat penting sih dalam keamanan, karena ia membawa kunci publik di dalamnya, tapi yang melakukan enkripsi dan dekripsi tetap saja oleh Server dan Kliennya, bukan oleh Sertifikat atau pun pihak CA-nya.
Lagipula, algoritma dan ukuran kunci publik yang bisa Anda dapatkan baik dari sertifikat SSL berbayar atau bahkan gratisan itu sama aja, kok, dan yang pasti Anda tidak akan mendapatkan kunci yang sudah ’tertinggal’ (cth. RSA dengan ukuran 1024-bit).
Bahkan algoritma kunci publik yang digunakan pada sertifikat SSL berbayar yang terpasang di dalam Situs Web/Blog yang saya lihat kebanyakan pada memakai algoritma kunci RSA dengan ukuran 2048-bit saja, yang merupakan kunci yang cukup ideal untuk saat ini, walaupun saat ini ada yang memakai algoritma yang lebih baru (seperti ECC/ECDSA), empat di antaranya adalah Facebook, Twitter, Cloudflare dan Google (meski rantainya tidak sepenuhnya ECC).
Selain itu, saat sertifikat SSL ingin dibuat memakai acme.sh saja, Anda bisa menentukan ukuran dan jenis kuncinya dengan bebas selama didukung oleh acme.sh dan pihak CA-nya, semakin besar ukuran kuncinya maka semakin kuat kuncinya.
Namun, semakin besar pula pengorbanan kinerja dari sebuah perangkat saat mengunjunginya, karena perangkat keras belum tentu dapat memprosesnya dengan cepat, apalagi jika tidak memiliki fitur akselerasi dari perangkat keras, sehingga ini akan mengorbankan kinerja dari sebuah Web/Blog juga.
Jadi, harus dipertimbangkan dengan baik untuk pemilihan kuncinya ya 🙂
Pertanyaan ke-24: 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.
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 sertifikat 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.
Ada beberapa manfaat yang bisa Anda dapatkan untuk masa berlaku yang pendek ini, seperti:
Sertifikat yang kamu gunakan akan selalu mendapatkan algoritma tandatangan dan kunci yang tidak tertinggal, serta dapat cepat “beradaptasi” jika suatu saat para perusahaan/organisasi perangkat lunak besar (seperti Google, Microsoft, Apple, Mozilla dan Cisco) memutuskan untuk memblokir/“tidak lagi mempercayai” sertifikat yang ditandatangani dengan algoritma atau/dan menggunakan kunci yang telah usang, karena alasan keamanan.
Kalau kamu tidak paham apa yang saya maksud, coba kamu bayangkan kalau di tahun 2008 yang lalu kamu menyewa sebuah sertifikat SSL dengan masa berlaku 10 tahun (yang artinya berlaku sampai tahun 2018), yang mana saat itu sertifikat SSL masih ditandatangani dengan algoritma SHA1 dan menggunakan kunci RSA 1024-bit.
Tapi 3-5 tahun kemudian, perusahaan/organisasi perangkat lunak besar tersebut malah memutuskan untuk tidak lagi mempercayai/memblokir sertifikat yang ditandatangani dengan algoritma yang telah usang seperti SHA1 dan menggunakan kunci yang telah usang seperti RSA dengan ukuran 1024-bit.
Nah, kira-kira seperti itulah maksudnya, paham kan?
Anda memiliki fleksibilitas/kebebasan untuk menggantikan CA/PSrE tanpa terkunci dalam jangka panjang
Dengan mengotomatiskan pembaruan sertifikat, Anda dapat meminimalkan pembaruan dalam keadaan mendadak secara manual. Memperbaruinya secara manual akan menguras waktu lain berharga Anda.
Meminimalisir terjadinya salah penerbitan (mis-issuance) pada sertifikat SSL dan terkomprominya kunci pribadi untuk sertifikatnya.
Jika terjadinya mis-issuance pada sertifikat atau kunci pribadimu dikompromikan/dicuri, maka hal ini tidak akan bertahan lama karena masanya yang pendek.
Jadi, Anda tinggal menunggu sampai masa berlakunya habis atau menerbitkan ulang sertifikatnya, tanpa perlu me-revoke sertifikat lamanya terlebih dahulu yang membuat situs web/aplikasi menjadi down/tidak berfungsi (kalau bisa sih di-revoke dulu), ini akan mengurangi ketergantungan Anda pada proses Revocation yang menurut Scott Helme itu “kacau balau”
Anda selalu bisa mendapatkan kunci terbaru (dengan merotasi kunci pribadi) ketika memperbarui sertifikatnya secara otomatis.
Catatan: Ini tergantung dari Perkakas Klien ACME yang Anda gunakan, perkakas acme.sh secara baku tidak merotasi kunci pribadi, dengan kata lain tidak membuat kunci pribadi baru ketika memperbarui sertifikatnya, sehingga ia tetap menggunakan kunci yang ada sebelumnya.
Ketika Anda ingin menerbitkan sertifikatnya, Anda dapat menambahkan parameter
--always-force-new-domain-key
atau jika telanjur, Anda dapat menambahkanLe_ForceNewDomainKey=1
di dalam berkasdomain.com.conf
agar acme.sh selalu membuat kunci baru setiap pembaruan sertifikat
Tentu saja hal ini bukan berarti tanpa kekurangan, mengotomatiskan pembaruan sertifikat SSL itu merupakan tugas yang menantang.
Jika Anda adalah pengguna Netlify atau Bunny CDN, mungkin Anda dapat menyelesaikannya dengan mengikuti artikel ini, tapi ini akan menantang jika Anda tidak menggunakan keduanya atau apalagi jika Anda menggunakan perangkat yang berumur tua atau jadul, maka mengimplementasikan ini akan sangat sulit atau bahkan menjadi tidak mungkin.
Itupun belum sama kendala kebijakan organisasi/perusahaan, atau kendala yang nantinya dialami jika Anda berada di dalam DMZ (Singkatan dari: demilitarized zone, bahasa Indonesia: Zona demiliterisasi), sehingga mungkin tidak disarankan untuk menggunakan sertifikat SSL dengan masa berlaku yang pendek.
Kalau 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 menerbitkannya dalam bentuk Wildcard, namun mungkin Anda bisa menerbitkannya dalam bentuk multi-domain atau/dan multi-subdomain.
Pertanyaan ke-25: Apakah sertifikat SSL dari ZeroSSL (baik gratisan atau berbayarnya) 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 Layanannya, 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, jawabannya 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-26: Apa alasan kamu menggunakan ZeroSSL? Kenapa kamu gak pakai Let’s Encrypt aja? Padahal tampilan blog ini akan lebih baik apabila diakses dengan Peramban Web 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 sertifikatnya lebih baik dibandingkan lainnya.
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.
Membantu Let’s Encrypt
Alasan ini mungkin terlihat aneh, tapi saya jelaskan kenapa menggunakan alasan ini.
Let’s Encrypt itu merupakan organisasi nirlaba yang super sibuk, CA tersebut terkenal di mana-mana dan hampir semua penyedia Hosting/CDN menyediakan fitur pemasangan sertifikat SSL tersebut dari Panelnya, salah satunya adalah Netlify, Vercel, OnRender, GitHub Pages, GitLab Pages, Bunny CDN, Akamai, Cloudflare, bahkan di layanan Shared Hosting biasa pun mayoritasnya ada fitur tersebut.
Karena saya tidak bisa berdonasi dalam bentuk uang, sponsor atau dalam bentuk apapun itu, maka saya tidak lagi mengekslusifkan Let’s Encrypt untuk seluruh domain dan subdomain saya sebagai CA demi menghemat pengeluaran mereka serta memaksimalkan anggarannya.
Dengan memaksimalkan anggarannya, maka mereka bisa memfokuskan anggarannya untuk hal lain, seperti mengembangkan protokol ACME agar protokol tersebut bisa lebih baik lagi dari yang sekarang.
Lagipula, memiliki lebih dari 1 CA Gratisan yang menggunakan Protokol ACME itu merupakan hal yang sangat, sangat baik untuk ekosistem IKP dan penggunanya sama-sama diuntungkan di sini, karena ada pilihan lain.
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 mengotomasi pembaruan sertifikat SSL tersebut sendirian, dengan menggunakan acme.sh untuk mengelola sertifikatnya dan cURL untuk memasang sertifikatnya dengan memanfaatkan Server API dari Penyedia Web-nya.
Pada akhirnya, saya mendapatkan ilmu baru yang cukup berguna juga, setidaknya untuk saya sendiri.
Pertanyaan ke-27: Apa kekurangan ZeroSSL menurut Anda?
Jawab: Kekurangannya menurut saya adalah:
- Server ACME-nya yang kadang-kadang bermasalah. Jadi, Anda harus bersabar jika Anda mengalami masalah saat menerbitkan/memperbarui sertifikat SSL melalui server ACME-nya. Kalo gak mau sabar, ya berlangganan aja atau ganti dengan yang lain.
- Memiliki kelebihan di Pengelolaan Sertifikatnya, tapi tidak bisa mencabut atau menghapus sertifikat SSL yang diterbitkan melalui server ACME-nya.
Itu aja sih kekurangannya untuk saat ini, masalah sertifikat Akar yang berubah itu adalah masalah lain, karena yang kamu tanyakan adalah saat ini, bukan kedepannya.
Kalau sertifikat akarnya berubah, saya tinggal putuskan apakah CA tersebut perlu diganti atau tidaknya.
Pertanyaan ke-28: Saya memasang CAA Record pada DNS Domain saya, apa CAA yang harus saya isi biar supaya saya bisa menggunakan ZeroSSL?
Jawab: Anda bisa mengisinya dengan sectigo.com
. Kenapa? Karena pada dasarnya ia menggunakan sertifikat SSL dari Sectigo, sehingga ZeroSSL itu sebenarnya tidak ‘berdiri sendiri’, melainkan menjalin kerjasama dengan Sectigo.
Referensi lain di Artikel ini
Di bawah ini adalah referensi-referensi yang saya gunakan untuk Artikel ini yang sebelumnya tidak saya sebut/bahas.
Berikut adalah referensinya:
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:
Ngomong-ngomong, saya tanya di Tiket Dukungan itu karena saat artikel ini ditulis sampai pertama kali diterbitkan belum ada dokumentasi resmi yang menyatakan bahwa itu dikirimkan dalam bentuk Base64, kalau sekarang sih sudah ada.
- Untuk konversi ke dalam Base64, komentar-komentar di dalam jawaban dari “Steve Folly” di Super User sangat membantu saya.
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 datanya ke dalam Server dan hasilnya itulah yang dijadikan referensi.
Anda bisa lakukan itu sendiri dengan cara berikut:
- Tekan tombol
CTRL +SHIFT +I sebelum memasang sertifikat SSL di Netlify - Klik pada tab “Network”, nanti di situ akan tampil sebuah panel kosong dan hanya berpesan kalau kamu perlu menyegarkan (refresh) halamannya atau menekan tombol CTRL+R terlebih dahulu, tapi jangan Anda lakukan itu.
- Pasang sertifikat SSL kamu secara manual di Halaman Web-nya
- Jika kamu sudah selesai mengisi semua informasi yang diperlukan, klik pada button “Install certificate”
- Setelah kamu mengklik 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 Panelnya. - 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.
- Jika ketemu, seperti itulah data yang akan kamu kirimkan ke Netlify saat memasang sertifikat SSL kamu secara manual
- Tekan tombol
Untuk cara menghilangkan jeda barisnya (line break) dan menggantinya dengan karakter
\n
, saya pakai jawaban dari “Ed Morton” di Stack Overflow sebagai referensi, jawabannya dilisensikan di bawah CC BY-SA 4.0.
Referensi untuk lainnya
- Utas yang berjudul "How do I Crontab on Termux..” di Reddit sebagai referensi untuk menginstal 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 kuncinya (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)
|
|
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)
|
|
- Halaman "Making tar Archives More Portable" dari Proyek GNU
- Halaman Manual Perintah
tar
untuk macOS (yang entah apakah benar sesuai atau tidaknya untuk versi sekarang)
Penutup
Ya udah, segitu aja dulu artikel kali ini. Gimana? Pusing? Meriang? Ya makanya pelan-pelan bacanya, 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 menerbitkannya, karena artikel ini membahas banyak hal dan juga sedikit ‘riset’ agar artikel ini bisa diikuti oleh banyak perangkat, belum lagi sama kalimat-kalimatnya, itupun belum sama pengujiannya.
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 lainnya, bisa Anda berikan masukkan melalui kolom komentar yang tersedia. Masukkan dari Anda akan sangat berarti bagi saya dan artikel ini untuk kedepannya nanti.
Terima kasih atas perhatiannya 😊
Penggunaan Gambar dan Atribusi
Berkas-berkas Gambar (seperti Cuplikan layar dan Gambar lainnya) yang di gunakan di dalam artikel ini, disediakan di dalam Repository Blog ini.
Jika Anda ingin menjelajahinya, silahkan kunjungi Alamat URL berikut:
|
|
ZeroSSL dan logonya 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 Resminya dan di sana belum ada petunjuk penggunaan logonya.