Menerbitkan Sertifikat SSL untuk Server Melalui EJBCA 6.3.1.1

Semua pasti sudah tahu apa itu SSL (Secure Socket Layer). Itu lho, standar keamanan teknologi untuk membuat aman komunikasi antara server dengan klien – umumnya Web Server dengan Web Browser Klien. Dengan SSL, informasi yang dikirim antara server dengan klien akan terenkripsi sehingga akan mempersulit seseorang yang berusaha mencuri informasi tersebut.

Lalu pertanyaan yang muncul selanjutnya adalah bagaimana cara mendapatkan SSL Certificate dan memasangnya untuk server yang kita punya? Jawabannya gampang sekali. Banyak perusahaan IT yang menyediakan SSL Certificates. Sebut saja Digicert, Comodo, Verisign, dan masih banyak lagi. Kita hanya perlu membelinya. Yang namanya membeli pastilah mengeluarkan sejumlah uang, di sanalah letak tidak enaknya dari membeli sesuatu.

Nah pada kesempatan kali ini, saya mau mencoba memberikan cara untuk menerbitkan SSL Certificate sendiri alias gratis dengan bantuan dari EJBCA. Tanpa berlama-lama lagi, berikut ini caranya:

Alat dan Bahan

  1. Server (Ubuntu) yang sudah terinstal sebuah CA (EJBCA). Cara installnya ada disini
  2. Server (Ubuntu) yang terpasang Web Server di dalamnya.

Persiapan Administrasi EJBCA

  1. Masuk ke dalam menu Administration dari EJBCA. Kalau sudah, pada bagian CA Functions, pilih Certificate Profiles. Tekan tombol Clone yang ada di sebelah “Name” Server.

    Cloning Sebuah Template Server yang ada pada EJBCA
  2. Halaman baru pun akan muncul. Masukkan nama Certificate Profiles yang baru dari template Certificate Profiles Server yang kita cloning. Pada kesempatan kali ini saya akan menamakan profil yang baru ini CSR Server. Ketika sudah selesai memberi nama, tekan Create From Template.

    Membuat Profile Baru dari sebuah template
  3. Profile CSR Server pun kini sudah muncul pada Certificate Profiles. Tahap selanjutnya adalah mengedit beberapa parameter yang ada di dalamnya. Untuk melakukannya, pilih tombol Edit yang ada pada CSR Server.

    Edit Profile CSR Server
  4. Ada banyak sekali item yang perlu diatur, namun pada kesempatan kali ini saya ingin menitikberatkan pada Key Usage dan Extended Key Usage. Untuk Key Usage, centang bagian Use dan Critical. Secara default, Digital Signature dan Key Encipherment sudah terpilih secara otomatis. Biarkan seperti itu.
    Di bagian Extended Key Usage, pilih Use (tanpa memilih Critical) dan juga pilih Server Authentication.

    *Digital Signature sering digunakan untuk otentikasi suatu entitas dan integritas datanya. Sedangkan Key Encipherment digunakan ketika suatu sertifikat dipakai dengan sebuah protokol yang mengenkript keys (contohnya SSL).

    *Critical maksudnya adalah sertifikat HANYA digunakan untuk tujuan itu,

    Pilihan pada Edit Profiles
  5. Bagian selanjutnya yang perlu diperhatikan adalah bagian Authority Information Access. Centang bagian Use dan gunakan OCSP Locator yang sudah didefinisikan sebelumnya pada CA. Jangan lupa masukkan URI dari CA yang mengeluarkan sertifikat ini.

    *OCSP Locator digunakan sebagai alamat untuk memeriksa status pencabutan dari sebuah sertifikat digital

    Bagian ini akan muncul pada detail dari sertifikat di bagian Extensions: Authority Information Access
  6. Itu tadi bagian Certificate Profiles pada CA Functions. Sekarang kita masuk ke bagian End Entity Profiles yang ada di RA Functions.
    Sebelum menambahkan entitas, kita terlebih dahulu membuat Template/Profile guna mempermudah proses ke depannya. Tambahkan sebuah Profile, dalam hal ini bernama CSR Server, dengan cara mengetik namanya kemudian tekan tombol Add. Secara otomatis Profile tesebut akan masuk ke dalam List of End Entity Profiles.

    Membuat End Entity Profile
  7. Selanjutnya mari kita tambahkan entitas yang nantinya akan digunakan untuk mengenerate sebuah certificate. Caranya:
    • Pilih Add Entity.
    • Pada bagian End Entity Profile, Pilih CSR Server.
    • Masukkan Username dan Password sesuai dengan yang kita inginkan (dalam hal ini usernamenya adalah test.id)
    • Masukkan alamat email.
    • Pada contoh kali ini, untuk Subject DN Attributes, Saya hanya menggunakan CN (Common Name). Isi sesuai dengan FQDN Server yang ingin kita pasangkan Sertifikat SSL.
    • Di bagian Main Certificate Data, Pilih CSR Server sebagai Certificate Profile. Pilih juga CA yang akan menerbitkan sertifikat tersebut. Yang paling penting adalah Token HARUS diisi dengan User Generated, bukan PEM atau p12.
    • Kalau sudah selesai, tekan tombol Add

    Detil dari End Endtity yang mau ditambahkan

