Cara Mengaktifkan SSL Pada Https Nginx dengan Let's Encrypt di CentOS 7

6 minute read

Cara Mengaktifkan SSL Pada Https Nginx dengan Let's Encrypt di CentOS 7

Introduction

Let's Encrypt adalah Certificate Authority (CA) baru yang menyediakan cara mudah untuk mendapatkan dan menginstal sertifikat TLS / SSL gratis, sehingga memungkinkan HTTPS terenkripsi di server web. Ini menyederhanakan proses dengan menyediakan klien perangkat lunak, Certbot, yang mencoba untuk mengotomatisasi sebagian besar (jika tidak semua) dari langkah-langkah yang diperlukan. Saat ini, seluruh proses mendapatkan dan menginstal sertifikat sepenuhnya otomatis pada server web Apache dan Nginx.

Dalam tutorial ini, kami akan menunjukkan kepada Anda cara menggunakan klien certbot Let's Encrypt untuk mendapatkan sertifikat SSL gratis dan menggunakannya dengan Nginx di CentOS 7. Kami juga akan menunjukkan kepada Anda cara memperbarui sertifikat SSL Anda secara otomatis.

Prerequisites

Sebelum mengikuti tutorial ini, Anda akan membutuhkan beberapa hal.

  • Server CentOS 7 dengan pengguna non-root yang memiliki hak istimewa sudo. Anda dapat mempelajari cara mengatur akun pengguna tersebut dengan mengikuti langkah 1-3 dalam pengaturan server awal kami untuk tutorial CentOS 7.
  • Anda harus memiliki atau mengontrol nama domain terdaftar yang ingin Anda gunakan sertifikatnya. Jika Anda belum memiliki nama domain terdaftar, Anda dapat mendaftarkannya dengan salah satu dari banyak pendaftar nama domain di luar sana (misalnya Namecheap, GoDaddy, dll.).
  • Catatan DNS A yang mengarahkan domain Anda ke alamat IP publik server Anda. Ini diperlukan karena bagaimana Let's Encrypt memvalidasi bahwa Anda memiliki domain yang mengeluarkan sertifikat. Misalnya, jika Anda ingin mendapatkan sertifikat untuk example.com, domain itu harus diselesaikan ke server Anda agar proses validasi berfungsi. Pengaturan kami akan menggunakan example.com dan www.example.com sebagai nama domain, sehingga kedua catatan DNS diperlukan.

Setelah Anda memiliki semua prasyarat keluar dari jalan, mari kita beralih ke menginstal perangkat lunak klien Let's Encrypt.

Langkah 1 – Menginstal Klien Certbot Let's Encrypt

Langkah pertama untuk menggunakan Let's Encrypt untuk mendapatkan sertifikat SSL adalah menginstal perangkat lunak certbot di server Anda. Saat ini, cara terbaik untuk menginstal ini adalah melalui repositori EPEL.

Aktifkan akses ke repositori EPEL di server Anda dengan mengetik:

sudo yum install epel-release

Setelah repositori diaktifkan, Anda bisa mendapatkan paket certbot-nginx dengan mengetik:

sudo yum install certbot-nginx

Klien certbot Let's Encrypt sekarang diinstal dan siap digunakan.

Langkah 2 — Menyiapkan Nginx

Jika Anda belum menginstal Nginx, Anda dapat melakukannya sekarang. Repositori EPEL seharusnya sudah diaktifkan dari bagian sebelumnya, sehingga Anda dapat menginstal Nginx dengan mengetik:

sudo yum install nginx

Kemudian, mulai Nginx menggunakan systemctl:

sudo systemctl start nginx

Certbot dapat secara otomatis mengkonfigurasi SSL untuk Nginx, tetapi harus dapat menemukan blok server yang benar di konfigurasi Anda. Ini dilakukan dengan mencari arahan server_name yang sesuai dengan domain yang Anda minta sertifikatnya. Jika Anda memulai dengan instalasi Nginx baru, Anda dapat memperbarui file konfigurasi default:

sudo vi /etc/nginx/nginx.conf

Temukan baris server_name yang ada: /etc/nginx/sites-available/default

server_name _;

Replace the _ underscore with your domain name: /etc/nginx/nginx.conf

server_name example.com www.example.com;

Simpan file dan keluar dari editor Anda. Verifikasi sintaks suntingan konfigurasi Anda dengan:

sudo nginx -t

Jika itu berjalan tanpa kesalahan, muat ulang Nginx untuk memuat konfigurasi baru:

sudo systemctl reload nginx

Certbot sekarang akan dapat menemukan blok server yang benar dan memperbaruinya. Sekarang kami akan memperbarui firewall untuk memungkinkan mengakses menggunakan HTTPS.

Langkah 3 — Memperbarui Firewall

Jika Anda mengaktifkan firewall, pastikan port 80 dan 443 terbuka untuk lalu lintas masuk. Jika Anda tidak menjalankan firewall, Anda dapat melompat ke depan.

Jika Anda memiliki firewall firewall yang berjalan, Anda dapat membuka port ini dengan mengetik:

sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=https
sudo firewall-cmd --runtime-to-permanent

Jika firewall iptable berjalan, perintah yang perlu Anda jalankan sangat tergantung pada set aturan Anda saat ini. Untuk kumpulan aturan dasar, Anda dapat menambahkan akses HTTP dan HTTPS dengan mengetik:

sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT

Kami sekarang siap untuk menjalankan Certbot dan mengambil sertifikat kami.

Langkah 4 – Mendapatkan Sertifikat

Certbot menyediakan berbagai cara untuk mendapatkan sertifikat SSL, melalui berbagai plugin. Plugin Nginx akan mengurus konfigurasi ulang Nginx dan memuat ulang konfigurasi kapan pun diperlukan:

