README: after Certbot, wire LE certs to nginx ssl_* and optional HTTP redirect
This commit is contained in:
@@ -296,7 +296,48 @@ sudo haproxy -c -f /etc/haproxy/haproxy.cfg
|
||||
-d ubuntu1.kalinamall.ru \
|
||||
--email admin@example.com --agree-tos --non-interactive
|
||||
```
|
||||
При первом запуске можно убрать `--non-interactive`, чтобы согласиться с условиями в диалоге. Сертификаты появятся в `/etc/letsencrypt/live/<имя>/`.
|
||||
При первом запуске можно убрать `--non-interactive`, чтобы согласиться с условиями в диалоге.
|
||||
|
||||
**Где лежат файлы и что с ними делать (HTTPS в nginx)**
|
||||
|
||||
После успешного `certbot certonly` каталог (симлинки) будет таким:
|
||||
|
||||
- **`/etc/letsencrypt/live/ubuntu1.kalinamall.ru/`** — имя совпадает с **первым** `-d` в команде certbot (на второй машине — `ubuntu2...`).
|
||||
- **`fullchain.pem`** — ваш сертификат **и** цепочка до Let’s Encrypt; его указывают в **`ssl_certificate`** (так браузеры доверяют сайту).
|
||||
- **`privkey.pem`** — закрытый ключ; в **`ssl_certificate_key`**. Файлы в `archive/`, в `live/` — только ссылки; при **`certbot renew`** обновляются именно они, пути в nginx **менять не нужно**.
|
||||
|
||||
Добавьте **второй** `server` для **HTTPS** (отдельный файл или тот же `acme-le.conf` ниже блока `:80`), подставив своё имя и корень сайта:
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
listen [::]:443 ssl http2;
|
||||
server_name ubuntu1.kalinamall.ru;
|
||||
|
||||
ssl_certificate /etc/letsencrypt/live/ubuntu1.kalinamall.ru/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/ubuntu1.kalinamall.ru/privkey.pem;
|
||||
|
||||
# Рекомендуемые параметры TLS (если пакет certbot их положил):
|
||||
# include /etc/letsencrypt/options-ssl-nginx.conf;
|
||||
# ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
|
||||
|
||||
root /var/www/html;
|
||||
index index.html;
|
||||
location / {
|
||||
try_files $uri $uri/ =404;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Проверка и применение:
|
||||
|
||||
```bash
|
||||
sudo nginx -t && sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
Если **443** с интернета идёт **на эту же** Ubuntu (напрямую или отдельным пробросом с маршрутизатора), снаружи откройте **TCP 443** до неё. Если HTTPS терминирует только **HAProxy**, а до Ubuntu — снова прокси, то сертификат Let’s Encrypt на Ubuntu нужен **той службе**, которая реально открывает **TLS** на этой машине (или выпускайте сертификат на том узле, где крутится HTTPS).
|
||||
|
||||
**Редирект HTTP → HTTPS на :80 (по желанию, после того как HTTPS завёлся):** в блоке `server` на **порту 80** оставьте **`location ^~ /.well-known/acme-challenge/`** как есть, а вместо `return 404` для **`location /`** поставьте **`return 301 https://$host$request_uri;`** — обновление сертификата по-прежнему идёт по **HTTP** на путь **`.well-known`**, остальное уходит на **https://**.
|
||||
|
||||
6. **Проверка автообновления**
|
||||
```bash
|
||||
@@ -313,8 +354,6 @@ sudo haproxy -c -f /etc/haproxy/haproxy.cfg
|
||||
```
|
||||
Таймер **`certbot.timer`** по расписанию вызывает `certbot renew`; при обновлении сертификата выполняются hook’и из `renewal-hooks/deploy`.
|
||||
|
||||
Дальше на этой же машине можно настроить **HTTPS** для своих сервисов, указав в nginx `ssl_certificate` и `ssl_certificate_key` на файлы из `/etc/letsencrypt/live/<домен>/` (это уже отдельно от HAProxy, если TLS терминируется на Ubuntu).
|
||||
|
||||
#### Кратко: Apache вместо nginx
|
||||
|
||||
1. `sudo apt install -y apache2 certbot python3-certbot-apache` (или только `certbot` и webroot без плагина apache).
|
||||
|
||||
Reference in New Issue
Block a user