Pembuatan CSR di Server

Sekarang kita masuk ke dalam server yang ingin dipasangkan Sertifikat SSL. Nah, sebelum dipasangkan sertifikat SSL di server ini, terlebih dahulu kita akan membuat CSR (Certificate Signing Request). CSR adalah sebuah encoded text yang diberikan kepada sebuah CA (Certification Authority) ketika mengajukan sebuah sertifikat SSL. CSR biasanya berisi informasi yang akan disertakan dalam sertifikat seperti nama organisasi (O), Common Name (nama domain), lokalitas dan negara. CSR juga berisi kunci publik yang akan disertakan dalam sertifikat. Ketika membuat CSR, kita juga akan membuat Private Key.

Berikut ini langkah untuk membuat CSR:

  1. Masuk ke dalam server yang ingin dipasangkan sertifikat SSL.
  2. Berikutnya, kita akan membuat sebuah direktori untuk menampung file yang diperlukan dalam pembuatan sertifikat SSL ini. Pada contoh kali ini saya membuat folder sertifikat di dalam direktori opt.
  3. Kalau sudah, masuk ke dalam direktori sertifikat tersebut dan buatlah CSR serta Private Key untuk server ini. Caranya, jalankan perintah berikut:
    openssl req -new -newkey rsa:2048 -nodes -keyout <nama_privatekey> -out <nama_csr>

    • Untuk nama_private key, kita bebas memberi nama apapun. Namun untuk mempermudah, tambahkan .key pada nama private key yang akan kita buat. Contohnya test.key
    • Seperti halnya nama_privatekey, kita juga bebas memberi nama pada nama_csr. Untuk mempermudah proses identifikasi, tambahkan .csr pada nama CSR yang ingin kita buat. Contohnya test.csr

  4. Setelah memasukkan perintah tersebut dan menekan tombol Enter, kita akan diminta mengisi beberapa informasi, yaitu:
    Nama Negara (Gunakan 2 Huruf Kode negara. Dalam contoh ini adalah Indonesia (ID))
    Nama Provinsi (Dalam contoh ini adalah Banten)
    Nama Kota (Dalam contoh ini adalah Tangerang)
    Nama Unit (Dalam contoh ini adalah IT)
    CN (Masukkan FQDN Server)
    Email (Masukkan alamat Email)
    • Untuk Challenge Password dan Optional Company Name bisa dikosongkan saja.

    Membuat CSR
  5. Sekarang di dalam folder sertifikat, sudah ada 2 file yaitu test.key (private key) dan test.csr (CSR).

    CSR dan Key

Generate Certificate

Dari server yang ingin kita pasangkan Sertifikat SSL, kita kembali lagi ke CA Server (EJBCA). Tahap selanjutnya adalah mengupload CSR yang sudah dibuat tadi untuk men-generate sertifikat SSL. Caranya:

  1. Masuk ke halaman utama dari EJBCA.
  2. Pada bagian Enroll, Pilih Create Certificate from CSR. Sebuah Form pun akan muncul.
  3. Di bagian Enroll, masukkan username dari entitas yang sudah kita buat sebelumnya pada kolom username dan masukkan juga password yang kita buat bersamaan dengan username tersebut pada kolom Enrollment code.
  4. Upload file CSR yang sudah kita buat di bagian Request File.
  5. Pada bagian Result Type, pilih PEM – certificate only, kemudian tekan OK.

    Tahap upload CSR dan download Certificate
  6. Jika berhasil, maka detail sertifikat akan muncul dan sebuah pop-up menu juga akan muncul. Download sertifikat tersebut.

    Sertifikat yang berhasil didapat
  7. Kalau sudah di download, masukkan sertifikat tadi ke dalam direktori /opt/sertifikat yang ada di server. Kini terdapat 3 file di dalam direktori tersebut.

    Kini sudah ada 3 file. CSR, Key dan Cert

Download Certificate Chain

Selanjutnya, kita akan kembali lagi ke server yang ingin kita pasang sertifikat SSL. Sebelum masuk ke dalam tahap konfigurasi, terlebih dahulu kita harus mengunduh 1 file lagi yaitu CA chain certificate dari CA yang menerbitkan sertifikat ini. Caranya:

Baca juga: Basoeki Abdullah dan Museumnya

  1. Masuk ke alamat dari CA (EJBCA) yang menerbitkan sertifikat. Pada bagian Retrieve, Pilih Fetch CA Certificates. List CA yang tersedia pun akan muncul. Pilih Download PEM Chain.

    Download PEM Chain
  2. Pop-up Menu pun akan muncul. Pilih Save File.

    File CA Chain Certificate
  3. Kalau sudah di download, masukkan file chain.pem tersebut ke dalam direktori /opt/sertifikat. Kini di dalam folder tersebut sudah ada 4 file.
    Certificate : testxxxxid.pem
    Key : test.key
    Certificate Chain : ixxxxxxxCA-chain.pem
    CSR : test.csr (sudah tidak diperlukan)

    FIle-file yang dibutuhkan untuk konfigurasi di Apache sudah tersedia

