Ringkasan
Kami akan melalui langkah-langkah cara menginstal Let's Encrypt SSL di HAProxy. Selain menginstal dan mengonfigurasi haproxy dengan Let's encrypt certbot dan memperoleh ssl, kami juga akan membahas cara memperbarui sertifikat secara otomatis. Instruksi tertulis dilakukan pada server GNU/Linux (dalam hal ini Debian).
Prasyarat:
- HAProxy terpasang
- Cerbot terpasang
Catatan: HAProxy dan Certbot diinstal pada server yang sama dalam contoh ini.
Instal Let's Encrypt SSL di HAProxy
Konfigurasi SSL HAProxy
HAProxy perlu dikonfigurasi agar dapat memperoleh sertifikat SSL, artinya meneruskan permintaan Certbot dan menerapkan protokol HTTPS.
Salah satu contoh konfigurasinya terlihat seperti ini:
frontend haproxy
#public IP address binded
bind 123.123.123.123:80
bind 123.123.123.123:443 ssl crt /etc/ssl/example.com.pem
# HTTPS redirect
redirect scheme https code 301 if !{ ssl_fc }
mode http
default_backend test_site
acl letsencrypt-acl path_beg /.well-known/acme-challenge/
use_backend letsencrypt-backend if letsencrypt-acl
backend test_site
mode http
server test_site1 10.0.51.11:80 check inter 5s rise 3 fall 2
server test_site2 10.0.51.12:80 check backup inter 5s rise 3 fall 2
backend letsencrypt-backend
server letsencrypt 123.123.123.123:80
Dan kami akan melalui konfigurasi dan menjelaskannya.
Pertama kita mendefinisikan frontend haproxy:
frontend haproxy #public IP address binded bind 123.123.123.123:80 bind 123.123.123.123:443 ssl crt /etc/ssl/example.com.pem
Untuk contoh ini, di frontend kami mengikat alamat IP publik dan port 80 dan 443 untuk HTTP dan HTTPS. Alamat IP pribadi juga dapat diikat. Kami juga mendefinisikan
pada 443 port bind di mana sertifikat ssl berada di mesin server HAProxy kami dan nama file sertifikat ssl.
# HTTPS redirect redirect scheme https code 301 if !{ ssl_fc }
Perintah ini memaksa https redirect sepanjang waktu.
mode http default_backend test_site acl letsencrypt-acl path_beg /.well-known/acme-challenge/ use_backend letsencrypt-backend if letsencrypt-acl
Di sini kami telah menetapkan nama untuk server backend kami dan menginstruksikan Haproxy untuk menggunakan Let's encrypt server backend, yang juga ditentukan, jika mendeteksi tantangan utama dari Let's encrypt untuk nama domain.
backend test_site mode http server test_site1 10.0.51.11:80 check inter 5s rise 3 fall 2 server test_site2 10.0.51.12:80 check backup inter 5s rise 3 fall 2 backend letsencrypt-backend server letsencrypt 123.123.123.123:80
Untuk sisi backend, kami mendefinisikan dua server sebagai contoh yang akan bertindak sebagai server web untuk situs pengujian kami, tempat Haproxy dapat melacak dan memuat keseimbangan lalu lintas.
Juga, mari kita enkripsi server backend juga didefinisikan, yang merupakan server yang sama tempat kita menginstal Haproxy.
Memperoleh sertifikat SSL
Untuk mendapatkan sertifikat ssl dari Let's encrypt saat Haproxy aktif, jalankan salah satu dari dua perintah ini di server tempat Haproxy dan Certbot diinstal:
sudo certbot certonly --standalone --preferred-challenges http --http-01-address 123.123.123.123 --http-01-port 80 -d example.com --non-interactive --agree-tos --email [email protected] sudo certbot certonly --standalone --preferred-challenges http --http-01-port 80 -d example.com --non-interactive --agree-tos --email [email protected]
Pada dasarnya, kedua perintah melakukan hal yang sama dan Anda dapat mencoba salah satunya, kami baru saja menambahkan argumen perintah pertama dengan alamat IP publik, jika dalam beberapa kasus perintah kedua tidak berfungsi. Jadi, dalam perintah kami menyatakan tantangan mana yang akan digunakan, port mana yang akan didengarkan, kami menentukan nama domain yang certbot untuk meminta ssl, menyetujui TOS dan memberikan alamat email.
Saat Anda menjalankan salah satu dari perintah ini, cukup ganti example.com dengan domain yang Anda inginkan sertifikat sslnya, ganti alamat ip 123. dengan IP dari server Anda dan berikan email yang sah untuk mendapatkan notifikasi dari mari mengenkripsi .
Meskipun kami memperoleh sertifikat ssl dan valid, Haproxy tidak dapat menggunakannya. Agar Haproxy menggunakan sertifikat ssl dari Let's encrypt, sertifikat ssl harus disimpan dalam satu file. Haproxy mengharuskan sertifikat ssl berada dalam satu file.
Sertifikat dari Let's encrypt hadir dalam tiga file terpisah - file rantai penuh, kunci pribadi, dan sertifikat. Agar Haproxy menggunakan ssl dan https, cukup memiliki rantai penuh dan kunci pribadi dalam satu file. Kita dapat membuat satu file sertifikat ssl dan kemudian mengkonfigurasi Haproxy untuk menggunakannya. Kami dapat menyalin konten dari file sertifikat dan menyalinnya dalam satu file .pem yang akan menjadi sertifikat ssl kami untuk Haproxy.
Untuk mencapainya, kita dapat melakukannya dengan perintah seperti ini:
sudo cat "/etc/letsencrypt/live/example.com/fullchain.pem" "/etc/letsencrypt/live/example.com/privkey.pem" > "/etc/ssl/example.com.pem"
File sertifikat Let's Encrypt terletak di direktori Let's Encrypt. Setiap sertifikat ssl diatur dalam direktori bernama sebagai nama domain. Perintah ini mengambil konten sertifikat dan menempatkannya dalam satu file. Kemudian kita dapat memberitahu dan mengkonfigurasi Haproxy untuk menggunakan file ini, seperti pada konfigurasi di atas. Tentu saja, ganti example.com dengan nama domain Anda dan tambahkan di konfigurasi Haproxy lokasi file sertifikat ssl yang baru saja Anda buat seperti pada konfigurasi di awal posting.
Setelah ini dan setelah ditambahkan di file konfigurasi Haproxy lokasi sertifikat SSL yang akan digunakan, mulai ulang layanan Haproxy:
sudo systemctl restart haproxy.service
Perpanjangan otomatis sertifikat SSL HAProxy
Satu hal yang perlu dipertimbangkan saat menggunakan pengaturan semacam ini untuk Haproxy untuk menggunakan sertifikat SSL adalah bahwa dengan metode ini kami membuat file khusus untuk menggunakan sertifikat dan dengan metode ini, sertifikat SSL tidak akan diperbarui ketika kedaluwarsa. Nah, certbot akan memperbarui sertifikat dari Let's encrypt tetapi kemudian Haproxy tidak akan dapat menggunakan sertifikat baru.
Namun, kami masih dapat membuat pengaturan dengan certbot dan Haproxy untuk juga memperbarui sertifikat ssl untuk Haproxy. Untuk ini, kita perlu membuat skrip bash dan mengkonfigurasi cerbot untuk menggunakannya dan menjalankannya dengan post-hook setelah certbot memperbarui sertifikat dari Let's Encrypt. Let's Encrypt certbot secara default telah mengaktifkan pembaruan otomatis dan telah mengonfigurasi pekerjaan cron saat menjalankan pembaruan. Secara default, Let's Encrypt ssl berlangsung selama 3 bulan dan cerbot akan memperbarui sertifikat sebelum kedaluwarsa. Jadi, setup kami untuk pembaruan ssl untuk Haproxy adalah, ketika certbot memperbarui sertifikat ssl, itu akan menjalankan skrip bash post-hook kami, yang kami buat dan letakkan di direktori post-hook, sehingga Haproxy dapat menggunakan ssl baru sertifikat.
Skrip bash akan terlihat seperti ini:
#!/bin/bash sudo cat "/etc/letsencrypt/live/example.com/fullchain.pem" "/etc/letsencrypt/live/example.com/privkey.pem" > "/etc/ssl/example.com.pem" sudo systemctl restart haproxy.service
Ini pada dasarnya adalah dua perintah dari sebelumnya yang kami jalankan untuk membuat file sertifikat ssl khusus untuk digunakan Haproxy. Kami akan menempatkan skrip ini di direktori Let's encrypt post-hook dari direktori konfigurasi nama domain kami. Seperti pada gambar di bawah ini:
sudo touch /etc/letsencrypt/renewal-hooks/post/haproxy-ssl-renew.sh sudo nano /etc/letsencrypt/renewal-hooks/post/haproxy-ssl-renew.sh
Anda dapat membuat skrip dan menempelkan skrip dengan perintah ini.
Kemudian, pada file konfigurasi domain di Let's Encrypt, tambahkan parameter post_hook untuk menjalankan skrip bash yang kita buat:
sudo nano /etc/letsencrypt/renewal/example.com.conf
Di sini Anda dapat melihat bahwa kami menggunakan alat sh untuk menjalankan skrip kami. Itu salah satu cara untuk melakukannya. Tetapi Anda juga dapat membuat skrip tersebut dapat dieksekusi dengan Sudo chmod +x dan itu akan berfungsi dengan baik. Dan ini adalah langkah terakhir. Kami telah melakukannya.
Ringkasan
Kami telah membahas prosedur cara menginstal Let's Encrypt SSL di HAProxy dan cara melakukan pembaruan otomatis untuk haproxy dengan cerbot let'sencrypt juga. Setidaknya, salah satu cara bagaimana melakukannya. Jika Anda memerlukan informasi lebih lanjut untuk memahami cara kerja HAProxy, Anda dapat memeriksa posting ini di mana kami menjelaskan cara kerja haproxy dan melihat contoh konfigurasi, di mana kami menjelaskan konfigurasi secara rinci.
Terima kasih banyak atas waktunya…