Cara Memasang SSL Pada WordPress di Web Server Apache

ssl-certificate

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

  1. Login ke server VPS melalui terminal. Kalo kamu menggunakan Windows, bisa pake Putty. Kalo Mac bisa gunakan terminal.
  2. Masuk ke direktori home. Ketikkan perintah
    cd ~
    Misalnya direktori home adalah /home/agus. Direktori ini akan kita perlukan untuk mengupload sertifikat SSL.
  3. 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.
  4. 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.
  5. 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.
membeli-sertifikat-ssl

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
validasi-domain-cname-record

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
sertifikat-ssl-di-email
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.

  1. Upload file Positive SSL certificate dan Intermediate CA Certificate ke direktori yang sama dengan private key.
  2. Backup dulu file konfigurasi virtual host dengan nama 000-default.conf.orig ketikkan perintah
    cd /etc/apache2/sites-available
    cp 000-default.conf 000-default.conf.orig
  3. Edit file 000-default.conf
    sudo nano 000-default.conf

    Cari <VirtualHost *:80> dan ganti menjadi <VirtualHost *:443>

    kemudian tambahkan kode
    ServerName example.com

    kemudian tambahkan baris berikut. Lokasi file bisa disesuaikan dengan kondisi servermu. Ini hanya sebagai contoh
    SSLEngine on
    SSLCertificateFile /home/agus/example_com.crt
    SSLCertificateKeyFile /home/agus/example.com.key

    SSLCACertificateFile /home/agus/DomainValidationSecureServerCA.crt

    simpan file tersebut dan keluar dari nano dengan menekan tombol Ctrl + X dan tombol Y

    Pada langkah ini kamu telah mengarahkan apache untuk menggunakan port 443 untuk SSL
  4. 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 perintah
    sudo nano 000-default.conf

    kemudian masukkan baris dibawah ini dibagian paling atas file 000-default.conf
    <VirtualHost *:80>
    ServerName example.com
    Redirect permanent / https://example.com/
    </VirtualHost>


    simpan file tersebut dan keluar dari nano dengan menekan tombol Ctrl + X dan tombol Y
  5. Jalankan modul SSL pada apache
    sudo a2enmod ssl
  6. Restart apache
    sudo service apache2 restart

Web wordpress milikmu seharusnya telah menggunakan https. Selamat ya 😀

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: