Integrasi Luna Network HSM 7.0 dengan EJBCA yang Sedang Berjalan

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

  1. SafeNet Luna Remote PED
  2. CentOS 7 dengan EJBCA 6.10.1.2 yang sedang berjalan di atasnya (JAVA 7).
  3. PC Windows yang akan digunakan sebagai PEDServer
  4. Luna Network HSM 7.0
  5. Software Client & SDK Safenet HSM v7.0.0 for windows → Download DI SINI

IP Server

  1. CentOS 7 = 192.168.1.2
  2. Luna Network HSM = 192.168.1.3
  3. Windows Client = 192.168.1.4

Tahap 1

  1. Arahkan pandangan pada PC Windows milik kalian yang selanjutnya akan digunakan sebagai PEDServer.
  2. Install software client & SDK Safenet HSM v7.0.0 for windows pada PC tersebut. Link bisa kalian lihat di atas.
  3. 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
  4. Hubungkan SafeNet Luna Remote PED dengan PC Windows kalian.
  5. 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
  6. 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

  1. 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
  2. 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
  3. Jika sudah sukses, sekarang kalian akan mengujinya dengan perintah berikut:
    hsm login

    hsm login
  4. 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
  5. 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

  1. Sekarang kembali lagi ke PEDServer. Jalankan perintah berikut di cmd:
    lunacm
  2. Jika sudah masuk ke lunacm, jalankan perintah berikut:
    clientconfig deploy -server <ip_HSM> -client <ip_PEDServer> -partition <nama_partisi>

    cleint config
  3. 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).
  4. 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
  5. Perintah ped connect diperlukan untuk memastikan kalau memang terhubung dengan PEDServer lewat port yang sudah ditetapkan.
  6. Perintah ped get bertujuan untuk mengetahui slot yang terhubung dengan Remote PED.
  7. 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).
  8. 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
  9. Perintah ped connect sekali lagi untuk memastikan hubungan antara HSM dengan PEDServer.
  10. 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.
  11. 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.
  12. 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.
  13. Setelah memberikan role Crypto Officer kepada partisi CA, sekarang waktunya memeriksa Partition Policies-nya. Jalankan perintah berikut untuk melihatnya:
    par sp

    Partition Policies
  14. 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
  15. 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
  16. 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

  1. 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
  2.  Berikutnya adalah menambahkan user EJBCA ke dalam grup HSM User. Caranya:
    gpasswd --add <user> <group>

    gpasswd
  3. 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

  1. Sekarang masuk ke dalam lunacm pada server CentOS 7. Caranya:
    cd /usr/safenet/lunaclient/bin
    ./lunacm
  2. 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
  3. 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.
  4. 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

  1. Akses web EJBCA melalui browser dan masuk halaman administrator-nya.
  2. 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.

  3. 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
  4. 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>
client show untuk melihat address dan partisi yang sudah di-assign
Client assignPartition di lunash
Partisi sudah bertambah

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).

2 partisi berhasil didaftarkan pada slot yang berbeda
Facebook Comments Box