Install SSL di nginx dengan Lets Encrypt

Topik blog saat ini akan menjelaskan bagaimana cara memasang SSL pada nginx (dibaca engine X). Sebelumnya saya beritahu, topik ini adalah lanjutan dari Setup Nginx Proxy remote server.

Sebenarnya cara memasang SSL dengan lets encrypt bisa dilakukan dengan 2 metode. Metode pertama adalah verifikasi DNS kemudian metode kedua adalah install lewat SSH menggunakan command line. Saya agak males setting DNS, mending cari yang gampang aja, yaitu tinggal ketik di command line. Seperti yang saya katakan, topik ini lanjutan dari sebelumnya, bertujuan untuk mengaktifkan fitur SSL pada CDN server nginx kita.

Tidak perlu repot

Dalam hal ini, jika kita menggunakan CDN / load balancer web kita enggak perlu susah payah install SSL di sisi server origin. Hanya perlu install / tempel SSL di server nginx saja.

Install Lets Encrypt

Kita install git dulu biar bisa clone dari repository.

yum install git

Kita install di temporary direktori aja

git clone https://github.com/letsencrypt/letsencrypt /opt/letsencrypt

Buat cert SSL

Nah sekarang kita buat SSL cert dulu. Pertama, kita ke folder temporary tadi kita clone dari github. Di sini kamu punya pilihan, mau mengeluarkan SSL untuk domain apa dan subdomain apa.

Perlu diingat, Lets Encrypt enggak bisa mengeluarkan wild card SSL, jadi harus di define satu per satu sub domain yang mau di buat SSL. Dalam hal ini saya butuh domain.lu dan www.domain.lu.

cd /opt/letsencrypt
./letsencrypt-auto certonly --standalone -d domain.lu -d www.domain.lu

Kemudian nanti akan ada konfirmasi embel-embel. Ya tinggal kamu pilih a (Agree) dan ditanya apakah email mau di share atau engga. Kalau saya pilih n (No). Jika lancar dan berhasil, SSL akan di install di /etc/letsencrypt/live/domain

Pada tahap ini saya pernah gagal, tapi saya lupa deh gagalnya karena apa. Mungkin jika teman-teman ada yang gagal bisa komentar dan kasih tau errornya apa nanti saya bantu.

Kalau tidak salah verifikasi dengan command line mengharuskan kita untuk mematikan nginx dulu, karena aplikasi Lets Encrypt akan telnet chanllange ke host tujuan. Jika port 80 bisa dibuka dari luar, maka SSL akan di proses. Maka dari itu kita stop dulu nginx.

service nginx stop

Kemudian kita jalankan

./letsencrypt-auto certonly --standalone -d domain.lu -d www.domain.lu

Setelah itu jangan lupa jalankan kembali nginx

service nginx start

Buat 1 certificate

Karena nginx sifatnya hanya mendefine SSL dalam 1 file certificate saja, kita perlu membuat 1 bundle cert file, ca, ca full chain dan embel-embel lainnya menjadi 1 cert file saja yang nantinya di define pada konfigurasi nginx.

cd /etc/letsencrypt/live/domain.lu

Di sana kamu akan melihat 4 file terdiri dari :

cert.pem
chain.pem
fullchain.pem
privkey.pem

Kita satukan semuanya dengan cara :

cat cert.pem chain.pem fullchain.pem > cert-bundle.pem

Jadi total ada 5 file termasuk file yang kita buat tadi cert-bundle.pem.

Sekarang kita ke config nginx.

cd /etc/nginx/conf.d/
vi domain.lu.conf

Kemudian kita lihat 2 baris ini. Lihat postingan sebelumnya, kan kita tandai sebagai pagar, sekarang kita lepas pagarnya. Lalu betulkan sesuai dengan file cert dari Lets Encrypt yang sudah kita buat tadi.

ssl_certificate /etc/letsencrypt/live/domain.lu/cert-bundle.pem;
ssl_certificate_key /etc/letsencrypt/live/domain.la/privkey.pem;

Jika sudah kita restart nginx

service nginx restart

Oke, we are good. Sekarang kamu mempunyai CDN yang berbasis SSL. Kamu bisa cek validitas dan status SSL di sslshopper.

Perlu kamu tahu

SSL Lets Encrypt hanya berlaku 90 hari. Setelah 90 hari maka SSL akan lenyap. Kamu harus memperbarui sebelum 90 hari. Kita bisa renew dengan cara :

/opt/letsencrypt/letsencrypt-auto renew

Kamu bisa pasang di crontab atau apalah. Tapi ingat, setiap renew SSL kita harus set ulang cert-bundle.pem tadi.

Leave a Reply

Your email address will not be published. Required fields are marked *