README: port 80, ACME challenges (HTTP-01/DNS/TLS-ALPN), future HAProxy sketch
This commit is contained in:
@@ -209,6 +209,50 @@ sudo haproxy -c -f /etc/haproxy/haproxy.cfg
|
||||
|
||||
На хосте с HAProxy с интернета обычно открывают только то, что слушает конфиг: **25**, **443** (и при использовании — **8404** для stats). Остальной трафик — по политике безопасности.
|
||||
|
||||
## Порт 80 и Let’s Encrypt / ACME (на будущее)
|
||||
|
||||
Сейчас в `haproxy.cfg` **порт 80 не используется**. Ниже — что иметь в виду, если появится, например, **Ubuntu** во внутренней сети, на которую нужно выпускать сертификаты **Let’s Encrypt** с автообновлением.
|
||||
|
||||
### Нужен ли для ACME именно порт 80?
|
||||
|
||||
**Не всегда.** У Let’s Encrypt (протокол **ACME**) есть несколько типов проверки владения доменом:
|
||||
|
||||
| Тип | Порт | Комментарий |
|
||||
|-----|------|-------------|
|
||||
| **HTTP-01** | **80** (HTTP) | Центр сертификации делает запрос вида `http://ваш-домен/.well-known/acme-challenge/...`. С **интернета** до отвечающего хоста порт **80** должен быть **доступен** (напрямую или через проброс на HAProxy). |
|
||||
| **DNS-01** | не нужен 80/443 | Запись в DNS; удобно, когда **80 снаружи открывать нельзя** или сертификат для внутреннего имени. |
|
||||
| **TLS-ALPN-01** | **443** | Проверка по TLS; порт 80 не обязателен. |
|
||||
|
||||
Итого: при классическом **Certbot + webroot/standalone** с проверкой **HTTP-01** порт **80** действительно участвует. При **DNS-01** отдельный HTTP на 80 для выпуска не нужен.
|
||||
|
||||
Автообновление обычно делают **`certbot renew`** по **systemd timer** или cron — это на стороне машины с Certbot, не в HAProxy.
|
||||
|
||||
### Если позже понадобится HTTP на 80 через этот HAProxy (например, HTTP-01)
|
||||
|
||||
1. На **пограничном роутере** разрешить с интернета **TCP 80** на IP хоста с HAProxy (или на тот хост, где будет отвечать ACME).
|
||||
2. В **`haproxy.cfg`** добавить отдельный **HTTP**-фронтенд на **80** и отправлять только путь проверки на бэкенд с ответом ACME (остальное — редирект на HTTPS, пустой ответ или отказ — по политике).
|
||||
|
||||
Черновик логики (пути и имена бэкендов подставьте свои):
|
||||
|
||||
```text
|
||||
frontend fe_http
|
||||
bind *:80
|
||||
mode http
|
||||
option httplog
|
||||
acl path_acme path_beg /.well-known/acme-challenge/
|
||||
use_backend be_acme_http if path_acme
|
||||
http-request deny if !path_acme
|
||||
|
||||
backend be_acme_http
|
||||
mode http
|
||||
# Пример: веб-корень Certbot на внутренней Ubuntu (nginx/apache или certbot webroot)
|
||||
server acme 192.168.x.x:80 check
|
||||
```
|
||||
|
||||
Варианты без отдельного «полного» веб-сервера на бэкенде: **DNS-01** на той же Ubuntu; либо плагины/схемы, где HAProxy отдаёт challenge (требует отдельной настройки и обычно скриптов обновления).
|
||||
|
||||
После добавления `bind :80` обновите раздел **«Порты на фаерволе»** выше и проверку: `sudo haproxy -c -f /etc/haproxy/haproxy.cfg`.
|
||||
|
||||
## Лицензия
|
||||
|
||||
Конфигурация поставляется как есть, без гарантий. Используйте на свой риск.
|
||||
|
||||
Reference in New Issue
Block a user