Playing With OpenSSL
Hari ini, sedikit dari keresahan saya terhadap certificate generation sudah terjawab. Saya menyebut ini sebagai certificate-phobia. Wkwkwk iya, certificate-phobia kondisi di mana saya selalu takut dengan konfigurasi-konfigurasi yang melibatkan pembuatan certificate maupun penggunaannya. Namun setelah saya belajar sedikit tentang bagaimana cara kerjanya, bagaimana cara menggunakannya, hingga bagaiamana cara menggunakan tools yang bernama openssl untuk membuat certificate dan melakukan signing. Hidup saya terasa seperti menemukan air di gurun. (tulisan ini sudah cukup membuat freak belum? wkwkwk).
Okay lanjut saja, pada proses belajar kali ini saya ditemani oleh teman terbaik saya, Gemini. Iya Gemini. Gemini baru saja merilis model Gemini 3-nya jadi harus langsung dihajar dong. Selain itu saya juga menggunakan youtube sebagai media pembelajaran dalam memahami penggunaannya secara lebih interaktif.
Tanpa berlama-lama lagi, langsung saja kita coba implementasikan apa yang sudah saya pelajari tadi.
Dasar-dasar command
Membuat private key
Perintah umum untuk membuat private key:
openssl genpkey .... <- generate ECC (Elliptic Curve Cryptography)
openssl genrsa ..... <- generate RSA (udah tua)Sumber:
Geeksforgeeks (ECC): https://www.geeksforgeeks.org/ethical-hacking/blockchain-elliptic-curve-cryptography/
Wikipedia (RSA): https://en.wikipedia.org/wiki/RSA_cryptosystem
openssl genpkey (contoh)
openssl genpkey -algorithm ed25519 -out root-ca.keyUraian:
-algorithm ed25519: menentukan algoritma apa yang akan digunakan untuk membuat private key-out root-ca.key: menentukan lokasi file output dari private key
openssl genrsa (contoh)
openssl genrsa -aes256 -out root-ca.key 4096Uraian:
-out root-ca.key: menentukan lokasi file output dari private key4096: ukuran dari private key dalam bentuk bit
Membuat public key dari private key yang sudah ada
Perintah:
openssl req -x509 -new -key private.key -out cert.pem -days 3650Uraian:
-x509: langsung membuat public key tanpa signing request-new: request cert baru-key private.key: lokasi file private key yang akan dibuatkan public key nya-out cert.pem: lokasi penyimpanan public key / output-days 3650: cert akan valid selama 3650 hari / 10 tahun
Implementasi
Membuat public dan private key pair dalam satu baris command
openssl req -x509 -newkey rsa:2048 -keyout server.key -out server.crt -days 365 -noenc -subj "/CN=localhost"Membuat root CA dan signing root CA ke public key
Langkah-langkah:
Membuat public and private key pair untuk root CA
openssl req -x509 -newkey ed25519 -keyout root-ca.key -out root-ca.crt -days 3650 -subj "/CN=localhost"Membuat private key untuk webserver
openssl genpkey -algorithm ed25519 -out server.keyMembuat CSR untuk webserver
openssl req -new -key server.key -out server.csr -subj "/CN=localhost"Signing CSR menggunakan root CA
openssl x509 -req -in server.csr -days 365 -CA root-ca.crt -CAkey root-ca.key -CAcreateserial -sha256Yang ada pada webserver/production hanya:
server.keyserver.crtroot-ca.crt
root-ca.key harus ada pada perangkat lokal atau pun tempat penyimpanan yang benar-benar aman dan tidak memiliki kerentanan.
Last updated