Baca juga: Validasi Tanda Tangan Digital pada Adobe Acrobat

Konfigurasi Apache

Certificate, Key dan Certificate Chain sudah tersedia. Sekarang kita akan masuk ke tahap konfigurasi apache (tutorial ini pakai Apache ya, jadi kalau pakai Web Server lain ya harap cari tutorial sendiri). Caranya:

  1. Masuk ke dalam folder sites-available yang ada di direktori apache2. Edit file 000-default.conf dengan editor yang kamu suka.
    cd /etc/apache2/sites-available
    vi 000-default.conf

    Edit 000-default.conf
  2. Ubah <VirtualHost *:80> menjadi <VirtualHost *:443>
  3. Masukkan nama domain ke dalam ServerName dan masukkan juga aliasnya ke dalam ServerAlias.
  4. Arahkan DocumentRoot ke dalam folder yang ingin kamu tampilkan.
  5.  Tambahkan:
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite ALL:!DH:!RC4:+HIGH:+MEDIUM:!LOW:!aNULL:!eNULL
    
    SSLCertificateFile /opt/sertifikat/testxxxxid.pem
    SSLCertificateKeyFile /opt/sertifikat/test.key
    SSLCertificateChainFile /opt/sertifikat/ixxxCA-chain.pem

    • Untuk SSLCertificateFile, arahkan pada file certificate (xxx.pem).
    • Untuk SSLCertificateKeyFile, arahkan pada file key (xxx.key).
    • Untuk CertificateChainFile, arahkan pada file chain (xxxchain.pem).

  6. Untuk me-redirect port 80 ke port 443, tambahkan:
    <VirtualHost *:80>
     ServerName <nama_domain>
     Redirect permanent / https://<nama_domain>/
    </VirtualHost>

    Isi dari 000-default.conf setelah mengalami perubahan
  7. Simpan file 000-default.conf yang sudah mengalami perubahan tersebut.
  8. Akftifkan SSL pada apache dengan menjalankan perintah berikut:
    a2enmod ssl
  9. Setelah itu restart service apache dengan cara:
    service apache2 restart
  10.  Pastikan service apache2 berjalan dengan perintah:
    service apache2 status

    enable ssl dan restart service apache
  11. Kalau sudah running, masuk ke dalam web browser dan akses alamat server yang sudah dikonfigurasi tadi. (Web Browser yang saya gunakan adalah Firefox)

    SSL sudah terpasang

Import Root CA Certificate

Kalau dilihat, SSL sudah terpasang pada server. Namun pertanyaan selanjutnya adalah kenapa masih ada warning pada lambang gemboknya alias connection is not secure? Ternyata hal tersebut diakibatkan karena kita belum mengimpor RootCA Cert ke dalam browser.

Ketika SSL Certificate tersebut diperiksa, ternyata tidak ditemukan Cert dari CA yang mengeluarkannya di dalam repositori browser. Untuk itulah kita perlu mengimpornya secara manual. Caranya:

  1. Download Root CA Cert pada CA Server (EJBCA)

    Download Root CA Cert
  2. Sebuah Pop-up akan muncul, simpan file .pem tersebut.

    Pop-up menu
  3. Setelah di download, kita akan mengimpor cert tersebut ke dalam browser (firefox). Tahap pertama, Buka browser dan masuk ke dalam bagian Preferences→Advanced→Certificates→View Certificates.

    Tahapan impor Root CA Cert ke dalam browser
  4. Pada bagian Authorities, pilih Import dan kemudian upload Root CA Cert yang sudah di-download tadi.

    Yuk impor
  5. Centang semua Check Box dan kemudian pilih OK.

    Centang Semua Check Box
  6. Pastikan Root CA sudah ada dalam repositori browser dan kemudian pilih OK.

    Sudah berhasil diimpor
  7. Tutup dan buka kembali browser, kemudian akses kembali alamat server yang sudah dipasang SSL Certificate. VOILAAAA!!!! Connection is now secure.

    Connection is now secure
  8. Detail dari SSL Certificate yang sudah dipasang adalah sebagai berikut:

    Detil Certificate
  9. Secara iseng saya mencoba melihat nilai dari SSLLabs dan inilah nilai yang didapat:
    Nilai dari SSLLabs

    Kalau masalah TRUST diabaikan (karena memang ROOT CA-nya belum didaftarkan secara Internasional), maka nilai yang didapat adalah A-

Itu tadi sedikit sharing mengenai cara menerbitkan SSL Certificate pada EJBCA disertai sedikit cara memasangnya pada server yang dituju. Semoga informasi di atas dapat membantu ya. Saya juga masih belajar, jadi kalau ada pertanyaan atau ingin membenarkan hal yang salah dari tulisan ini, jangan ragu untuk komen di kolom Comment ya.

Terima kasih ^_^

One comment

Leave a Reply

Your email address will not be published. Required fields are marked *