AWS Certificate Manager (ACM) adalah layanan dari Amazon Web Services (AWS) yang memudahkan kita untuk menyediakan (provision), mengelola, dan menggunakan sertifikat SSL/TLS (Secure Sockets Layer/Transport Layer Security), baik publik maupun privat, untuk digunakan dengan layanan AWS ataupun sumber daya internal kita.
Sumber daya internal yang saya maksud disini adalah misalnya kita ingin menggunakan sertifikat aws untuk domain di server kita sendiri. Entah itu sharedhosting, vps atau dedicated server. Nah pada kesempatan kali ini saya akan menulis tentang cara decrypt private key aws dengan openssl.
Mengapa perlu di decrypt?
ACM tidak secara otomatis mendekripsi (decrypt) kunci privat saat kita mengekspor sertifikat. Sebaliknya, ACM meminta kita untuk menyediakan passphrase (kata sandi) saat mengekspor sertifikat.
Tujuan dari passphrase ini adalah untuk mengenkripsi kunci privat yang diekspor, bukan untuk mendekripsinya. Kunci privat ini pada dasarnya selalu dienkripsi saat disimpan oleh ACM. Sebagai contoh kamu bisa lihat gambar di bawah ini, ketika saya ingin mengexport certificate yang sudah saya buat

Kunci privat adalah bagian paling sensitif dari sertifikat SSL/TLS, dan harus dilindungi dengan ketat. Inilah alasannya AWS meng-encrypt certificate sebelum mengexport:
- Perlindungan Kunci Privat
- Portabilitas dan Kompatibilitas
- Keamanan Zero-Trust
AWS mempraktikkan keamanan yang ketat. Kunci privat kita selalu berada dalam perlindungan enkripsi KMS selama berada di dalam ACM. Ketika kita mengekspornya, ACM menyerahkan tanggung jawab perlindungan kepada kita, melalui passphrase (kata sandi) yang kita tentukan/buat sendiri.
Export certificate
Sebelum melakukan decrypt dan menginstal SSL certificate aws di domain kita, tentu saja kita harus mengexport certificate yang sudah terenkripsi. Bagaimana caranya? kamu cukup masuk ke AWS Certificate Manager, pilih certificate yang sudah kamu buat lalu klik export

Lalu masukkan Encryption details yang terdiri dari Enter a passphrase & Confirm passphrase, masukkan kata sandi yang mudah untuk kamu ingat, jangan lupa dicatat agar tidak lupa, setelah itu klik Generate PEM Encoding

Lalu download Private_key.text, Certificate.txt & Certificate_chain.txt

Jika kamu sudah berhasil mendownload kode certificate, sekarang kamu sudah bisa mendecrypt private_key nya agar nantinya bisa digunakan pada domain.
Decrypt private key dengan OpenSSL
Bukalah file private_key.txt sudah sudah kamu download tadi, lalu copy semua kode yang berada di dalam file private_key.txt

Masuk ke terminal linux kamu, disini kamu bebas menggunakan linux apapun, kamu bisa pakai SSH di VPS server kamu, ataupun OS kamu sendiri, disini saya pakai OS saya sendiri saja untuk decrypt, tentukan di folder mana kamu mau menyimpan private-key nya. Disini saya simpan di folder Downloads saja biar ngga ribet, dan saya berikan nama keynya aws.key
Silahkan gunakan perintah di bawah untuk membuat file aws.key sekalian menyimpan file kode private key yang belum di decrypt
nano aws.keyContoh lihat gambar di bawah

Lalu masukkan kode private key dan simpan dengan menekan CTRL + X

Setelah itu jalankan perintah di bawah ini
openssl rsa -in aws.key -out awsdecrypt.keyaws.key adalah key yang barusan kita buat, dan awsdecrypt.key adalah hasil decrypt nya nanti

Lalu masukkan password untuk decrypt, password ini adalah password yang sudah kita buat tadi ketika export certificate di aws

Jika kamu melihat pesan Writing RSA key berarti kamu sudah berhasil mendecrypt private key nya

Sekarang jika kamu buka folder downloads maka akan ada file baru bernama awsdecrypt.key, nah kode di dalam file ini nantilah yang akan kamu gunakan untuk instalasi SSL di server kamu.
Penutup
Dengan mengikuti langkah-langkah di atas menggunakan yaitu menggunakan OpenSSL di sistem operasi linux untuk decrypt private key dari aws, kini kamu telah berhasil mendekripsi Private Key AWS Certificate Manager (ACM).
Proses dekripsi ini sangat penting untuk memastikan kunci privat kita siap digunakan pada lingkungan non-AWS, seperti server web on-premises (Nginx, Apache) atau load balancer pihak ketiga yang tidak mendukung pemuatan kunci yang dilindungi passphrase.
Perlu ditekankan kembali: Kunci privat yang baru saja Anda buat tidak lagi dilindungi passphrase.
- Batasi Akses: Pastikan file kunci yang didekripsi (server_decrypted.key) memiliki izin akses yang sangat ketat (hanya dapat dibaca oleh pengguna yang berwenang, seperti root atau pengguna server web).
- Hapus Kunci Lama: Setelah kunci baru berhasil diimplementasikan dan diverifikasi berfungsi, pertimbangkan untuk menghapus kunci terenkripsi yang lama dari sistem lokal Anda, atau simpan di lokasi yang sangat aman.
Apakah kamu menemukan tantangan saat mengimpor kunci yang telah didekripsi ke server web Anda, atau apakah Anda ingin mengetahui cara mengautomasi proses perpanjangan sertifikat tanpa perlu dekripsi manual? Berikan komentar di bawah, dan mari kita diskusikan lebih lanjut, see you!