Dulu saya berpikir kalau ingin mengintegrasikan Luna Network HSM 7.0 dengan EJBCA haruslah ketika instalasi EJBCA itu sedang dilakukan. Ternyata dugaan saya selama ini salah. Rupanya integrasi antara Luna Network HSM 7.0 dengan EJBCA bisa dilakukan ketika EJBCA sudah selesai instalasi dan berjalan.
Dan berikut ini adalah cara mengintegrasikan Luna Network HSM 7.0 dengan EJBCA yang sedang berjalan. (Untuk integrasi Luna Network HSM 7.0 dengan EJBCA saat awal instalasi, bisa kalian baca DI SINI)
Alat dan Bahan
- SafeNet Luna Remote PED
- CentOS 7 dengan EJBCA 6.10.1.2 yang sedang berjalan di atasnya (JAVA 7).
- PC Windows yang akan digunakan sebagai PEDServer
- Luna Network HSM 7.0
- Software Client & SDK Safenet HSM v7.0.0 for windows → Download DI SINI
IP Server
- CentOS 7 = 192.168.1.2
- Luna Network HSM = 192.168.1.3
- Windows Client = 192.168.1.4
Tahap 1
- Arahkan pandangan pada PC Windows milik kalian yang selanjutnya akan digunakan sebagai PEDServer.
- Install software client & SDK Safenet HSM v7.0.0 for windows pada PC tersebut. Link bisa kalian lihat di atas.
- Sebelumnya, kalian juga harus mengaktifkan fungsi remote pada SafeNet Luna Remote PED agar PED bisa dikendalikan secara remote alias tidak harus tertancap langsung ke HSM. Caranya bisa kalian lihat DI SINI
- Hubungkan SafeNet Luna Remote PED dengan PC Windows kalian.
- Buka CMD as an Administrator dan jalankan perintah berikut:
cd C:/Program Files/Safenet/LunaClient pedserver mode start -ip <ip_windows_PEDServer>

start PED server - Pastikan hasilnya sukses seperti gambar di atas ya. Kalau gagal bisa jalankan pedserver mode stop terlebih dahulu, baru di start lagi kemudian. Jika sudah, jalankan perintah:
pedserver mode show
pedserver mode show
Tahap 2
- Sekarang alihkan pandangan kalian ke HSM Luna. Akses HSM tersebut via ssh dan jalankan perintah berikut:
service restart cbs hsm ped connect -ip <ip_PEDServer> -port <port_Untuk_terhubung_ke_PEDServer>

hsm ped connect - Perintah ini bertujuan untuk menghubungkan HSM Luna 7 dengan Remote PED via PEDServer. Saat menjalankan perintah hsm ped connect, kalian akan diminta untuk memasukkan orange token. Silakan tancapkan orange token ke dalam Remote PED yang sudah terhubung ke PEDServer dan masukkan PIN sesuai dengan yang sudah kalian daftarkan. Pastikan hasilnya adalah sukses
- Jika sudah sukses, sekarang kalian akan mengujinya dengan perintah berikut:
hsm login
hsm login - Bila terhubung dengan baik, maka Remote PED akan meminta untuk dimasukkan blue token ketika perintah hsm login dieksekusi. Silakan tancapkan blue token (SO-Security Officer) ke dalam Remote PED dan masukkan PIN sesuai dengan yang kalian daftarkan saat melakukan hsm init. Pastikan hasilnya sukses ya
- Selanjutnya, kalian akan mencoba untuk membuat partisi di dalam HSM. Mari kalian buat dengan nama CA. Cara membuatnya adalah dengan menjalankan perintah berikut:
partition create -partition <nama_partisi>
partition create 
Partisi CA berhasil dibuat
Tahap 3
- Sekarang kembali lagi ke PEDServer. Jalankan perintah berikut di cmd:
lunacm - Jika sudah masuk ke lunacm, jalankan perintah berikut:
clientconfig deploy -server <ip_HSM> -client <ip_PEDServer> -partition <nama_partisi>
cleint config - Perintah di atas bertujuan mendaftarkan client (PEDServer) ke server (HSM), lebih tepatnya ke partisi dan slot pada HSM tersebut. Pada perintah lunacm pertama, bisa dilihat kalau client belum terhubung ke HSM. Namun setelah perintah clientconfig dijalankan, muncul partisi yang sudah dibuat lewat HSM Server sebelumnya. Untuk mencocokkannya, lihat saja Serial Number-nya, pasti sama.
Admin role user’s password yang dimaksud adalah password dari user admin di HSM (yang kalian gunakan untuk masuk via ssh). - Masih di lunacm, selanjutnya jalankan perintah:
ped connect -ip <ip_PEDServer> -port <port_untuk_terhubung_ke_PEDServer> ped get par init -label <nama_label>

