Mutual Autentikasi Menggunakan Sertifikat dari EJBCA (Bagian 1)

Salah satu cara yang aman ketika dua server ingin berkomunikasi adalah dengan menggunakan Mutual Autentikasi (TLS). Kenapa bisa dibilang cukup aman dan seperti apa sih mekanisme Mutual Autentikasi itu? Puji Tuhan Andrew Hoden dengan cukup baik sudah menerangkannya DI SINI (silakan dibaca).

Setelah mengetahui bagaimana teorinya, saya dan beberapa orang teman pun lantas mencari tahu bagaimana cara mengimplementasikan Mutual Autentikasi tersebut. Banyak tutorial yang bertebaran di luar sana, hanya saja tutorial-tutorial tersebut menggunakan sertifikat yang dibuat sendiri dengan menggunakan OpenSSL seperti yang saya baca DI SINI dan juga DI SINI.

Tidak ada yang salah dengan metode yang saya baca dari 2 web tersebut, hanya saja saya sudah memiliki environment CA yang saya buat menggunakan EJBCA 7.4.3.2. Saya berpikir kenapa tidak menggunakan environment yang sudah ada dan pastinya proses manajemen sertifikatnya pun jauh lebih mudah karena sudah ada sistemnya.

Berangkat dari hal tersebut, akhirnya saya dan beberapa orang teman mengoprek bagaimana cara menerbitkan sertifikat dari EJBCA 7.4.3.2 yang bisa digunakan untuk Mutual Autentikasi. Puji Tuhan setelah lebih dari 10x mencoba akhirnya ujicoba itu berhasil dan berikut ini adalah tahapan yang berhasil saya dan teman-teman dokumentasikan.

*Profil yang dibuat di sini hanyalah untuk keperluan testing

1. Membuat Certificate Profile untuk CA di EJBCA

Sebenarnya ketika sukses melakukan instalasi EJBCA yang pertama kali, kalian sudah mendapati sebuah CA di dalam EJBCA dengan nama ManagementCA. Bisa saja kalian langsung menerbitkan sertifikat untuk end entity melalui CA tersebut, namun alangkah baiknya membuat CA baru untuk keperluan penerbitan sertifikat Mutual Autentikasi.

Sebelum membuat CA baru, kalian terlebih dahulu harus membuat certificate profile untuk CA yang akan dibuat tersebut. Caranya adalah dengan masuk ke dalam halaman administration dari EJBCA dan pilih Certificate Profiles yang berada di bawah CA Functions. Pada contoh kali ini saya akan membuat Certificate Profiles dengan nama TestingAuth.

Membuat Certificate Profiles untuk CA dengan nama TestingAuth

Selanjutnya kalian bisa melakukan pengaturan untuk TestingAuth tersebut. Salah satu bagian yang perlu diperhatikan adalah Type. Pilih RootCA pada bagian Type. Sedangkan untuk key algorithm, panjang bit yang tersedia, signature algorithm, validitas dari sertifikat CA, itu bisa kalian tentukan sendiri sesuai dengan yang kalian mau.

Pilih type Root CA

Pada bagian X.509v3 extensions pastikan use & critical pada Basic Constraints dipilih. Begitu juga dengan Key Usage, pastikan use & critical dipilih. Untuk item pada Key Usage-nya sendiri, kalian bisa memilih Key certificate sign, CRL sign, (digital signature). Kosongkan bagian Extended Key Usage dan Certificate Policies.

Detial pada pengaturan Cert Profile TestingAuth

Masih pada bagian X.509v3 extensions, kalian boleh menggunakan Subject Alternative Name dan Issuer Alternative Name, hanya saja tidak perlu critical. Begitu pula dengan CRL Distribution Points, kalau kalian menggunakannya pastikan tidak memilih critical.

Masih pada bagian X.509v3 Extensions

Pada bagian other data, kalian bebas menentukan apakah subject DN akan mengikuti urutan LDAP atau tidak. Sedangkan untuk available CAs, masukkan saja pilihan any ca. Setelah itu kalian bisa menekan tombol save untuk menyimpan konfigurasi.

Bagian terakhir pada pembuatan Certificate Profile

2. Membuat CA

Usai sukses membuat Certificate Profiles untuk CA, sekarang waktunya untuk membuat CA-nya. Pada halaman administration EJBCA, pilih Certificate Authorities pada bagian CA Functions. Selanjutnya buat sebuah nama bagi CA yang ingin kalian buat. Pada kesempatan kali ini saya akan membuat sebuah CA dengan nama CA Authentication G1. 

Membuat CA Baru

