Cara Install SSL Sertifikat Let’s Encrypt Di NginX

Yusuf  
Sep 24, 2019 · 7 minutes read

Dulu sertifikat SSL adalah barang mahal. Kini tidak lagi. Sekarang pemilik website bisa menikmati HTTPS yang sepenuhnya gratis namun dengan sertifikasi yang bisa dipercaya yaitu menggunakan Let’s Encrypt.

Let’s Encrypt merupakan Certificate Authority yang menawarkan sertifikat SSL yang valid tanpa bayar alias gratis.

Tetapi ada satu masalah yakni proses pemasangannya sedikit sulit—terutama jikalau anda tidak pengalaman mengeksekusi barisan perintah di server anda.

Namun begitu, janganlah khawatir.

Di Dubidam, kami telah berhasil melakukan beberapa kali install untuk server Nginx dan karena itulah kami akan bagikan langkah-langkahnya untuk anda ikuti.

Kami telah mencoba nyaris semua metoda yang tersedia dan terbukti berfungsi untuk memasang Let’s Encrypt di NginX, dan sejauh ini ada 4 metoda, dan semuanya akan di ekspos di halaman ini.

Namun sebelum itu mari kita pelajari terlebih dahulu bagaimana Let’s Encrypt menerbitkan sebuah sertifikasi SSL.

Bagaimana Let’s Encrypt menerbitkan sertifikasi?

Tidak seperti layanan SSL lainnya, dimana mereka meminta informasi pendaftaran untuk perusahaan atau organisasi, namun Let’s Encrypt hanya perlu pembuktian kepemilikan sah dari domain yang didaftarkan. Itu saja.

Dan hal itu bisa dilakukan dalam dua cara berikut ini.

  • Anda memiliki akses ke root dokumen dari HTTP domain anda.
  • Anda dapat meng-edit DNS dari domain anda.

Dalam banyak kasus, saya memilih metoda pertama dikarenakan semua webmaster pasti dapat mengakses file-file domain mereka. Untuk metoda yang satu ini terdiri dari 4 langkah.

  1. Server anda akan memberitahu server Let’s Encrypt bahwa si server membutuhkan sertifikat untuk domain anda.
  2. Kemudian Let’s Encrypt akan mengirimkan sebuah file dan meminta agar file tersebut diletakan di lokasi ini //nama-domain-anda.com/.well-known/FILE. Proses ini sebagai pembuktian bahwa anda pemilik syah dari domain tersebut.
  3. Setelah file telah anda taruh ditempat yang diharuskan, maka selanjutnya anda perlu membuat sebuah CSR (Certificate Signing Request) dan kemudian mengirimkannya ke server Let’s Encrypt.
  4. Selanjutnya pihak Let’s Encrypt akan memverifikasi semua file tersebut, dan mengirimkannya kembali ke Sertifikat baru it. Dan harus diletakan ke dalam setelan / setting Nginx.
Proses Pembuatan SSL Sertifikasi Dengan Let's Encrypt
Proses Pembuatan SSL Sertifikasi Dengan Let’s Encrypt

Client Let’s Encrypt berjalan pada privileges “root”, yang hanya bisa dilakukan oleh pemilik domain.

Kini mari kita susuri bagaimana hal ini bisa dilakukan di server Nginx.

Cara install SSL Let’s Encrypt di Server Nginx

Disini kita bisa mengikuti seluruh langkah komplit tanpa ketinggalan yang bisa diikuti oleh semua orang untuk memasang sertifikasi SSL Let’s Encrypt di server berbasis Nginx.

Memasang SSL Let’s Encrypt di server Nginx

Let’s Encrypt menerima permintaan sertifikasi dalam bahasa—yang disebut—ACME (Automated Certificate Management Environment).

Maka kini tugas pertama yang harus dilakukan ialah mendapatkan software yang dapat berkomunikasi dalam protokol ACME.

Script yang sering saya gunakan adalah Electronic Frontier Foundation’s Certbot.

Oleh karena itu, langkah pertama yang perlu kita lakukan adalah menginstal Certbot.

1. Install Certbot

CertBotmembutuhkan banyak paket di versi terbaru mereka agar dapat berfungsi dengan benar. Maka sekarang silahkan update paket-paket anda dengan kode perintah berikut:

# yum -y update

Nah sekarang, install repository EPEL (Extra Packages for Enterprise Linux), untuk menyediakan paket Python terbaru bagi CertBot.

# yum -y install epel-release

Catatan: Jikalau server anda dikonfigurasi secara custom, maka jika terjadi upgrade bisa merusak website anda. Oleh karenanya jika terjadi hal seperti itu silahkan konsultasikan kepada pihak yang ahli.

Kemudian, install dan konfigur Certbot. CertBot tersedia dalam repository CentOS 7 EPEL. Maka jikalau anda menggunakan CentOS 7, kini instal CertBot dengan kode perintah berikut:

# yum -y install certbot

Sedangkan apabila anda menggunakan CentOS 6, maka anda perlu download dan membuatnya dapat dieksekusi dengan kode perintah berikut ini:

# wget //dl.eff.org/certbot-auto
# chmod 755 certbot-auto

Namun apabila anda menggunakan server Ubuntu / Debian, maka bisa gunakan kode perintah berikut untuk instal CertBot:

# add-apt-repository ppa:certbot/certbot
# apt-get update
# apt-get install python-certbot-nginx

2. Menciptakan sertifikat menggunakan Certbot

