Import Certificates pada EJBCA 6.10.1.2

Okay, pada postingan kali ini saya akan coba membahas soal Import Certificates dalam EJBCA. Kalau pada postingan sebelumnya saya sudah membahas soal Import CA dan juga Import Certificate Profiles, nah kali ini yang akan dibahas adalah cara mengimport sertifikat dari End Entity-nya. Apakah EJBCA mendukung fitur tersebut? Tentu saja.

Salah satu kegunaan Import Certificates adalah untuk migrasi data. Ada 2 cara untuk melakukan Import Certificates, yang pertama adalah dengan cara satuan dan yang kedua adalah secara bersamaan.

Import Single Certificate (satuan)

Perintah yang digunakan untuk import certificates secara satuan adalah:

  • Mandatori
bin/ejbca.sh ca importcert --username <username> --password <password> --caname <nama CA> -a <status> -f <file certificate>
  • Versi lengkap (ada tambahan parameter opsional)
bin/ejbca.sh ca importcert <username> <password> <Nama CA> <status> --email <email> <File Certificate> \[--eeprofile <End Entity Profile>\] \[--certprofile <Certificate Profile>\] \[--revocation-reason <Alasan Revoke>\] \[--revocation-time <Waktu revoke>\]

Berikut ini penjelasan mengenai beberapa parameter yang ada pada perintah di atas:

  1. Username
    Username dari entitas akhir yang merupakan pemilik dari sertifikat. Jika entitas akhir tersebut belum ada, maka sertifikatnya akan dibuat secara otomatis. Jika entitas akhirnya sudah ada, sertifikat yang diimport akan berasosiasi dengan yang sudah ada, dan properti-properti yang ada (subject, subject alternative names) akan di-update.
  2. Password
    Password yang akan diatur untuk entitas akhir ini. (Pada versi GUI, bagian ini biasa disebut dengan enrollment code)
  3. Nama CA
    Nama dari CA yang sudah mengeluarkan sertifikat.  Signature dari CA yang mengeluarkan sertifikat ini akan diverifikasi dengan CA yang ada. Jika signaturenya tidak cocok, sertifikat tidak akan diimport. CA Certificate harus ada di dalam database (Paling tidak statusnya sebagai external CA) 
  4. StatuscEmail
  5. Email dari si entitas akhir. Jika email ini isinya string null, maka akan diambil dari email yang ada di dalam sertifikat.
  6. File Certificate
    File Encoded PEM (BASE 64) dari entitas akhir (file PEM-nya).
  7. End Entity Profile
    End Entity Profile yang ada di sini adalah End Entity Profile untuk sertifikat yang akan diimport, buka End Entity Profile dari CA dimana entitas akhir itu diekspor. Setiap atribut dari certificate yang akan diimport akan diverifikasi oleh End Entity Profile Existing. Jika ada atribut yang tidak terseda pada End Entity Profile, maka sertifikat tidak akan bisa diimport. Jika End Entity Profile tidak ditulis pada proses impor, maka End Entity Profile EMPTY (bawaan EJBCA) yang akan digunakan.
  8. Certificate Profile
    Mirip seperti End Entity Profile, hanya saja profil di sini adalah untuk CA. Sekali sertifikat berhasil diimport, sertifikat tersebut akan ditandai sebagai milik dari Certificate Profile yang sudah ditetapkan. Jika tidak disertakan dalam perintah, maka Certificate Profile yang akan dipilih adalah ENDUSER (bawaan EJBCA).
  9. Alasan Revoke
    Parameter ini ada untuk mengizinkan sertifikat yang sudah di-REVOKED tetap bisa diimport (dengan alasan pencabutannya). Gunakan perintah –help untuk melihat list alasan yang bisa digunakan. Jika tidak disertakan pada perintah di atas, UNSPECIFIED akan ditetapkan sebagai alasannya.
  10. Waktu Revoke
    Untuk mengizinkan sertifikat yang sudah di-REVOKED agar tetap bisa diimport dengan waktu pencabutan yang spesifik (format yyyy.MM.dd-HH:mm). Jika tidak disertakan, maka waktu sekaranglah yang akan digunakan.

 Langsung saja saya berikan contoh dari penggunaan command importcert.

sh bin/ejbca.sh ca importcert t.mac hou1 CA ACTIVE --email t.mac@gmail.com /home/jboss/shell/Tracy\ McGrady.pem --eeprofile Person --certprofile tutorial

Pada perintah di atas, saya mencoba untuk mengimport sertifikat bernama Tracy Mcgrady.pem dengan detil:

  • Username = t.mac
  • Password = hou1
  • Nama CA = CA
  • Status = Active
  • Email = t.mac@gmail.com
  • File Certificate = /home/jboss/shell/Tracy\ McGrady.pem
  • End Entity Profile = Person
  • Certificate Profile = tutorial
