From d8a832939722f7d23da7565e8bda7c0c87cb918c Mon Sep 17 00:00:00 2001 From: PTah Date: Tue, 26 May 2026 21:37:56 +1000 Subject: [PATCH] =?UTF-8?q?docs:=20=D0=BF=D1=80=D0=B0=D0=B2=D0=B0=20/etc/s?= =?UTF-8?q?sl/sac=20=E2=80=94=20root:ssl-cert,=20www-data=20=D0=B2=20?= =?UTF-8?q?=D0=B3=D1=80=D1=83=D0=BF=D0=BF=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/install-ubuntu-24.04-native.md | 22 ++++++++++++++++++++-- docs/ssl-certificate.md | 27 ++++++++++++++++++++++----- 2 files changed, 42 insertions(+), 7 deletions(-) diff --git a/docs/install-ubuntu-24.04-native.md b/docs/install-ubuntu-24.04-native.md index 5f8a172..826f64b 100644 --- a/docs/install-ubuntu-24.04-native.md +++ b/docs/install-ubuntu-24.04-native.md @@ -207,7 +207,14 @@ nginx ожидает **два PEM-файла**: | `/etc/ssl/sac/privkey.pem` | Закрытый ключ | ```bash -sudo mkdir -p /etc/ssl/sac && sudo chmod 750 /etc/ssl/sac +# каталог: группа ssl-cert, чтобы www-data мог зайти в каталог (chmod 750) +sudo mkdir -p /etc/ssl/sac +sudo chown root:ssl-cert /etc/ssl/sac +sudo chmod 750 /etc/ssl/sac + +# nginx читает ключ через группу ssl-cert (на чистой Ubuntu в группе часто только postgres) +sudo groupadd -f ssl-cert +sudo usermod -aG ssl-cert www-data ``` Скопировать с рабочего ПК (пример): @@ -222,9 +229,20 @@ sudo chmod 644 /etc/ssl/sac/fullchain.pem sudo chmod 640 /etc/ssl/sac/privkey.pem sudo chown root:root /etc/ssl/sac/fullchain.pem sudo chown root:ssl-cert /etc/ssl/sac/privkey.pem -sudo -u www-data test -r /etc/ssl/sac/privkey.pem && echo OK +# каталог снова root:ssl-cert (если меняли владельца при mv) +sudo chown root:ssl-cert /etc/ssl/sac +sudo chmod 750 /etc/ssl/sac + +# worker nginx должен подхватить группу www-data +sudo systemctl restart nginx + +sudo -u www-data test -x /etc/ssl/sac && echo dir OK || echo dir FAIL +sudo -u www-data test -r /etc/ssl/sac/fullchain.pem && echo fullchain OK || echo fullchain FAIL +sudo -u www-data test -r /etc/ssl/sac/privkey.pem && echo key OK || echo key FAIL ``` +Если `test -r privkey.pem` молчит: каталог был `root:root` при `750` — у `www-data` нет права `x` на `/etc/ssl/sac/`; либо `www-data` не в `ssl-cert`. См. [ssl-certificate.md §3](ssl-certificate.md#3-каталог-и-права-на-сервере). + Если PFX с другого Linux — `scp` на SAC: [ssl-certificate.md §4.3](ssl-certificate.md#43-забрать-файл-с-другого-linux-сервера-scp). Распаковка PFX на Ubuntu 24.04: **`openssl pkcs12 -legacy`** — [§4.4](ssl-certificate.md#44-распаковка-pfx--p12-на-сервере-ubuntu-2404). diff --git a/docs/ssl-certificate.md b/docs/ssl-certificate.md index 7111127..749a312 100644 --- a/docs/ssl-certificate.md +++ b/docs/ssl-certificate.md @@ -40,9 +40,15 @@ nginx **не** понимает напрямую: `.pfx`, `.p12`, `.der` без ```bash sudo mkdir -p /etc/ssl/sac +sudo chown root:ssl-cert /etc/ssl/sac sudo chmod 750 /etc/ssl/sac + +sudo groupadd -f ssl-cert +sudo usermod -aG ssl-cert www-data ``` +Каталог **`root:ssl-cert` `750`**, не `root:root`: иначе у `www-data` нет права `x` (зайти в каталог), даже если ключ `640` и `root:ssl-cert`. + После копирования файлов: ```bash @@ -50,15 +56,21 @@ sudo chmod 644 /etc/ssl/sac/fullchain.pem sudo chmod 640 /etc/ssl/sac/privkey.pem sudo chown root:root /etc/ssl/sac/fullchain.pem sudo chown root:ssl-cert /etc/ssl/sac/privkey.pem +sudo chown root:ssl-cert /etc/ssl/sac +sudo chmod 750 /etc/ssl/sac + +sudo systemctl restart nginx ``` -Группа `ssl-cert` на Ubuntu нужна, чтобы **nginx** (пользователь `www-data`) мог читать ключ. +Группа `ssl-cert` нужна, чтобы **nginx** (`www-data`) читал ключ и обходил каталог. На Ubuntu в `ssl-cert` по умолчанию может быть только `postgres` — добавьте `www-data` (`usermod` выше). -Проверка, что nginx видит файлы: +Проверка: ```bash -sudo -u www-data test -r /etc/ssl/sac/fullchain.pem && echo "fullchain OK" -sudo -u www-data test -r /etc/ssl/sac/privkey.pem && echo "key OK" +id www-data # в groups должна быть ssl-cert +sudo -u www-data test -x /etc/ssl/sac && echo "dir OK" || echo "dir FAIL" +sudo -u www-data test -r /etc/ssl/sac/fullchain.pem && echo "fullchain OK" || echo "fullchain FAIL" +sudo -u www-data test -r /etc/ssl/sac/privkey.pem && echo "key OK" || echo "key FAIL" ``` --- @@ -84,6 +96,8 @@ sudo chmod 644 /etc/ssl/sac/fullchain.pem sudo chmod 640 /etc/ssl/sac/privkey.pem sudo chown root:root /etc/ssl/sac/fullchain.pem sudo chown root:ssl-cert /etc/ssl/sac/privkey.pem +sudo chown root:ssl-cert /etc/ssl/sac +sudo chmod 750 /etc/ssl/sac sudo rm -f /tmp/fullchain.pem /tmp/privkey.pem ``` @@ -164,6 +178,8 @@ sudo chmod 644 /etc/ssl/sac/fullchain.pem sudo chmod 640 /etc/ssl/sac/privkey.pem sudo chown root:root /etc/ssl/sac/fullchain.pem sudo chown root:ssl-cert /etc/ssl/sac/privkey.pem +sudo chown root:ssl-cert /etc/ssl/sac +sudo chmod 750 /etc/ssl/sac # очистка временных файлов sudo shred -u server.crt ca-chain.crt privkey.pem 2>/dev/null @@ -291,6 +307,7 @@ SAC_PUBLIC_URL=https://sac.kalinamall.ru | `mac verify failure` | Неверный пароль PFX | | `nginx: PEM_read_bio_X509_AUX() failed` | Неверный PEM, проверьте `fullchain.pem` текстом, нет ли `.der` без конвертации | | `key values mismatch` | Ключ не от этой пары сертификатов | -| `permission denied` на key | `chown root:ssl-cert`, `chmod 640`; `sudo -u www-data test -r ...` | +| `test -r privkey.pem` без вывода / key FAIL | Каталог `chown root:ssl-cert`, `750`; `usermod -aG ssl-cert www-data`; `systemctl restart nginx` | +| `permission denied` на key | То же + `chmod 640` на ключ; `test -x /etc/ssl/sac` | | Браузер/агент не доверяет | Неполная цепочка — добавьте intermediate в fullchain | | `certificate has expired` | Продлить у УЦ, заменить файлы |