May 01

[Keamanan Jaringan] Menjadi Certificate Authority dengan OpenCA

Digital Certificate atau Sertifikat Digital digunakan untuk memastikan apakah public key itu benar-benar milik orang yang bersangkutan. Agar sertifikat tersebut dipercaya, sertifikat tersebut harus “ditandatangani” oleh pihak terpercaya yang disebut dengan Certificate Authority (CA). Salah satu contoh Certificate Authority adalah Verisign dan Thawte. Kita dapat meminta untuk dibuatkan sertifikat pada pihak-pihak tersebut. Selain itu, kita juga dapat membuat self-signed certificate yang tentunya tidak terlalu dipercaya. Nah, apabila kita ingin membangun CA milik kita sendiri yang berhak menerbitkan sertifikat, kita dapat menggunakan OpenCA.

OpenCA adalah aplikasi berbasis web yang memungkinkan suatu pihak mendirikan Certificate Authority-nya sendiri. Sehingga pihak-pihak lain dapat meminta dia untuk dibuatkan sertifikat digital. Dan berikut ini adalah langkah-langkah yang diperlukan untuk mendirikan Infrastruktur Kunci Publik (Public Key Infrastructure) dengan OpenCA. Tutorial ini diujicoba pada Linux Mint 12, OpenSSL 1.0.0, OpenCA 1.1.1, dan tanpa LDAP.

Download dan Instalasi Paket yang Dibutuhkan

Langkah pertama yang harus dilakukan adalah mengunduh aplikasi-aplikasi yang dibutuhkan, seperti OpenCA-Base dan OpenCA-Tools dari sini dan ekstrak file tersebut (misal : /tmp). Berikutnya adalah instalasi software-software dan paket-paket pendukung yang dibutuhkan, seperti Apache+Mod_SSL , MySQL, Perl, dan berbagai Perl Module. Berikut ini perintah yang dapat dilakukan untuk instalasi :

# apt-get install apache2 mysql-server perl libauthen-sasl-perl libcgi-session-perl libconvert-asn1-perl libdigest-hmac-perl libdigest-sha1-perl libencode-perl libio-socket-ssl-perl libio-stringy-perl libmime-base64-urlsafe-perl libmime-lite-perl libmime-tools-perl libmailtools-perl libnetserver-generic-perl libparse-recdescent-perl liburi-perl libx500-dn-perl libxml-twig-perl libintl-perl libnet-ssleay-perl libdbd-mysql-perl libdb-dev

Instalasi OpenCA-Tools

Sebelum instalasi openca-base, kita harus melakukan instalasi openca-tools terlebih dahulu. Berikut ini adalah perintah yang dijalankan untuk instalasi openca-tools :

# cd /tmp/openca-tools-1.3.0/
# ./configure
# make
# make install

Patch Modul Perl Net::SSLeay*

Bagian berikut dilakukan jika versi OpenSSL yang digunakan adalah versi 1.0.0 dan versi ini ada sedikit masalah dengan modul Perl Net::SSLeay, sehingga modul Perl tersebut harus di-patch. Jadi pertama download dulu patch yang dibutuhkan di sini. Letakkan file tersebut di direktori yang diinginkan, misalkan /tmp/openca-base-1.1.1/src/ext-modules/, kemudian ekstrak di direktori tersebut dan jalankan perintah berikut untuk melakukan patch :

#cd /tmp/src/ext-modules
#patch -p0 < netssleay.patch

Pembuatan Database

Database di sini nantinya akan digunakan untuk menyimpan data-data yang dibutuhkan. Tapi pada langkah ini, yang perlu dibuat hanyalah sebuah database dengan username tertentu yang tidak ada isinya. Pada tutorial ini akan dibuat user mysql bernama openca dan passwordnya openca, kemudian dibuat juga database dengan nama yang sama, yaitu openca

Instalasi OpenCA-Base

Setelah berbagai paket dan software pendukung terinstall, berikutnya adalah instalasi openca-base. Sebetulnya cara untuk instalasi openca-base mirip dengan openca-tools. Hanya ada beberapa hal yang berbeda. Berikut ini adalah langkah untuk mengkompilasi openca-base :

