Web dengan SSL saat ini bukan lagi buat gaya tapi sudah menjadi kebutuhan. Web wordpress yang memiliki SSL akan menaikkan ranking di hasil pencarian Google. Liat artikelnya disini. Karena itu, saya akan menjelaskan cara mememasang SSL pada WordPress di server VPS. VPS milik saya tidak punya cPanel karena ga mau kuat beli lisensi cPanel , sehingga untuk memasangnya saya harus menggunakan command line. Nah, begini caranya
Membuat File Key dan File CSR
- Login ke server VPS melalui terminal. Kalo kamu menggunakan Windows, bisa pake Putty. Kalo Mac bisa gunakan terminal.
- Masuk ke direktori home. Ketikkan perintah
cd ~
Misalnya direktori home adalah/home/agus
. Direktori ini akan kita perlukan untuk mengupload sertifikat SSL. - Buat Private Key dan file CSR (Certificate Signing Request)
openssl req -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
example.com bisa kamu ganti dengan nama domain milikmu. - Selanjutnya akan muncul pertanyaan yang harus kamu jawab.
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]:DKI Jakarta
Locality Name (eg, city) []:Jakarta
Organization Name (eg, company) [Internet Widgits Pty Ltd]: Nama Organisasimu
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:
Silahkan diisi pertanyaan ini dengan data-datamu. Tapi bagian yang paling penting adalah pertanyaan Common Name. Harus diisi dengan nama domain web wordpress yang akan diberi SSL. - Perintah
openssl
akan membuat file example.com.csr dan example.com.key. File tersebut berada di direktori/home/agus
. File example.com.key harus tetap disimpan di server. Kemudian file example.com.csr akan digunakan untuk membuat certificate SSL.
Membeli Sertifikat SSL
Pada tutorial ini, saya tidak menggunakan SSL yang free dari Let’s Encrypt, tapi saya membeli sertifikat dari Comodo SSL dengan harga 99 ribu di IdWebhost. Cukup murah menurut saya, jadi sekalian saja di beli. Untuk membeli sertifikat SSL, yang diperlukan adalah file csr yang sudah kita bikin sebelumnya yaitu file example.com.csr. Nama file akan berbeda sesuai dengan nama domainmu dan diakhir dengan extention dot csr. Berikut ini adalah contoh interface pembelian SSL dari IdWebhost.
Tampilan contoh pembelian SSL mungkin akan berbeda jika membelinya di tempat lain. Tapi prinsipnya sama, sertifikat SSL harus disesuaikan dengan jenis web server yang kamu gunakan, apache atau Nginx atau web server lainnya. Dan kamu juga memerlukan file example.com.csr saat akan membuat sertifikat SSL. Jika kamu bingung, bisa minta bantuan dari penyedia SSL. Saya menggunakan IDWebhost karena menurut saya responnya cepat jika diminta bantuan dan yang penting adalah bisa pake bahasa indonesia 😀 . Kan susah untuk urusan teknis kayak gini pake bahasa inggris.
Validasi Sertifikat SSL
Setelah membeli sertifikat SSL, maka langkah berikutnya adalah melakukan validasi. Validasi ini bisa melalui email atau validasi domain. Secara otomatis, Certificate Authority (atau disingkat CA) akan mengirim file sertifikat SSL ke email admin@nama-domain.com. Tapi karena saya pake VPS server dan belum mensetting email dengan nama domain, jadi saya tidak bisa melakukan validasi melalui email.
Validasi yang saya pilih adalah validasi melalui domain. Saya cukup membuat CNAME record. Untuk value cname bisa kamu tanyakan ke penjual SSL. Di IdWebhost nilai host dan value bisa dilihat di gambar berikut
Waktu validasi tidak lama kok. Mungkin sekitar 45 menit sampai 1 jam. Jadi ini saatnya kamu ngopi dan istirahat sembari menunggu validasi 🙂
Jika validasi berhasil, maka sertifikat SSL akan dikirim ke email yang kamu gunakan saat register menjadi member di IdWebhost. Emailnya seperti ini
File yang dikirim biasanya terdiri dari 4 buah file yaitu. Tapi yang saya butuhkan adalah Intermediate CA Certificate dan PositiveSSL Certificate. Untuk Intermediate CA Certificate saya menggunakan versi domain validation. Nah, dua file itu harus kamu upload ke server dengan menggunakan FTP atau bisa juga dengan perintah scp
di terminal. Tapi saya pake Filezilla aja, biar gampang. 😛
Memasang Sertifikat SSL di Apache
Oke sekarang kita siapkan dulu senjatanya. Pada contoh ini, anggaplah
domainmu adalah example.com
direktori home adalah /home/agus
private key tersimpan di direktori /home/agus
dengan nama example.com.key
Positive SSL certificate tersimpan di direktori /home/agus
bernama example_com.crt
Intermediate CA Certificate tersimpan di direktori /home/agus
bernama DomainValidationSecureServerCA.crt
File konfigurasi virtual host yang digunakan adalah /etc/apache2/sites-available/000-default.conf
Kamu bisa merubah nama diatas sesuai dengan kondisimu.
- Upload file Positive SSL certificate dan Intermediate CA Certificate ke direktori yang sama dengan private key.
- Backup dulu file konfigurasi virtual host dengan nama
000-default.conf.orig
ketikkan perintahcd /etc/apache2/sites-available
cp 000-default.conf 000-default.conf.orig
- Edit file
000-default.conf
sudo nano 000-default.conf
Cari<VirtualHost *:80>
dan ganti menjadi<VirtualHost *:443>
kemudian tambahkan kodeServerName example.com
kemudian tambahkan baris berikut. Lokasi file bisa disesuaikan dengan kondisi servermu. Ini hanya sebagai contohSSLEngine on
SSLCertificateFile /home/agus/example_com.crt
SSLCertificateKeyFile /home/agus/example.com.keySSLCACertificateFile /home/agus/DomainValidationSecureServerCA.crt
simpan file tersebut dan keluar dari nano dengan menekan tombolCtrl + X
dan tombolY
Pada langkah ini kamu telah mengarahkan apache untuk menggunakan port 443 untuk SSL - Memaksa browser untuk menggunakan port 443. Secara default, web-mu masih akan menggunakan 80 dan port 443 secara bersamaan. Port 80 untuk web tanpa SSL dan port 443 untuk web dengan SSL. Oleh karena itu kamu perlu memaksa browser untuk menggunakan port 443. Edit file
000-default.conf
dengan perintahsudo nano 000-default.conf
kemudian masukkan baris dibawah ini dibagian paling atas file000-default.conf
<VirtualHost *:80>
ServerName example.com
Redirect permanent / https://example.com/
</VirtualHost>
simpan file tersebut dan keluar dari nano dengan menekan tombolCtrl + X
dan tombolY
- Jalankan modul SSL pada apache
sudo a2enmod ssl
- Restart apache
sudo service apache2 restart
Web wordpress milikmu seharusnya telah menggunakan https. Selamat ya 😀