Kadang ada situasi di mana klien atau tim akan melakukan renewal untuk SSL, namun dengan persyaratan khusus. Yaitu menggunakan private key yang sudah ada atau private key-nya tidak berubah.
Biasanya, saat kita membuat CSR (Certificate Signing Request) baru untuk pembuatan atau perpanjangan SSL, file private key baru juga akan dibuat. Namun ada beberapa kondisi tertentu seperti kebijakan keamanan spesifik (misalnya key pinning pada aplikasi spesifik yang “mengunci” key agar tidak berubah) yang mengharuskan penggunaan private key yang sudah ada.
Kali ini saya akan mencoba sharing bagaimana cara untuk melakukan hal tersebut dengan menggunakan OpenSSL di Linux.
Persiapan File Konfigurasi
Kita akan buat satu file konfigurasi (beri nama, misalnya openssl.conf). File ini merupakan konfigurasi atau template yang berisi informasi identitas perusahaan. Saat membuat CSR, OpenSSL perlu mengetahui beberapa detail seperti nama negara, nama perusahaan, dan nama domain.
Berikut ini contoh isi dari file tersebut:
[ req ]
default_bits = 2048
distinguished_name = req_distinguished_name
[ req_distinguished_name ]
countryName_default = ID
stateOrProvinceName_default = Jawa Barat
localityName_default = Bekasi
organizationName_default = PT Nama Perusahaan
organizationalUnitName_default = IT Dept.
commonName = Common Name (misal: *.domainanda.com)
Proses Generate CSR Menggunakan Existing Key
openssl req -new \
-key commercial.key \
-out renewal_domain.csr \
-config openssl.conf
new: Membuat request sertifikat baru.key: Menggunakan private key yang sudah ada.config: Mengambil data identitas dari file konfigurasi (misalnyaopenssl.conf)
Verifikasi CSR dan Key
Tahapan ini dilakukan untuk memastikan CSR yang dibuat cocok atau match dengan private key yang dimaksud. Kita akan mengecek nilai modulus-nya menggunakan MD5 Hash.
# Cek Private Key
openssl rsa -noout -modulus -in commercial.key | openssl md5
# Cek CSR Baru
openssl req -noout -modulus -in renewal_domain.csr | openssl md5
Hasilnya harus identik/sama. Apabila hasilnya (nilai hash) berbeda, sertifikat SSL yang akan diterbitkan nantinya tidak akan bisa dipasang.
Cek Detail CSR
Gunakan perintah berikut untuk memastikan informasi pada CSR sudah sesuai.
openssl req -text -noout -in renewal_domain.csr | grep "Subject:"
Penutup
Menggunakan file private key tertentu/spesifik pada saat perpanjangan SSL merupakan salah satu skenario yang mungkin terjadi. Apabila skenario ini perlu dilakukan, “kunci”-nya adalah informasi pada file konfigurasi (seperti openssl.conf) yang sesuai dan verifikasi modulus untuk memastikan tidak ada error/mismatch antara CSR yang dibuat dengan private key-nya. Untuk tulisan kali ini sampai di sini dulu ya. Sampai jumpa. Bye.