HAProxy. Подключение TLS сертификатов LetsEncrypt с помощью ACME — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
(Новая страница: «SINGLE DOMAIN acme.sh installation apt install socat добавим пользака acme adduser --system --disabled-password --disabled-login --home /var/lib…»)
 
Строка 1: Строка 1:
SINGLE DOMAIN
 
  
acme.sh installation
 
  
apt install socat
 
  
добавим пользака acme
+
'''SINGLE DOMAIN'''
adduser --system --disabled-password --disabled-login --home /var/lib/acme --quiet --force-badname --group acme
 
  
добавим пользака acme в группу haproxy
 
adduser acme haproxy
 
  
создаём папку для acme
+
Заранее поставим socat
mkdir /usr/local/share/acme.sh/
+
apt install socat
  
устанавливаем acme скрипт
 
git clone https://github.com/acmesh-official/acme.sh.git
 
cd acme.sh/
 
./acme.sh --install --no-cron --no-profile --home /usr/local/share/acme.sh (не обращаем внимание на варнинги)
 
ln -s /usr/local/share/acme.sh/acme.sh /usr/local/bin/
 
chmod 755 /usr/local/share/acme.sh/
 
  
создадим acme аккаунт
+
Создаём пользователя
переключимся в пользака acme
+
adduser --system --disabled-password --disabled-login --home /var/lib/acme --quiet --force-badname --group acme
sudo -u acme -s
+
 
acme.sh --register-account --server letsencrypt -m finn@megapuper.ru
+
 
===
+
Добавляем его группу haproxy
Account key creation OK.
+
adduser acme haproxy
Registering account: https://acme-v02.api.letsencrypt.org/directory
+
 
Registered
+
 
ACCOUNT_THUMBPRINT='Xzcw32Ofoos72RlnlJnzPqOre2XzfnGP8Gu8xsWW8zc'
+
Создаём папку для acme
===
+
mkdir /usr/local/share/acme.sh/
 +
 
 +
 
 +
Устанавливаем скрипт
 +
git clone https://github.com/acmesh-official/acme.sh.git
 +
cd acme.sh/
 +
./acme.sh --install --no-cron --no-profile --home /usr/local/share/acme.sh (не обращаем внимание на варнинги)
 +
ln -s /usr/local/share/acme.sh/acme.sh /usr/local/bin/
 +
chmod 755 /usr/local/share/acme.sh/
 +
 
 +
 
 +
Создадим аккаунт
 +
sudo -u acme -s
 +
acme.sh --register-account --server letsencrypt -m admin@iwad.ru
 +
Account key creation OK.
 +
Registering account: https://acme-v02.api.letsencrypt.org/directory
 +
Registered
 +
ACCOUNT_THUMBPRINT='Xzcw32Ofoos72RlnlJnzPqOre2XzfnGP8Gu8xsWW8zc'
  
вернёмся в рута
 
 
exit
 
exit
  
  
подрихтуем haproxy.conf
+
Правим конфиг haproxy.conf
====
+
global
global
 
 
     stats socket /var/run/haproxy/admin.sock level admin mode 660
 
     stats socket /var/run/haproxy/admin.sock level admin mode 660
 
     setenv ACCOUNT_THUMBPRINT 'lCufto4sDRTHdmWL0EugFywGV54hBCuTTXvwifi65R4'
 
     setenv ACCOUNT_THUMBPRINT 'lCufto4sDRTHdmWL0EugFywGV54hBCuTTXvwifi65R4'
 
+
frontend web
+
frontend web
 
     bind :80
 
     bind :80
 
     bind :443 ssl crt /etc/haproxy/certs/ strict-sni
 
     bind :443 ssl crt /etc/haproxy/certs/ strict-sni
 
     http-request return status 200 content-type text/plain lf-string "%[path,field(-1,/)].${ACCOUNT_THUMBPRINT}\n" if { path_beg '/.well-known/acme-challenge/' }
 
     http-request return status 200 content-type text/plain lf-string "%[path,field(-1,/)].${ACCOUNT_THUMBPRINT}\n" if { path_beg '/.well-known/acme-challenge/' }
====
 
  
генерируем сертификат
 
  
переключаемся в пользака acme
+
Генерируем сертификат
sudo -u acme -s
+
sudo -u acme -s
 +
acme.sh --issue -d haproxy.iwad.ru --stateless --server letsencrypt
  
acme.sh --issue -d haproxy.iwad.ru --stateless --server letsencrypt
 
  
деплоим сертификат на сервер
+
Деплоим сертификат на сервер
sudo -u acme -s
+
sudo -u acme -s
 +
DEPLOY_HAPROXY_HOT_UPDATE=yes \
 +
DEPLOY_HAPROXY_STATS_SOCKET=/var/run/haproxy/admin.sock \
 +
DEPLOY_HAPROXY_PEM_PATH=/etc/haproxy/ssl \
 +
acme.sh --deploy -d iwad.ru --deploy-hook haproxy
  
DEPLOY_HAPROXY_HOT_UPDATE=yes \
+
Проверяем серт на хапроксе
DEPLOY_HAPROXY_STATS_SOCKET=/var/run/haproxy/admin.sock \
+
echo "show ssl cert /etc/haproxy/ssl/haproxy.iwad.ru" |\
DEPLOY_HAPROXY_PEM_PATH=/etc/haproxy/ssl \
+
    socat /var/run/haproxy/admin.sock -
acme.sh --deploy -d haproxy.iwad.ru --deploy-hook haproxy
 
  
проверяем серт на хапроксе
+
Автопродление сертификата
echo "show ssl cert /etc/haproxy/ssl/haproxy.iwad.ru" |\
+
sudo -u acme -s
  socat /var/run/haproxy/admin.sock -
