Menambahkan HTTPS ke WordPress dengan AWS CloudFront

Kenapa harus menambahkan HTTPS ke situs WordPress mu?

HTTPS mengamankan data yang ditransfer pada jaringan dengan meng-enkripsi data tersebut sehingga intruder tidak dapat melihat dan mengubah data. Menambahkan HTTPS ke situs kita adalah hal yang penting, baik situs kita adalah sebuah web ecommerce besar maupun sebuah blog sederhana. Pada artikel ini akan dijelaskan cara untuk menambahkan HTTPS ke situs WordPress menggunakan Amazon CloudFront.

Kenapa menggunakan Amazon CloudFront?

Kita bisa mendapatkan sertifikat public SSL/TLS secara gratis yang disediakan oleh AWS. Ini bisa diintegrasikan dengan CloudFront. Kita dapat menggunakan CloudFront secara gratis untuk satu tahun, karena Amazon menawarkan AWS Free Usage Tier untuk satu tahun. Info lebih lanjut tentang CloudFront pricing di sini. Selain itu CloudFront juga berperan sebagai CDN yang berarti dapat meningkatkan kecepatan memuat website kita.

Lihat diagram berikut ini.

WordPress CloudFront Network Diagram

Request dari user diterima oleh CloudFront. Apabila cache tersedia, cache akan dikembalikan ke user. Kalau cache tidak ada, CloudFront akan mengambil resource terbaru dari WordPress. Kita mengarahkan subdomain www ke alamat CloudFront dan subdomain lain seperti origin ke alamat server WordPress.

Langkah-langkah nya:

1. Install AWS for WordPress Plugin

Ada sebuah plugin yang dapat membantu kita melakukan ini. Install dan aktifkan plugin AWS for WordPress Plugin.

AWS for WordPress plugin

Kita akan ke sini lagi nanti. Sekarang kita perlu membuat AWS IAM dulu.

2. Buat AWS IAM

  • Buka IAM dashboard Klik Services lalu cari IAM dan klik. Lalu klik Users
  • Klik Add User
    IAM dashboard
  • Masukkan User name. Pilih type Programmatic access
    Add IAM User
  • Set permission Klik Attach existing policies directly. Cari AWSForWordPressPluginPolicy dan centang checkbox nya.
    Attach AWSForWordPressPluginPolicy
  • Tambahkan tag (optional)
  • Klik Create
  • Download credential dan simpan dengan aman
    Download credential

3. Setup plugin AWS for WordPress

  • Buka halaman admin WordPress
  • Buka halaman plugin AWS for WordPress, masukkan IAM access key
    Input key to AWS for WordPress plugin
  • Klik Save
  • Buka halaman CloudFront pada plugin dengan mengklik CloudFront di sidebar
    Setup WordPress plugin
  • Masukkan Origin Domain Name dan CloudFront Alternate Domain Name. Origin Name mengarahkan ke alamat server WordPress, sedangkan CloudFront Alternate Domain Name mengarahkan ke alamat CloudFront
  • Klik Initiate Setup Plugin akan membuat sertifikat untuk situs kita di ACM (AWS Certificate Manager), lalu membuat CloudFront distribution.
  • Certificate validation
    Certificate Validation
    Kita perlu menambahkan record tersebut di DNS record kita.
  • Setelah DNS record ditambahka, klik Check status of SSL/TLS certificate. Kalau sertifikat sudah divalidasi, plugin akan membuat CloudFront distribution. Kita perlu menunggu sebentar sampai proses ini selesai.
  • Arahkan subdomain www ke alamat CloudFront
    CloudFront Validation

4. Ubah CloudFront Origin Protocol Policy

Kita perlu mengubah origin protocol policy di CloudFront menjadi HTTP Only karena server WordPress kita hanya menghandle HTTP request.

  • Buka dashboard CloudFront di AWS console. Bisa search CloudFront di search bar.
  • Klik CloudFront distribution mu, kemudian klik tab Origin and Origin Group.
    CloudFront dashboard
  • Centang origin, kemudian klik Edit
    CloudFront dashboard
  • Ubah origin protocol policy ke HTTP Only, kemudian klik Yes, edit. Tunggu sebentar sampai perubahan tadi sudah deployed.

5. Update wp-config.php

Buka file wp-config.php. Tambahkan line dibawah ini sebelum require_once ABSPATH . 'wp-settings.php';

$_SERVER['HTTPS']='on';

6. Pastikan DNS record mu sudah sesuai

Pastikan kalau www sudah diarahkan ke alamat CloudFront dan origin ke alamat WordPress.

Sudah selesai. Sekarang situs WordPress mu sudah bisa diakses menggunakan HTTPS. Berikan komentar kalau menemukan masalah atau kesulitan.


See also