Memberi label pada partisi yang sudah dibuat - Perintah ped connect diperlukan untuk memastikan kalau memang terhubung dengan PEDServer lewat port yang sudah ditetapkan.
- Perintah ped get bertujuan untuk mengetahui slot yang terhubung dengan Remote PED.
- Perintah par init bertujuan untuk memberikan label pada partisi tersebut. Meskipun tadi partisinya sudah dibuat, tapi labelnya belum ada (perhatikan gambar pada tahap 3 nomor 2). Ketika sudah mengeksekusi perintah par init ini, jalankan perintah partition show untuk melihat perubahan yang terjadi (penambahan label).
- Selanjutnya, jalankan perintah berikut untuk menuju ke tahap selanjutnya:
ped connect -ip <IP_PEDServer> -port <port_untuk_terhubung_ke_PEDServer> role login -name Partition SO role login -name Crypto Officer

assign role - Perintah ped connect sekali lagi untuk memastikan hubungan antara HSM dengan PEDServer.
- Perintah role login -name adalah perintah untuk masuk ke dalam partisi sebagai suatu peran, dalam hal ini Partition Security Officer alias Partition SO. Jadi untuk masuk ke dalam partisi, dibutuhkan izin dari Partition SO ini sebagai pengaman terdepan. Kalian akan diminta untuk memasukkan blue token ke dalam Remote PED untuk melakukan login Partition SO ini dengan memasukkan PIN. Pastikan kalian memasukannya dengan benar ya.
- Perintah role init -name adalah perintah untuk mendaftarkan peran baru, dalam hal ini adalah Crypto Officer. Crypto Officer merupakan orang-orang yang memiliki peran untuk me-manage key dalam partisi dan melakukan hal yang berhubungan dengan cryptographic operation. Jumlahnya bisa lebih dari 1. Saat inisialisasi, kalian akan diminta untuk memasukkan black token dan menentukan M & N-nya.
Maksud M & N adalah jumlah yang bisa bekerja dari jumlah total yang ada. Misalkan M=2 dan N=3, berarti diperlukan minimal 2 orang dari 3 orang yang ada untuk melakukan cryptographic operation di dalam partisi ini. Urutannya pun bebas. Silakan tentukan sendiri jumlah orangnya dan PIN untuk masing-masing officer. Ingat, tokennya berwarna hitam ya untuk CO ini. - Crypto Officer ini tidak bisa langsung bekerja begitu saja dalam partisi ini. Pintu partisi harus dibuka terlebih dahulu oleh Partition SO, barulah kemudian Crypto Officer dapat masuk dan bekerja. Jadi Partition SO harus login terlebih dahulu, barulah Crypto Officer login dan melakukan tugasnya.
- Setelah memberikan role Crypto Officer kepada partisi CA, sekarang waktunya memeriksa Partition Policies-nya. Jalankan perintah berikut untuk melihatnya:
par sp
Partition Policies - Ubah allow activation dan allow auto-activation pada nomor 22 dan 23 menjadi bernilai 1. Caranya:
par changePo -p <nomor_policy> -v <nilai>
Par changePo - Untuk melihat apakah perubahan nilai sudah terjadi pada policy nomor 22 dan 23 di Partition Policies, kembali jalankan perintah par sp:

Nilai policy sudah berubah - Tahap selanjutnya adalah create challenge. Dalam create challenge ini, ketiga Crypto Officer akan memasukkan satu secret yang terdiri atas karakter yang diinput bersama-sama oleh masing-masing Officer. Jadi formatnya Officer 1 akan menginput karakter yang diinginkan, lalu dilanjutkan oleh Officer 2 dan diakhiri oleh Officer 3, sehingga ketiga Officer ini tidak ada yang tahu apa password utuhnya dan saling ketergantungan satu sama lain untuk memasukkan password tersebut.
Pastikan secret yang dimasukkan itu sama ya, karena kalau tidak sama, maka akan muncul pesan error.
Untuk membuat challenge, jalankan perintah berikut:role createchallenge -name co
create challenge
Tahap 4
- Sekarang masuk ke dalam server CentOS 7 yang telah dipasang EJBCA, dalam hal ini IP-nya adalah 192.168.1.2. Untuk menghubungkan Luna Network HSM 7. 0 dengan CentOS 7, perlu ada library yang ditambahkan. Silakan gunakan editor favorit kalian dan ubah file /etc/Chrystoki.conf menjadiseperti berikut:
Chrystoki2 = { # LibUNIX = /usr/safenet/lunaclient/lib/libCryptoki2.so; # LibUNIX64 = /usr/safenet/lunaclient/lib/libCryptoki2_64.so; LibUNIX64 = /usr/safenet/lunaclient/lib/libshim.so; } Shim2= { LibUNIX64 = /usr/safenet/lunaclient/lib/libCryptoki2_64.so; } Luna = { DefaultTimeOut = 500000; PEDTimeout1 = 100000; PEDTimeout2 = 200000; PEDTimeout3 = 20000; KeypairGenTimeOut = 2700000; CloningCommandTimeOut = 300000; CommandTimeOutPedSet = 720000; } CardReader = { RemoteCommand = 1; } Misc = { PE1746Enabled = 0; ToolsDir = /usr/safenet/lunaclient/bin; PartitionPolicyTemplatePath = /usr/safenet/lunaclient/data/partition_policy_templates; ProtectedAuthenticationPathFlagStatus = 1; ApplicationInstance=SA5_COMPATIBILITY; FunctionBindLevel=2; }
Chrystoki.conf - Berikutnya adalah menambahkan user EJBCA ke dalam grup HSM User. Caranya:
gpasswd --add <user> <group>
gpasswd - Selanjutnya kalian akan memasang beberapa paket tambahan. Untuk memasang paket tambahan tersebut, jalankan perintah:
yum install glibc.i686 yum upgrade libstdc++ yum install libstdc++.i686 yum install libcap.i686 yum install libgcc.i686

yum install glibc.i686 
yum upgrade libstdc++ 
yum install libstdc++.i686 
yum install libcap.i686 
yum install libgcc.i686
Tahap 5
- Sekarang masuk ke dalam lunacm pada server CentOS 7. Caranya:
cd /usr/safenet/lunaclient/bin ./lunacm
- Jika sudah, daftarkan client (server EJBCA) ke server (HSM), lebih tepatnya ke partisi dan slot pada HSM tersebut. Caranya:
clientconfig deploy -server <ip_HSM> -client <ip_EJBCA_Server> -partition <nama_partisi>
clientconfig - Pada proses di atas, server EJBCA akan membuat private dan public key yang nantnya akan digunakan untuk berhubungan dengan HSM. Saat diminta untuk memasukkan admin password, masukkanlah password yang sama seperti ketika kalian ingin login ke server HSM via SSH.
- Jika sudah, jalankan perintah ped connect untuk menghubungkan server EJBCA dengan Remote PED. Caranya:
ped connect -ip <Remote_ped> -port <port_PEDServer>
Ped connect Selanjutnya, pada tab yang lain, masih di server EJBCA, silakan restart service EJBCA kalian.
Tahap 6
- Akses web EJBCA melalui browser dan masuk halaman administrator-nya.
- Jika sudah, pilih CA Functions → Crypto Tokens → Create New dan buatlah Crypto Token baru dengan pilihan type PKCS#11 (bukan soft). Pada bagian “PKCS#1: Reference Type”, pilih “Slot/Token Label” dan partisi yang sudah dibuat di HSM sebelumnya akan muncul pada bagian “PKCS#1: Reference”. Tekan Save kalau sudah selesai.

23-1 Menggunakan HSM untuk pembuatan Crypto Token Saat menekan tombol save, HSM akan meminta untuk memasukkan black token ke dalam Remote PED. Jangan lupa untuk memasukkan black token sesuai dengan M & N-nya ya.
Authentication Code merupakan nilai secret yang harus dimasukkan oleh Crypto Officer. Nilai secret-nya sendiri sama dengan secret yang dimasukkan pada Tahap 3 Nomor 16. - Apabila M & N-nya sesuai, PIN yang dimasukkan untuk M & N-nya benar, Authentication Code-nya cocok, pasti crypto token akan terbit dengan mudah.

Crypto Token terbit dengan baik - Selanjutnya, kalian bisa membuat pasangan kunci dengan nama sesuka kalian, sebanyak yang kalian mau dan panjang kuncinya pun bisa kalian tentukan sendiri.

Membuat Pasangan Kunci sesuai dengan fungsi dan keinginan kalian
*****
Itu tadi sedikit sharing. Kalau ada update, pasti langsung ditulis di postingan ini kok. Semoga bisa membantu ya.
Jika ada pertanyaan, jangan ragu untuk bertanya di kolom komentar ya.
Tambahan
Bila ingin mendaftarkan 2 partisi atau lebih pada client (lihat Tahap 2 dan 3), kalian hanya perlu membuat partisi barunya (di HSM Server) tanpa lagi harus menjalankan perintah clientconfig di lunacm, sebab IP Client-nya pasti sudah terdaftar. Maka yang perlu kalian lakukan adalah:
client show -c <nama_client> partition create -partition <nama_partisi> client assignPartition -client <nama_client> -partition <nama_partisi> client show -c <nama_client>



Untuk melakukan role init dan role login pada partisi yang berbeda, kalian hanya perlu mengganti slot-nya saja pada lunacm. Dan yang terakhir, jangan lupa juga mendaftarkan partisi tersebut ke EJBCA server (bukan hanya ke PEDServer).

