Cara Install SSL Let’s Encrypt Wildcard di Nginx + Cloudflare

Cara Install SSL Let's Encrypt Wildcard di Nginx + Cloudflare

SSL wildcard adalah tipe sertifikat SSL yang dapat digunakan untuk domain dan seluruh subdomainnya. Jadi dengan SSL wildcard kita tidak perlu lagi membuat sertifikat SSL untuk setiap subdomain, cukup satu sertifikat SSL.

SSL yang diterbitkan oleh Let’s Encrypt sudah mendukung wildcard. Tetapi konfigurasi SSL wildcard berbeda dengan non-wildcard, perlu melakukan konfigurasi tambahan di DNS record.

Di bawah ini adalah contoh permintaan SSL untuk domain.com dan www.domain.com yang terpasang di Nginx web server.

Install SSL non-wildcard sangat mudah, tetapi ketika ingin install SSL untuk subdomain lain kita harus melakukan permintaan untuk subdomain tersebut.

certbot memiliki fitur expand di mana kita bisa memperbarui SSL dan memasukkan subdomain yang baru, sehingga cukup menggunakan satu sertifikat SSL saja.

Tetapi expand SSL masih harus dilakukan berulang kali ketika ada subdomain baru yang ingin diinstallkan SSL. Apalagi jika mengimplementasikan dynamic domain di aplikasi, subdomain akan terus bertambah.

Contoh implementasi dynamic domain, setiap user yang terdaftar di aplikasi memiliki halaman profil sendiri yang URL aksesnya menggunakan subdomain. Seperti WordPress multisite tipe subdomain, user1.domain.com, user2.domain.com, dst. User bertambah, subdomain juga bertambah. Sehingga setiap subdomain baru harus diinstallkan SSL.

Jadi solusi untuk masalah seperti ini adalah menggunakan SSL wildcard. Cukup satu SSL yang dapat digunakan untuk domain dan sebanyak apapun subdomainnya.

Tutorial Environment

Spesifikasi dan konfigurasi yang digunakan di tutorial ini:

  • Server: VPS Ubuntu 20.04
  • IP server: 188.166.229.126
  • Web server: Nginx
  • SSL: Let’s Encrypt
  • Domain: domain.com, sub.domain.com
  • DNS server: Cloudflare

DNS Record

Login Cloudflare, arahkan domain ke IP server terlebih dahulu dengan melakukan konfigurasi DNS record. DNS record yang terpasang harus DNS only, karena ingin menggunakan SSL dari Let’s Encrypt.

  • Type = A, Name = domain.com, Target = 188.166.229.126
  • Type = CNAME, Name = www, Target = domain.com
  • Type = CNAME, Name = sub, Target = domain.com

Cloudflare API Token

Klik My Profile->API Tokens->Create Token.

Klik Use template (Edit zone DNS).

Zone Resources, pilih domain yang mau digunakan atau diatur DNS recordnya.

Client IP Address Filtering, Is in, Value masukkan IP server.

Lalu Continue to summary, Create Token.

Create Cloudflare API Token
Create Cloudflare API Token

Copy API token yang ditampilkan.

Untuk menguji API token copy perintah CURL dan jalankan di server. Jika berhasil, ditampilkan pesan This API Token is valid and active. Jika gagal, Invalid format for Authorization header.

Klik View all API tokens untuk menampilkan daftar API token.

Klik Roll untuk menampilkan kembali API token.

Cloudflare API Token
Cloudflare API Token

Login SSH ke server.
Membuat folder dan file untuk menyimpan Cloudflare API token.

Masukkan konfigurasi API token.

Install certbot

Install certbot via snap.

Request SSL

Melakukan permintaan SSL dengan melakukan verifikasi domain di DNS Cloudflare.

Masukkan alamat email untuk menerima notifikasi ketika SSL akan habis masa berlakunya, perlu dilakukan pembaruan SSL.

Jawab ‘Y (Yes)’ untuk menyetujui Terms of Service.

Jawab ‘N (No)’ jika tidak ingin dikirimkan informasi ke email.

Permintaan SSL berhasil, tersimpan di folder /etc/letsencrypt.

Pengujian

Install Nginx web server.

Membuat konfigurasi server block untuk domain.com.

Masukkan konfigurasi server block domain.com.

Membuat konfigurasi server block untuk sub.domain.com.

Masukkan konfigurasi server block sub.domain.com dengan tetap memakai sertifikat SSL yang sama dengan domain utama.

Membuat folder document root dan file index.html.

Restart nginx service.

Tes browse https://domain.com dan https://sub.domain.com.

Selamat mencoba 🙂

Leave a Reply