End Entity t.mac belum ada
Proses Impor yang gagal sebab ada atribut pada End Entity Profile Tutorial yang belum terpenuhi
Setelah End Entity Profile diganti menjadi Person dan semua syarat atributnya terpenuhi, proses import pun berhasil
Bukti kalau sertifikat milik t.mac berhasil diimport

Catatan:

  • Jika menjalankan perintah (command) di atas tanpa ada parameter apapun, maka panduan penggunaan perintah tersebutlah yang akan muncul (lengkap dengan parameternya seperti caname, status, endentityprofile dan certificateprofile).
  • Pastikan kalau Signature CA dari Cert yang akan kita impor itu sama, kalau tidak maka proses impor akan gagal.
  • Pastikan nama Profile sudah benar dan atribut-atribut yang ada di dalam profile tersebut sudah terpenuhi semua syaratnya. Jika belum sama dan terpenuhi, maka proses impor akan gagal.

Baca juga: Instalasi EJBCA 6.10.1.2 dengan HSM Luna 7 pada CentOS 7 

Import Certificates in Bulk (Bersamaan)

Untuk mengimport banyak sertifikat secara bersamaan, jalankan perintah berikut:

  • Mandatory
bin/ejbca.sh ca importcertdir --filter <filter> --caname <Nama CA> -a <status> --dir <lokasi sertifikat> --eeprofile <End Entity Profile> --certprofile <Certificate Profile>
  • Versi Lengkap (ada tambahan parameter opsional)
bin/ejbca.sh ca importcertdir <username-source> <Nama CA> <status> <lokasi sertifikat> --eeprofile <End Entity Profile> --certprofile <Certificate Profile> \[-resumeonerror\] \[--revocation-reason <Alasan Revoke>\] \[--revocation-time <Waktu Revoke>\]

Berikut ini penjelasan mengenai beberapa parameter yang ada pada perintah di atas:

  1. username-source atau filter
    Parameter ini digunakan untuk memperoleh username dari entitas akhir yang akan memiliki sertifikat tersebut. Karena kita akan mengimpor banyak sertifikat sekaligus, maka tidak mungkin menentukan username-nya satu per satu. Untuk itulah digunakan parameter ini. Nilai yang tersedia untuk parameter ini adalah FILE, DN, CN.
    Jika CN yang dipilih, username akan sama dengan atribut common name  yang ada di subjek sertifikat.
    Jika DN yan dipilih, username akan sama dengan seluruh distinguished name (subjek) yang ada pada sertifikat.
    Jika FILE yang dipilih, username akan sama dengan dengan nama file dari sertifikat.
    Jika CN yang dipilih namun CN tidak ada dalam subjek sertifikat, proses impor akan kembali ke belakang dan menggantinya dengan DN. Jika DN juga tidak tersedia, username akan diambil dari nama file.
    Jika DN yang langsung dipilih namun DN tidak ada dalam subjek sertifikat, proses impor akan mundur dan menggantinya dengan nama FILE.
  2. Nama CA
    Nama dari CA yang sudah mengeluarkan sertifikat.  Signature dari CA yang mengeluarkan sertifikat ini akan diverifikasi dengan CA yang ada. Jika signaturenya tidak cocok, sertifikat tidak akan diimport. CA Certificate harus ada di dalam database (Paling tidak statusnya sebagai external CA) 
  3. Status
    Nama dari CA yang sudah mengeluarkan sertifikat.  Signature dari CA yang mengeluarkan sertifikat ini akan diverifikasi dengan CA yang ada. Jika signaturenya tidak cocok, sertifikat tidak akan diimport. CA Certificate harus ada di dalam database (Paling tidak statusnya sebagai external CA) 
  4. Lokasi Sertifikat
    Path dari lokasi folder yang berisi file-file sertifikat yang ingin diimport. Setiap filenya harus berisi single certificate. Folder tidak boleh berisi subfolder atau file yang bukan sertifikat.
  5. End Entity Profile
    End Entity Profile yang ada di sini adalah End Entity Profile untuk sertifikat yang akan diimport, buka End Entity Profile dari CA dimana entitas akhir itu diekspor. Setiap atribut dari certificate yang akan diimport akan diverifikasi oleh End Entity Profile Existing. Jika ada yang subjek pada sertifikat yang tidak cocok, maka file tersebut tidak akan diimpor.
  6. Certificate Profile
    Mirip seperti End Entity Profile, hanya saja profil di sini adalah untuk CA. Sekali sertifikat berhasil diimport, sertifikat tersebut akan ditandai sebagai milik dari Certificate Profile yang sudah ditetapkan.
  7. Resumeonerror
    Opsi ini bisa digunakan untuk memaksa proses impor tetap dapat terus berjalan meskipun ada error serius yang terjadi. Secara default, opsi ini tidak diaktifkan. Error yang ditangani oleh opsi ini beberapa diantaranya adalah pelanggaran pada End Entity Profile, masalah dengan parsing sertifikat, dll.
  8. Alasan Revoke
    Parameter ini ada untuk mengizinkan sertifikat yang sudah di-REVOKED tetap bisa diimport (dengan alasan pencabutannya). Gunakan perintah –help untuk melihat list alasan yang bisa digunakan. Jika tidak disertakan pada perintah di atas, UNSPECIFIED akan ditetapkan sebagai alasannya.
  9. Waktu Revoke
    Untuk mengizinkan sertifikat yang sudah di-REVOKED agar tetap bisa diimport dengan waktu pencabutan yang spesifik (format yyyy.MM.dd-HH:mm). Jika tidak disertakan, maka waktu sekaranglah yang akan digunakan.