Pada titik ini, saya sudah menganggap anda sudah memasang dan memiliki sebuah domain aktif.

Sebagai contoh saja, disini saya memakai “blog.dubidam.id”.

Konfigurasi file untuk “blog.dubidam.id” berlokasi di: /etc/nginx/conf.d/blog.dubidam.id.conf.

Kini jalankan sertifikat menggunakan kode perintah berikut ini:

# certbot --nginx -d blog.dubidam.id

Ganti nama “blog.dubidam.id” dengan nama domain anda.

Akan muncul tampilan seperti pada gambar berikut ini:

Cara Instal SSL Let's Encrypt Di Server NginX
Cara Instal SSL Let’s Encrypt Di Server NginX

Konfigurasi file Nginx anda yang berlokasi di /etc/nginx/conf.d/<domain-name>.conf akan secara otomatis dikonfigurasi ulang untuk SSL oleh CertBot dengan menambahkan barisan kode berikut ini:

listen 443 ssl; # managed by Certbot

# RSA certificate
 ssl_certificate /etc/letsencrypt/live/blog.dubidam.id/fullchain.pem; # managed by Certbot
 ssl_certificate_key /etc/letsencrypt/live/blog.dubidam.id/privkey.pem; # managed by Certbot

include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

# Redirect non-https traffic to https
 if ($scheme != "https") {
 return 301 //$host$request_uri;
 } # managed by Certbot

Bagaimana jika langkah ini tidak berhasil?

Dalam beberapa server, kami dapati bahwa pembuatan sertifikasi otomatis gagal dikarenakan masalah izin, masalah jaringan atau error lainnya.

Jika anda mengalami hal tersebut, maka kita bisa tempuh cara berikut untuk memperbaikinya.

Sebagai contoh, kami melewati konfigurasi ulang Nginx secara otomatis, dan mendapatkan sertifikasi menggunakan perintah berikut:

certbot certonly --webroot -w /var/www/blogbob -d blog.dubidam.id

Selanjutnya kita mengecek semua catatan untuk melihat apakah ACME Challenge berhasil ditaklukan, dengan melihat hasilnya berikut ini.

[root@www ~]# awk '$7~/acme-challenge/ {print $1,$4,$7,$9,$11}' /var/log/nginx/access.log

66.133.109.36 06/Feb/2018:06:52:38 /.well-known/acme-challenge/XQE2Py_9isaJTQ_QU1poWu3UJYBJwYCkxS3DwlCxAeg 200
 (Let's Encrypt validation server; +//www.letsencrypt.org)

Status “200” berarti permintaan kita disetujui, dan file-file sertifikasi telah dibuat di dalam folder: “/etc/letsencrypt/live/blog.dubidam.id”.

Maka domain harus dikonfigurasi-ulang secara manual untuk SSL, seperti ini.

server {
 listen 443 ssl;
 server_name blog.dubidam.id;
ssl_certificate /etc/letsencrypt/live/blog.dubidam.id/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.dubidam.id/privkey.pem;
}

Pada tahap ini, konfigurasi Let’s Encrypt telah selesai, dan jikalau anda melakukannya dengan benar maka anda akan mendapati sukses seperti domain blog.dubidam.id seperti ini:

Cara Instal SSL Let's Encrypt
Hasil Instal SSL Let’s Encrypt

Jikalau hasil yang anda dapat tidak seperti pada gambar, itu artinya anda gagal melakukannya, maka proses membangun sertifikasi harus dianalisis dan diidentifikasi.

3. Perbarui sertifikat SSL

Sertifikasi Let’s Encrypt berakhir setelah 90 hari. Oleh karenanya adalah bagus jika mengatur pembaharuan otomatis untuk SSL anda dengan menambahkan sebuah cron job berikut ini:

certbot renew --quiet

Perintah di atas akan membuat pembaruan otomatis sebelum masa berakhirnya SSL, dan hasilnya website anda akan terus terjaga keamanannya.

Sejumlah masalah yang mungkin terjadi pada pengaturan Let’s Encrypt

Inilah masalah yang biasa muncul, yang bisa mencederai proses pemasangan SSL anda.

  1. Domain tidak dapat terhubung dengan server – Pastikan domain terhubung dengan benar dan DNS record telah diatur dengan tepat.
  2. Kegagalan instalasi paket dikarenakan error dependency – Konflik selama instalasi paket harus diperbaiki dengan menginstal versi yang benar dari repository yang tepat. Bukan dari sumber yang tidak kredibel, pastikan paket instalasi sertifikasi dari sumber terpercaya.
  3. Domain tidak dapat diunggah oleh browser – File-file konfigurasi Nginx harus diupdate dengan benar menggunakan root dokumen, lokasi file SSL dan pengaturan izin yang tepat.

Kesimpulan….

Let’s Encrypt merupakan penyedia SSL gratis, namun memasang sertifikasi untuk Nginx bisa sedikit menyulitkan. Sekarang, kita telah berhasil memasang sertifikasi TLS gratis oleh Let’s Encrypt Certification Authority dengan cara otomatis menggunakan Certbot dalam sebuah server yang berjalan di server web NginX.

Dubidam.id membantu bisnis semua skala untuk mendapatkan keamanan kelas dunia dan uptime, menggunakan solusi yang sudah dicoba dan dites. Dan jikalau anda memiliki pertanyaan mengenai cara instal SSL Let’s Encrypt di Nginx maka silahkan tulis saja di area komentar.

Tinggalkan komentar