GNU/Linux >> Belajar Linux >  >> Linux

Instal Let's Encrypt SSL di HAProxy

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…


Linux
  1. Cara Memasang Let's Encrypt SSL untuk NGINX di Rocky Linux 8

  2. Bagaimana Cara Menginstal Let's Encrypt (Certbot) di CentOS 8?

  3. Cara Menginstal Let's Encrypt SSL di Ubuntu 18.04 dengan Nginx

  1. Cara Menginstal Let's Encrypt SSL di Apache di Debian 11

  2. Cara Memasang Let's Encrypt SSL di Nginx di Debian 11

  3. Cara Memasang RainLoop Webmail dengan Let's Encrypt SSL Gratis di Ubuntu

  1. Cara Instal Nginx dengan Let's Encrypt di RHEL 8

  2. Cara Memasang Let's Encrypt (Certbot) di CentOS 8

  3. Cara Memasang Let's Encrypt SSL Certbot untuk Apache dan Ubuntu 20.04