Begitu memasukkan nama CA dan menekan tombol create, kalian akan langsung dibawa masuk ke halaman konfigurasi CA. Pada bagian CA Type, pilih X.509 CA. Untuk signing algorithm-nya sendiri silakan pilih yang kalian mau. Pada kesempatan kali ini saya memilih SHA256WithRSA. Pada kesempatan kali ini pun saya meng-unchecked Enforce unique public keys & Enforce unique DN dan memilih Use User Storage & Use Certificate Storage pada bagian Directives.

Pengaturan CA tahap awal

Selanjutnya kalian akan berfokus pada bagian CA Certificate Data. Untuk Subject DN, silakan kalian isi sesuai dengan yang kalian butuhkan. Pada bagian Signed by, kalian bisa memilih self signed. Nah, bagian yang penting ada pada Certificate Profile. Ubah pilihannya menjadi certificate profiles yang baru saja dibuat tadi. Pada contoh kali ini berarti namanya adalah TestingAuth. 

Untuk soal validitas, serial number octet size, utf-8, PrintableString Encoding in DN, silakan kalian tentukan sendiri berapa nilainya dan apakah ingin digunakan atau tidak.

bagian CA Certificate Data

Tahap terakhir dalam contoh konfigurasi kali ini adalah dengan mengaktifkan CMS Service, Finish User, dan monitor if CA Active. Jika sudah, silakan tekan tombol create.

Tahap terakhir
CA sudah aktif

3. Membuat Certificate Profiles untuk Server

CA sudah berhasil dibuat, sekarang berarti waktunya untuk membuat certificate profiles untuk sertifikat server yang akan diterbitkan. Certificate profiles ini perlu diatur karena bertujuan untuk mendefinisikan jenis sertifikat yang akan dikeluarkan, ekstensinya dan juga terkait dengan SubjectDN, dll.

Pada menu Certificate Profiles, tambahkan CP baru dengan nama yang kalian inginkan. Pada contoh kali ini namanya adalah Testing_Auth_Server. Hampir sama seperti ketika membuat certificate profiles untuk CA, hanya saja kali ini type yang dipilih adalah End Entity. Untuk masalah masa aktif, algoritma, panjang bit, sekali lagi itu adalah pilihan kalian.

Pilih End Entity pada bagian Type, ya!

Beranjak ke bagian berikutnya yaitu X.509v3 extensions. Pada bagian Basic Constraints, pilihan critical tidak perlu dipilih.

Basic constraints non critical

Dan sekarang masuk ke bagian Key Usage (KU) dan Extended Key Usage (EKU), salah satu bagian terpenting dalam proses penerbitan sertifikat. Untuk key usage, kalian silakan pilih digital signature dan Key Encipherment. Pastikan juga kalau key usage ini critical.

Pada bagian extended key usage, pilih Server Authentication dan pastikan EKU ini tidak critical. Bagian certificate policies bisa dikosongkan saja.

Key Usage (KU) dan (Extended Key Usage)

Pada bagian X.509v3 extensions Names & Validation Data, silakan pilih yang ingin kalian gunakan tapi jangan di-set sebagai critical. Berikut ini adalah contoh yang saya gunakan pada bagian names & validation data.

Extensions name & Validation Data

Sebagai bagian penutup, biarkan profil ini bisa diaplikasikan pada CA manapun, oleh sebab itu pilih Any CA pada other data. Untuk urutan subjectDN, silakan dipilih apakah ingin mengikuti urutan LDAP atau tidak. Pada contoh kali ini saya menggunakan urutan LDAP untuk subjectDN. Jika sudah, silakan tekan tombol save.

Bagian akhir

4. Membuat Certificate Profiles untuk Client

Karena Mutual Autentikasi membutuhkan 2 sertifikat untuk saling bertukar informasi (sertifikat milik klien dan server yang diterbitkan CA), maka sekarang waktunya untuk membuat Certificate Profiles untuk sisi klien agar nantinya sertifikat klien bisa dibuat dengan menggunakan profil ini. Tidak terlalu banyak perbedaan antara profil klien dan server.

Seperti halnya pembuatan CP pada server, maka untuk menambahkan CP pada klien pun menunya sama. Pilih certificate profiles yang berada di bawah CA Functions, masukkan nama profile yang ingin dibuat (dalam hal ini adalah Testing_Auth_client), dan kemudian tekan tombol Add.

Pembuatan Certificate Profiles untuk klien

Berikutnya akan langsung masuk ke bagian konfigurasi. Pada bagian Type, jangan lupa untuk memilih End Entity. Masa aktif sertifikat yang akan diterbitkan, panjang bit, algoritma yang digunakan, dan yang lainnya silakan ditentukan sendiri.

Jangan lupa untuk memilih End Entity pada type.

Untuk bagian Permissions, pastikan key usage override itu di-unchecked dan checked Use Certificate Storage dan Store Certificate Data. 

Bagian Permissions pada Certificate Profile Client

