فعال کردن ssl از letsencrypt در HA Proxy

HaProxy یک لود بالانسر است که میتواند با استراتژی های مختلف ، لود سرور را بین سرور های مختلف تقسیم کند.گاهی لازم است که سرور مستر HA با SSL ایمن شود و LetsEncrypt این امکان را فراهم کرده است که به رایگان این کار را انجام بدیم.

برای اینکار اول Certbot رو نصب میکنیم، در مرحله بعد باید فایل کانفیگ HA رو ویرایش کنیم و بک اند و فرانت اند Certbot رو اضافه کنیم تا عملیات Verify به صورت خودکار انجام بشه.

haproxy

ابتدا certbot رو نصب میکنیم:

sudo add-apt-repository -y ppa:certbot/certbot
sudo apt-get update
sudo apt-get install -y certbot

سپس فایل کانفیگ HA رو باز میکنیم:

vim /etc/haproxy/haproxy.cfg

مقادیر زیر رو به قسمت Frontend می دهیم:

acl letsencrypt-acl path_beg /.well-known/acme-challenge/
use_backend letsencrypt-backend if letsencrypt-acl

این تنظیمات باعث میشه اگه درخواستی به آدرسی که گفته شده برسد ، از بک اند Letsencrypt سرو بشه.

و مقادیر زیر رو به Backend اضافه میکنیم :

backend letsencrypt-backend
    server letsencrypt 127.0.0.1:8888

این تنظیمات باعث میشه درخواست هایی با Backend گفته شده ، از پورت ۸۸۸۸ همین ماشین سرو بشه.

حالا که همه چیز آماده شده ، Certbot رو ران میکنیم تا ssl رو بگیره :

sudo certbot certonly --standalone -d your_site \
    --non-interactive --agree-tos --email your_email \
    --http-01-port=8888

خب اینجا باید متغیر های your_site و your_email رو تغییر بدین به آدرس سایت و ایمیل خودتون ( ha باید از یه سایتی که دامنه داره سرو شده باشه ) ، و منتظر بمونید تا پروسه دریافت تموم بشه. حالا بخش زیر رو به فرانت اند اضافه کنین تا روی 443 منتظر درخواست بمونه:

bind *:443 ssl crt /etc/ssl/your_site/your_site.pem

متغیر your_site رو قبل ذخیره با آدرس سایت خودتون جایگزین کنید.