+
acme.sh --install-cronjob
  
автопродление сертификата
 
sudo -u acme -s
 
acme.sh --install-cronjob
 
 
проверяем что добавилась строчка
 
21 3 * * * /usr/local/share/acme.sh/acme.sh --cron --home "/var/lib/acme/.acme.sh" > /dev/null
 
  
 +
Проверяем что добавилась строчка
 +
21 3 * * * /usr/local/share/acme.sh/acme.sh --cron --home "/var/lib/acme/.acme.sh" > /dev/null
  
  
Строка 79: Строка 79:
 
https://github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_cf
 
https://github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_cf
  
export CF_Key="8025a22a233169a37e52c5949c258d30a6d0c"
+
export CF_Key="8025a22a233169a37e52c5949c258d30a6d0c"
export CF_Email="finn@megapuper.ru"
+
export CF_Email="finn@megapuper.ru"
 
 
acme.sh --issue -d *.pushads.biz --server letsencrypt --dns dns_cf
 
  
 +
acme.sh --issue -d *.pushads.biz --server letsencrypt --dns dns_cf
  
  
деплоим серт на хапрокси
+
Деплоим серт на хапрокси
DEPLOY_HAPROXY_HOT_UPDATE=yes \
+
DEPLOY_HAPROXY_HOT_UPDATE=yes \
DEPLOY_HAPROXY_STATS_SOCKET=/var/run/haproxy/admin.sock \
+
DEPLOY_HAPROXY_STATS_SOCKET=/var/run/haproxy/admin.sock \
DEPLOY_HAPROXY_PEM_PATH=/etc/haproxy/ssl \
+
DEPLOY_HAPROXY_PEM_PATH=/etc/haproxy/ssl \
acme.sh --deploy -d *.pushads.biz --deploy-hook haproxy
+
acme.sh --deploy -d *.iwad.ru --deploy-hook haproxy
  
проверяем на хапроксе
+
Проверяем на хапроксе
echo "show ssl cert /etc/haproxy/ssl/_.pushads.biz.pem" | socat /var/run/haproxy/admin.sock -
+
echo "show ssl cert /etc/haproxy/ssl/_.iwad.ru.pem" | socat /var/run/haproxy/admin.sock -

Версия 21:37, 15 июля 2024


SINGLE DOMAIN


Заранее поставим socat

apt install socat


Создаём пользователя

adduser --system --disabled-password --disabled-login --home /var/lib/acme --quiet --force-badname --group acme


Добавляем его группу haproxy

adduser acme haproxy


Создаём папку для acme

mkdir /usr/local/share/acme.sh/


Устанавливаем скрипт

git clone https://github.com/acmesh-official/acme.sh.git
cd acme.sh/
./acme.sh --install --no-cron --no-profile --home /usr/local/share/acme.sh (не обращаем внимание на варнинги)
ln -s /usr/local/share/acme.sh/acme.sh /usr/local/bin/
chmod 755 /usr/local/share/acme.sh/


Создадим аккаунт

sudo -u acme -s
acme.sh --register-account --server letsencrypt -m admin@iwad.ru
Account key creation OK.
Registering account: https://acme-v02.api.letsencrypt.org/directory
Registered
ACCOUNT_THUMBPRINT='Xzcw32Ofoos72RlnlJnzPqOre2XzfnGP8Gu8xsWW8zc'

exit


Правим конфиг haproxy.conf

global
   stats socket /var/run/haproxy/admin.sock level admin mode 660
   setenv ACCOUNT_THUMBPRINT 'lCufto4sDRTHdmWL0EugFywGV54hBCuTTXvwifi65R4'

frontend web
   bind :80
   bind :443 ssl crt /etc/haproxy/certs/ strict-sni
   http-request return status 200 content-type text/plain lf-string "%[path,field(-1,/)].${ACCOUNT_THUMBPRINT}\n" if { path_beg '/.well-known/acme-challenge/' }


Генерируем сертификат

sudo -u acme -s
acme.sh --issue -d haproxy.iwad.ru --stateless --server letsencrypt


Деплоим сертификат на сервер

sudo -u acme -s
DEPLOY_HAPROXY_HOT_UPDATE=yes \
DEPLOY_HAPROXY_STATS_SOCKET=/var/run/haproxy/admin.sock \
DEPLOY_HAPROXY_PEM_PATH=/etc/haproxy/ssl \
acme.sh --deploy -d iwad.ru --deploy-hook haproxy

Проверяем серт на хапроксе

echo "show ssl cert /etc/haproxy/ssl/haproxy.iwad.ru" |\
   socat /var/run/haproxy/admin.sock -

Автопродление сертификата

sudo -u acme -s
acme.sh --install-cronjob


Проверяем что добавилась строчка

21 3 * * * /usr/local/share/acme.sh/acme.sh --cron --home "/var/lib/acme/.acme.sh" > /dev/null


WILDCARD https://github.com/acmesh-official/acme.sh/wiki/dnsapi#dns_cf

export CF_Key="8025a22a233169a37e52c5949c258d30a6d0c"
export CF_Email="finn@megapuper.ru"
acme.sh --issue -d *.pushads.biz --server letsencrypt --dns dns_cf


Деплоим серт на хапрокси

DEPLOY_HAPROXY_HOT_UPDATE=yes \
DEPLOY_HAPROXY_STATS_SOCKET=/var/run/haproxy/admin.sock \
DEPLOY_HAPROXY_PEM_PATH=/etc/haproxy/ssl \
acme.sh --deploy -d *.iwad.ru --deploy-hook haproxy

Проверяем на хапроксе

echo "show ssl cert /etc/haproxy/ssl/_.iwad.ru.pem" | socat /var/run/haproxy/admin.sock -