Nah, yang paling penting adalah pada bagian X.509v3 extensions. Pertama, pastikan Basic constraints adalah non-critical. Untuk Key Usage, pilih critical dan key-usage-nya adalah digital signature, non-repudiation, dan key encipherment. Sedangkan untuk Extended Key Usage, pilih non-critical dan poin-poin yang dipilih adalah client authentication (dan email protection). Untuk bagian Certificate Policie bisa dikosongkan.

x.509v3 Extensions

Pada bagian Names, jika ingin menggunakan seperti Subject Alternative Name, Name Constraints, CRL Distribution Points, pastikan opsinya non-critical. 

Bagian Names pada X.509v3 Extensions

Di bagian akhir, silakan pilih Any CA untuk bisa digunakan oleh CA mana saja dan silakan enable LDAP DN Order untuk mengurutkan SubjectDN berdasarkan LDAP. Selanjutnya tekan save.

Bagian terakhir

5. Pembuatan End Entity Profile untuk Server

Certificate Profiles sudah berhasil dibuat, sekarang waktunya membuat End Entity Profile. End Entity Profile berfungsi untuk menyediakan template bagi entitas akhir yang sertifikatnya ingin diterbitkan.

Template  tersebut meliputi SubjectDN, bagian mana yang wajib dan atau yang tidak bisa diubah, dan informasi spesifik lainnya bagi entitas akhir (seperti IP, DNS), dll. Di sini pun kalian akan menentukan CA apa yang akan digunakan untuk menerbitkan sertifikat dan certificate profiles yang ingin dipilih.

Seperti halnya certificate profiles, untuk end entity pun kalian akan membuat 2 profil, yaitu untuk server dan klien. Yang pertama, mari buat untuk server terlebih dahulu.

Pilih End Entity Profiles yang berada di bawah menu RA Functions. Masukkan nama End Entity Profiles yang kalian inginkan dan kemudian pilih Add Profile. Pada contoh kali ini saya akan memberi nama profile  dengan Profil_server. 

Profil Server

Selanjutnya kalian hanya perlu mengatur beberapa item yang ada di dalamnya. Mari fokus ke dalam Subject DN Attributes. Pada contoh kali ini saya menambahkan CN, Email, O, OU, dan C. Sedangkan pada bagian Other Subject Attributes, saya menambahkan DNS Name dan IP address. Kedua attributes tersebut saya atur untuk modifiable dan hanya CN yang required alias wajib.

Subject DN Attributes
Other Subject Attributes

Berikutnya kalian akan berfokus pada Main Certificate Data. Di sinilah kalian akan mengatur CA yang kalian gunakan untuk penerbitan, certificate profiles-nya, dan hasil keluaran sertifikat. Karena sebelumnya sudah dibuat beberapa pengaturan untuk server ini, maka yang perlu dilakukan sekarang hanyalah memilihnya.

Untuk Default Certificate Profile dan Available Certificate Profiles pilih Testing_Auth_Server. Sedangkan Default CA dan Available CAs pilih CA_Authentication_G1. Karena untuk pengujian kali ini saya hanya membutuhkan file P12, maka Default Token dan Available Tokens hanya pilih P12 File. Setelah itu pilih save.

Main Certificate Data untuk Profil_server

6. Pembuatan End Entity Profile untuk Client

Sebenarnya tidak ada yang jauh berbeda dalam pembuatan profile untuk klien kali ini. Yang membedakan hanyalah certificate profiles yang digunakan dan saya menghilangkan Other Subject Attributes. Biar tidak bingung, saya akan coba menjelaskan tahapannya dari awal.

Pertama, pilih End Entity Profiles yang berada di bawah menu RA Functions. Masukkan nama End Entity Profiles yang kalian inginkan dan kemudian pilih Add Profile. Pada contoh kali ini saya akan memberi nama profile  dengan Profil_client.

Membuat End Entity Profile untuk Client

Selanjutnya sama seperti Profil_server, hanya saja saya menghilangkan other subject attributes sehingga yang diatur hanyalah Subject DN Attributes. Biarkan hanya CN yang required dan yang lainnya hanya perlu modifiable.

Subject DN Attributes untuk Profil_client

Lalu pada bagian Main Certificate Data, pilih Testing_Auth_Client sebagai Default Certificate Profile dan Available Certificate Profiles. Pilih CA Authentication G1 sebagai Available CAs dan Default CA. Untuk token, pilih P12 sebagai default token dan Available Tokens. Jika sudah tekan save.

Main Certificate Data untuk Client

Itu tadi beberapa pengaturan pada EJBCA untuk menertbitkan sertifikat yang akan digunakan untuk Mutual Autentikasi natara server dan client. Untuk tahapan penerbitan sertifikat dan juga ujicoba Mutual Autentikasi akan dilanjutkan pada postingan selanjutnya DI SINI.

Facebook Comments Box