Langsung saja saya berikan contoh dari penggunaan command importcertdir.

sh bin/ejbca.sh ca importcertdir --filter FILE --caname CA -a ACTIVE --dir /home/jboss/cert --eeprofile Person --certprofile tutorial

Pada perintah di atas, saya mencoba untuk mengimport 4 sertifikat (s.curry.pem, k.bryant.pem, d.wade.pem, Tracy McGrady.pem) dari folder /home/jboss/cert dengan detil:

  • filter = FILE
  • Nama CA = CA
  • Status = ACTIVE
  • Lokasi Sertifikat = /home/jboss/cert
  • End Entity Profile = Person
  • Certificate Profile = tutorial
Hanya sertifikat Tracy McGrady yang sudah ada
Proses Impor berhasil. 3 file sertifikat dalam folder cert berhsil diimpor sedangkan 1 nya lagi tidak diimpor (skip) karena sudah ada.
Contoh Impor bersamaan yang gagal.
Kegagalan terjadi karena terdapat perbedaan signature antara CA dimana file yang akan diimpor dengan CA yang mengeluarkan cert tersebut
Contoh error lainnya dimana kegagaln terjadi karena typo pada cert profile yang mengakibatkan tidak ditemukannya cert profile tersebut
Bukti kalau sertifikat-sertifikat tadi berhasil diimpor secara bersamaan

Catatan:

  • Entitas akhir akan langsung terimpor apabila memang entitas tersebut belum ada. Jika Entitas akhir sudah ada, sertifikat yang diimport akan berasosiasi dengannya dan properties-nya akan diupdate.
  • Jika menjalankan perintah (command) di atas tanpa ada parameter apapun, maka panduan penggunaan perintah tersebutlah yang akan muncul (lengkap dengan parameternya seperti username-source, status, endentityprofile dan certificateprofile)
  • Sertifikat yang sudah ada di dalam database akan di-skip selama proses import. 
  • Sertifikat yang CA-nya berbeda dari yang dispesifikasikan akan di-skip juga.
  • Ketidaksesuaian lainnya seperti invalid format, adanya subdirectory, subjek yang tiak sesuai, akan menghentikan proses impor kecuali perintah –resumeonerror dimasukkan.
  • Sertifikat yang sudah diimpor sebelum terjadinya ketidaksesuaian pada file berikutnya akan tetap tersimpan pada database. 

Baca juga: Cara Mengelola CA pada EJBCA 6.10.1.2

  • Untuk setiap sertifikat yang di-skip, hasil keluaran akan menyebutkan serial number dan nama file-nya. Informasi file yang error pun akan ditampilkan juga.
  • Saat proses impor sudah selesai, rangkuman singkat mengenai sertifikat yang berhasil diimpor, sertifikat yang sudah ada (redundant), dan sertifikat yang ditolak (yang tidak di sign oleh CA yang diminta) akan muncul.
  • Tidak akan ada rangkuman yang akan ditampilkan jika abnormal error terjadi (seperti apapun kecuali yang sudah disebutkan di atas), kecuali kalian menyertakan paramete -resumeonerror
  • Jika menggunakan -resumeonerror, import file akan berlanjut sampai semua file sertifikat dari dalam direktori diproses. Pesan error akan ditampilkan dan rangkuman akan berisi informasi tambahan seperti:
    • Jumlah sertifikat yang tidak bisa dibaca (karena salah format atau bentuknya dalam direktori lagi)
    • Jumlah sertifikat yang subjek end entity profilenya tidak sesuai (salah nilai untuk non-modifiable, dll)
    • Jumlah sertifikat yang tidak bisa dibaca karena error lainnya.

Ya, itu tadi sedikit informasi mengenai cara melakukan import certificates pada EJBCA 6.10.1.2. Semoga informasi mengenai import certificates tadi bisa bermanfaat buat kalian ya.

Sampai jumpa di postingan selanjutnya 🙂

Sumber: EJBCA Docs

Facebook Comments Box