Sertifikat SSL (Secure Socket Layer) atau yang dalam bahasa inggris dikenal dengan SSL Certificate adalah sebuah sertifikat berbentuk digital yang mengotektikasi identitas sebuah situs web dan mengenkripsi informasi yang dikirim ke server dengan menggunakan teknologi SSL. Enkripsi adalah proses pengacak data ke format undecipherable yang hanya dapat dikembalikan ke format yang dapat dibaca dengan kunci dekripsi yang tepat.
Dengan teknologi SSL, maka ketika ada pengguna internet yang mencoba mengirimkan informasi rahasia ke server web, browser pengguna tersebut akan otomatis mengakses sertifikat digital dan akan membuat koneksi aman. Salah satu cirinya adalah dengan adanya tanda kunci gembok yang terdapat disebelah kiri URL situs yang bersangkutan.
Karena sertifikat adalah sebuah identitas, maka dalam cara pembuatannya, anda bisa menggunakan sertifikat yang ditandatangani oleh otoritas yang berwenang atau anda dapat juga membuat sertifikat yang ditandatangani oleh anda sendiri (self signed).
Sertifikat yang ditandatangani oleh otoritas ini merupakan sertifikat berbayar yang banyak dijual oleh para reseller. Anda bisa membelinya dengan variasi harga yang berbeda-beda, dari puluhan bahkan sampai ratusan dollar pertahun dapat anda habiskan untuk membeli sertifikat jenis ini.
Sertifikat yang ditandatangani oleh otoritas yang berwenang ini memerlukan proses verifikasi data terlebih dahulu. Yang terendah adalah verifikasi domain yang digunakan untuk memverifikasi bahwa anda benar-benar mempunyai kontrol terhadap domain tersebut. Verifikasi yang lebih rumit seperti verifikasi dokumen-dokumen resmi dan lain-lain, akan dibutuhkan jika anda membeli sertifikat dengan tingkat yang lebih tinggi lagi.
Adapun sertifikat yang ditandatangani sendiri (self signed) adalah sertifikat gratis yang dapat dibuat oleh siapa saja dan kapan saja, tanpa memerlukan proses verifikasi data terlebih dahulu.
Secara teknis, tidak ada perbedaan yang mencolok antara sertifikat self signed dengan sertifikat berbayar dalam hal keamanan yang diberikan keduanya. Hanya saja, tingkat kepercayaan (trust) terhadap sertifikat berbayar (komersil) jauh lebih tinggi dibandingkan dengan tingkat kepercayaan terhadap self signed certificate.
Sertifikat berbayar akan anda perlukan jika anda membutuhkan trust yang lebih dari para pengguna internet, terutama pada saat anda membuat website toko online yang melakukan proses pembayaran secara langsung melalui kartu kredit, paypal dan metode pembayanan online lainnya. Sementara jika hanya untuk keperluan internal organisasi, internal perusahaan dan internal lainnya, penggunaan self signed certificate sudah lebih dari cukup.
Selanjutnya dalam artikel ini, saya akan menyimpan dokumentasi pribadi bagaimana cara membuat sertifikat SSL sendiri (self signed certificate) pada web server nginx di Ubuntu 14.04, yang mudah-mudahan dokumentasi saya dibawah ini dapat anda jadikan pula sebagai panduan pada saat anda akan membuat SSL Certificate sendiri :
- Install Nginx
Berhubung saat ini web server yang saya bahas adalah nginx, maka pastikan anda sudah menginstall nginx di Ubuntu anda. Lihat cara install nginx di artikel cara install LEMP di Ubuntu 14.04. - Membuat Direktori Baru
Buatlah direktori baru yang akan digunakan untuk menyimpan file sertifikat SSL anda :sudo mkdir /etc/nginx/ssl
- Masuk ke Direktori Baru
Silahkan masuk ke direktori yang baru saja anda buat :cd /etc/nginx/ssl
- Membuat server.key :
Anda akan diminta untuk memasukkan password (passphrase), silahkan anda buat saja dengan memasukkan data passphrase yang ingin anda buat. Jangan lupa verifikasi dengan memasukkan passphrase yang sama. Jangan sampai lupa passphrase yang anda buat. Jika sampai lupa, anda tidak akan bisa mengakses sertifikat anda.sudo openssl genrsa -des3 -out server.key 2048
- Membuat Permintaan Sertifikat :
sudo openssl req -new -key server.key -out server.csr
Dengan command diatas, anda akan diminta untuk memasukkan passphrase yang anda buat, lalu diminta mengisi data-data yang diperlukan. Pastikan anda mengisi data tersebut, Dan pada bagian “Common Name”, silahkan anda isi dengan domain anda, misal dedeerik.com. Jika anda belum mempunyai domain, silahkan anda isi saja dengan IP server anda. Untuk bagian challenge password dan optional company name, biarkan saja kosong dan enter.
You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [AU]:ID State or Province Name (full name) [Some-State]:Jawa Barat Locality Name (eg, city) []:Ciamis Organization Name (eg, company) [Internet Widgits Pty Ltd]:Ibeka Company Organizational Unit Name (eg, section) []:Unit IT Common Name (e.g. server FQDN or YOUR name) []:dedeerik.com Email Address []:[email protected]
- Hapus Passphrase
Jika anda tidak menghapusnya, maka setiap kali anda restart nginx web server, anda akan selalu diminta untuk memasukkan password passphrase yang sudah anda buat diatas. Silahkan gunakan perintah :sudo cp server.key server.key.org
sudo openssl rsa -in server.key.org -out server.key
- Tanda Tangan Sertifikat
Silahkan tandatangani sertifikat yang sudah anda buat. Anda bisa menentukan seberapa lama sertifikat tersebut berlaku. Saya membuatnya untuk berlaku selama satu tahun (356 hari). Silahkan anda rubah angka 356 pada command dibawah, sesuai dengan masa berlaku yang anda inginkan. Misalnya, jika anda ingin membuatnya berlaku 10 tahun, maka anda rubah menjadi 3560.sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
- Mengatur Konfigurasi Nginx VirtualHosts
Supaya sertifikat SSL yang anda buat dapat digunakan, silahkan anda aktifkan port 443 dan masukkan lokasi sertifikat SSL anda di konfigurasi virtualhosts nginx anda :sudo nano /etc/nginx/sites-available/example.com
Ganti example.com dengan nama file virtualhosts anda. Pastikan anda sudah membuat virtualhosts (server blocks). Jika belum, silahkan lihat contohnya di cara install wordpress dengan nginx di ubuntu. Selanjutnya tambahkan baris-baris berikut di file konfigurasi virtualhosts situs anda :
listen 443; ssl on; ssl_certificate /etc/nginx/ssl/server.crt; ssl_certificate_key /etc/nginx/ssl/server.key;
- Pastikan virtualhosts yang anda buat juga sudah aktif. Jika belum, silahkan aktifkan dengan menggunakan link simbolik seperti :
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com - Restart nginx dengan command :
sudo service nginx restart
Cara membuat sertifikat SSL dan memasukkannya ke konfigurasi virtualhosts nginx sudah berhasil. Silahkan anda akses domain atau IP server anda di browser dengan menggunakan https://. Contoh https://www.dedeerik.com atau https://123.456.67.89.
Penggunaan SSL Certificate ini selain akan mendapatkan koneksi yang aman, juga akan bermanfaat untuk meningkatkan SEO website anda. Hal tersebut dikarenakan google sebagai search engine terpopuler saat ini, telah memasukkan SSL certificate sebagai salah satu faktor penilaian untuk mendapatkan ranking baik di halaman pencarian google.
Catatan :
- Anda akan mendapatkan peringatan dari browser yang anda gunakan pada saat pertama kali mengakses halaman https anda. Ini dikarenakan browser tidak mengenali otoritas yang memberikan tandatangan pada sertifikat yang anda gunakan. Harap anda abaikan saja peringatan tersebut.
- Apabila anda ingin membuat sertifikat dari pihak ketiga seperti Comodo SSL, silahkan buka file server.csr dengan perintah cat, lalu masukkan semua kontent yang ada didalamnya ke kotak yang disediakan oleh pihak Comodo. Jika anda sudah mendapatkan sertifikatnya, tinggal simpan saja di direktori /etc/nginx/ssl/. Buatlah file baru namafile.crt dengan menggunakan editor pilihan yang biasa anda gunakan. Arahkan letak file tersebut pada konfigurasi virtualhostsnya.