sudo certbot --nginx -d example.com -d www.example.com

Ini berjalan certbot dengan plugin --nginx, menggunakan -d untuk menentukan nama-nama yang kami ingin sertifikat itu valid.

Jika ini adalah pertama kalinya Anda menjalankan certbot, Anda akan diminta untuk memasukkan alamat email dan menyetujui persyaratan layanan. Setelah melakukannya, certbot akan berkomunikasi dengan server Let's Encrypt, kemudian menjalankan tantangan untuk memverifikasi bahwa Anda mengontrol domain yang Anda minta sertifikat.

Jika itu berhasil, certbot akan bertanya bagaimana Anda ingin mengkonfigurasi pengaturan HTTPS Anda:

Output
Please choose whether HTTPS access is required or optional.
-------------------------------------------------------------------------------
1: Easy - Allow both HTTP and HTTPS access to these sites
2: Secure - Make all requests redirect to secure HTTPS access
-------------------------------------------------------------------------------
Select the appropriate number [1-2] then [enter] (press 'c' to cancel):

Pilih pilihan Anda lalu tekan ENTER. Konfigurasi akan diperbarui, dan Nginx akan memuat ulang untuk mengambil pengaturan baru. certbot akan membungkus dengan pesan yang memberi tahu Anda bahwa prosesnya berhasil dan di mana sertifikat Anda disimpan:

Output
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at
/etc/letsencrypt/live/example.com/fullchain.pem. Your cert will
expire on 2017-10-23. To obtain a new or tweaked version of this
certificate in the future, simply run certbot again with the
"certonly" option. To non-interactively renew *all* of your
certificates, run "certbot renew"
- Your account credentials have been saved in your Certbot
configuration directory at /etc/letsencrypt. You should make a
secure backup of this folder now. This configuration directory will
also contain certificates and private keys obtained by Certbot so
making regular backups of this folder is ideal.
- If you like Certbot, please consider supporting our work by:

Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
Donating to EFF: https://eff.org/donate-le

Sertifikat Anda diunduh, diinstal, dan dimuat. Coba muat ulang situs web Anda menggunakan https:// dan perhatikan indikator keamanan browser Anda. Ini harus mewakili bahwa situs diamankan dengan benar, biasanya dengan ikon kunci hijau.

Langkah 5 - Memperbarui Parameter Diffie-Hellman

Jika Anda menguji server Anda menggunakan Uji Server SSL Labs sekarang, itu hanya akan mendapatkan nilai B karena parameter Diffie-Hellman yang lemah. Ini mempengaruhi keamanan pertukaran kunci awal antara server kami dan penggunanya. Kita dapat memperbaiki ini dengan membuat file dhparam.pem baru dan menambahkannya ke blok server kita.

Buat file menggunakan Openssl:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Ini akan memakan waktu cukup lama, hingga beberapa menit. Setelah selesai, buka file konfigurasi Nginx yang berisi blok server Anda. Dalam contoh kami, ini adalah file konfigurasi default:

sudo vi /etc/nginx/nginx.conf

Paste the following line anywhere within the server block: /etc/nginx/nginx.conf

. . .
ssl_dhparam /etc/ssl/certs/dhparam.pem;

Simpan file dan keluar dari editor Anda, lalu verifikasi konfigurasi:

sudo nginx -t

Jika Anda tidak memiliki kesalahan, muat ulang Nginx:

sudo systemctl reload nginx

Situs Anda sekarang lebih aman, dan harus menerima peringkat A.

Langkah 6 — Menyiapkan Perpanjangan Otomatis

Sertifikat Let's Encrypt hanya berlaku selama sembilan puluh hari. Hal ini untuk mendorong pengguna mengotomatiskan proses perpanjangan sertifikat mereka. Kita harus menyiapkan perintah yang dijalankan secara teratur untuk memeriksa sertifikat yang kedaluwarsa dan memperbaruinya secara otomatis.

Untuk menjalankan pemeriksaan perpanjangan setiap hari, kami akan menggunakan cron, layanan sistem standar untuk menjalankan pekerjaan berkala. Kami memberi tahu cron apa yang harus dilakukan dengan membuka dan mengedit file yang disebut crontab.

sudo crontab -e

Editor teks Anda akan membuka crontab default yang merupakan file teks kosong pada saat ini. Tempelkan di baris berikut, lalu simpan dan tutup:

. . .
15 3 * * * /usr/bin/certbot renew --quiet

Bagian 15 3 * * * * dari baris ini berarti "menjalankan perintah berikut pada pukul 3:15 pagi, setiap hari". Anda dapat memilih kapan saja.

Perintah perpanjangan untuk Certbot akan memeriksa semua sertifikat yang diinstal pada sistem dan memperbarui semua yang akan berakhir dalam waktu kurang dari tiga puluh hari. --quiet memberitahu Certbot untuk tidak menghasilkan informasi atau menunggu masukan pengguna.

Cron sekarang akan menjalankan perintah ini setiap hari. Semua sertifikat yang diinstal akan secara otomatis diperpanjang dan dimuat ulang ketika mereka memiliki tiga puluh hari atau kurang sebelum kedaluwarsa.

Conclusion

Dalam tutorial ini kami telah menginstal Let's Encrypt client certbot, mengunduh sertifikat SSL untuk domain kami, mengonfigurasi Nginx untuk menggunakan sertifikat ini, dan mengatur perpanjangan sertifikat otomatis. Jika Anda memiliki pertanyaan lebih lanjut tentang menggunakan Certbot, dokumentasi mereka adalah tempat yang baik untuk memulai.