Performa – EJBCA digunakan untuk mengeluarkan milyaran sertifikat dengan beban transaksi yang sangat tinggi (ratusan sertifikat per detik). Seperti halnya dalam sistem yang berskala besar, kalian harus bisa menciptakan solusi, baik dari segi desain ataupun infrastruktur, untuk bisa mengangani transaksi yang tinggi tersebut. Untuk sistem yang lebih kecil, desain dan infrastruktur pasti lebih mudah. Tapi untuk yang skalanya besar, ada banyak hal yang harus dipertimbangkan, dan pastinya banyak keahlian yang diperlukan.
Tips Umum Meningkatkan Performa
Umumnya dalam PKI (Public Key Infrastructure), performa yang tinggi atau ekstrim bukanlah suatu masalah. Sebuah instalansi standar dari EJBCA bisa mengeluarkan sepersepuluh, bahkan hingga ratusan sertifikat per detik, yang lebih dari cukup untuk sebuah instalasi besar. Untuk OCSP, hal ini lebih penting lagi, tapi untungnya OCSP juga lebih ringan. Jadi pada instalasi standar, OCSP mampu menangani ratusan permintaan per detiknya.
Namun dalam instalasi PKI yang memiliki kebutuhan khusus (yang mungkin mengeluarkan ribuan sertifikat per detiknya), perlu ada konfigurasi yang dimaksimalisasi agar bisa melakukan hal tersebut (tergantung dari hardware juga) dan diantaranya adalah:
- Menonaktifkan logging ke dalam database pada cesecore.properties. Hanya gunakan Log4jLogDevice. Hal tersebut akan menghilangkan proses insert ke dalam database dan akan menaikkan performa.
- Konfigur Log4j ke Log only, bukan console dan gunakan hanya Info atau Error logging, bukan debug. Hal ini bisa menaikkan performa sedikit.
- Non aktifkan penggunaan CertReqHistory pada konfigurasi CA (Lihat bagian Use Certificate Request History). Hal ini akan menghilangkan proses insert dan menaikkan performa. *Default Setting untuk konfigurasi ini memang non aktif.
- Non aktifkan finishUser pada konfigurasi CA. Namun sebelumnya pastikan kalian sudah membaca dokumentasi untuk fitur ini. Hal ini dapat mengamankan proses read dan update pada database.
- Aktifkan semua cache pada cache.properties. Untuk melakukan clear cache, kalian bisa menggunakan perintah CLI ‘bin/ejbca.sh clearcache’ (khususnya pada saat ada perubahan konfigurasi). Hal ini bisa memberikan sedikit peningkatan pada performa.
- Jangan memaksa menggunakan Enforce pada konfigurasi CA (keys, DN, SubjectDN SerialNumber). Hal ini guna membuat tidak ada lagi ekstra select yang dibuat dan memberikan sedikit peningkatan.
- Minimalisasi penggunaan index dalam database, hanya gunakan untuk field yang memang benar-benar diperlukan. Hal ini membuat proses insert ke dalam database sedikit lebih cepat dan bisa memberikan tambahan performa 10%.
- Gunakan native Jboss connectors untuk http dan https. Ini bisa menaikkan performa 10%.
- Jika kalian punya banyak sertifikat (Lebih dari 100 juta), mungkin lebih baik bila memisahkan table sertifikat yang ter-encode dalam storage. Untuk melakukan hal tersebut, lihat bagian database.useSeparateCertificateTable pada ./conf/database.properties.sample.
Throw Away CA
EJBCA dapat dikonfigurasi untuk berfungsi sebagai Throw Away CA. Dalam mode ini, EJBCA berfungsi sebagai high speed certificate factory. Maksudnya apa? Maksudnya adalah EJBCA ini hanya menerbitkan sertifikat, tapi tidak menyimpan jejaknya dalam database lokal.
Menggunakan EJBCA dalam mode Throw Away CA membuatnya memiliki keterbatasan fungsi, diantaranya:
- Kalian tidak bisa melakukan pencarian atas sertifikat yang sudah dikeluarkan.
- Kalian tidak bisa mengaktifkan beberapa limitasi seperti Enforce Unique DN atau Enforce Unique Public Keys
- Kalian bisa me-revoke sertifikat. Namun hal tersebut membutuhkan konfigurasi CA yang spesifik dan data sertifkat yang akan bertahan pun sangat terbatas. Untuk informasi lebih lanjut, lihat bagian Accept Revocations for Non-Existing Entries DI SINI.
Jika pembatasan-pembatasan tadi dapat diterima, kalian bisa mendapatkan beberapa keuntungan dari Throw Away CA, yaitu:
- Performa yang maksimal sebab tidak ada query database yang dilakukan. Aktifkan maksimum caching dan EJBCA tidak akan melakukan panggilan ke dalam database.
- Persyaratan penyimpanan yang minimum. Karena tidak ada sertifikat yang akan disimpan di dalam database, hanya konfigurasi EJBCA yang disimpan di dalam database.
Membatasi Ukuran Query Database
Jenis pencarian tertentu, baik disengaja atau tidak, menghasilkan hasil yang besar. Untuk tidak menghambat database, EJBCA memiliki nilai maksium 500 untuk tabel tertentu, yang akan mempengaruhi data set berikut:
- Sertifikat
- Entitas Akhir
- Username pada Hard Token
Kalian bisa mengganti query limit pada system configuration. Untuk keamanan, batas atasnya adalah 25000 entri.
Membatasi Waktu Timeout Query Database
Jenis pencarian tertentu, baik secara sengaja ataupun tidak, dapat menghasilkan query yang berat. Untuk tidak memberikan beban yang terlalu berat, EJBCA akan mencoba untuk membatasi berapa lama query dapat dilakukan sebelum akhirnya dibatalkan. Agar pembatasan tersebut dapat bekerja, baik database dan Java DataBase Connector (JDBC) harus mendukung ini. Pengaturan ini akan mempengaruhi beberapa pencarian berikut:
- RA GUI Search untuk entitas akhir
- RA GUI Search untuk sertifikat
Kalian dapat menurunkan atau menaikkan nilai default dari query timeout yang bernilai 10 detik pada System Configuration. Memberikan nilai 0 berarti EJBCA tidak akan memaksakan query timeout dan mengacu pada application server dan konfigurasi database.

Comments are closed.