# cd /tmp/openca-base-1.1.1/
# ./configure --with-openca-tools-prefix=/usr --with-db-type=mysql --with-httpd-user=www-data --with-httpd-group=www-data --with-db-name=openca --with-db-host=localhost --with-db-user=openca --with-db-password=openca
# make

Jika semuanya sukses, perintah make tidak akan mengeluarkan pesan kesalahan. Kesalahan yang umum terjadi adalah ketika instalasi modul DB dan NetSSLeay. Modul DB akan gagal dikompilasi jika libdb-dev belum terinstall. Sedangkan NetSSLeay akan gagal terinstall jika tidak cocok dengan versi OpenSSL yang ada.

Kemudian, langkah berikutnya adalah memindahkan file-file yang sudah terkompilasi ke direktori-direktori tertentu. Pada OpenCA ini, ada 3 interface yang penting, yaitu Pub, RA, dan CA. Masing-masing interface memiliki kegunaan yang berbeda-beda. Pub digunakan untuk pengguna umum yang ingin melihat atau membutuhkan sertifikat digital. RA (Registration Authority) akan digunakan oleh administrator yang bertugas menyetujui request pembuatan sertifikat, tetapi RA ini tidak berhak untuk menerbitkan sertifikat. Kemudian yang terakhir adalah CA, CA ini sesuai namanya akan digunakan oleh administrator yang bertugas untuk menerbitkan sertifikat atau Certificate Revocation Lists. Untuk instalasi interface CA, maka perintah ini yang dijalankan :

# make install-offline

Sedangkan untuk instalasi interface RA dan Pub, perintah di bawah ini dapat digunakan :

# make install-online

Konfigurasi Apache

Setelah semua paket terinstall, langkah berikutnya adalah mengkonfigurasi Apache. Langkah pertama adalah enable mod_ssl terlebih dahulu :

# a2enmod ssl

Kemudian buatlah virtual host baru di /etc/apache2/sites-avalaible (misal : nama filenya adalah openca). Berikut ini adalah contoh isi file yang harus dibuat :

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/local/var/www/cgi-bin/
<Directory "/usr/local/var/www/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined

Alias /pki/ "/usr/local/var/www/html/pki/"
<Directory "/usr/local/var/www/html/pki/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

SSLEngine on

SSLCertificateFile    /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key

SSLOptions +StdEnvVars +ExportCertData
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>

</VirtualHost>
</IfModule>

Setelah itu, jangan lupa untuk enable virtual host dengan perintah :

# a2ensite openca
# service apache2 restart

Konfigurasi OpenCA

File-file konfigurasi OpenCA pada tutorial ini terletak di /usr/local/etc/openca. Pada direktori tersebut ada file config.xml. Bukalah file tersebut dan pastikan isinya sudah benar, terutama untuk default_web_username dan default_web_password serta username, password, dan nama database yang akan digunakan openca. Apabila default_web_password tidak diubah saat ini, maka ketika daemon OpenCA berjalan, akan ditanyai password untuk admin web yang ingin digunakan.

Kemudian setelah konfigurasi selesai, eksekusi program berikut :

./configure_etc.sh
./openca_start

Dan selamat menggunakan openca anda dengan mengetikkan alamat https://localhost/pki/pub atau https://localhost/pki/ra atau https://localhost/pki/ca

Mengubah Password

Jika anda tidak sengaja mengganti password admin yang default, untuk menggantinya, anda dapat menggunakan perintah openca-digest, berikut ini adalah sintaksnya :

# openca-digest <password>

Contoh :

# openca-digest root

Kemudian nilai yang muncul disalin ke config.xml bagian default_web_password. Dan jangan lupa untuk melakukan restart pada daemon openCA dengan perintah berikut :

# /usr/local/etc/init.d/openca restart

Selesai

Demikian lah langkah-langkah singkat untuk membangun Public Key Infrastructure dengan OpenCA. Langkah-langkah yang ada pada tutorial ini kebanyakan masih merupakan langkah-langkah default, belum ada modifikasi lebih lanjut lagi. Apabila ada kesalahan atau kekurangan pada post ini, bisa ditinggalkan pada bagian komentar ;-)

 

Be Sociable, Share!

0
comments

Reply

[+] kaskus emoticons nartzco