docs: PFX -legacy на Ubuntu 24.04, scp с другого Linux
This commit is contained in:
@@ -225,7 +225,8 @@ sudo chown root:ssl-cert /etc/ssl/sac/privkey.pem
|
|||||||
sudo -u www-data test -r /etc/ssl/sac/privkey.pem && echo OK
|
sudo -u www-data test -r /etc/ssl/sac/privkey.pem && echo OK
|
||||||
```
|
```
|
||||||
|
|
||||||
Если пришёл только **`.pfx`** — см. [ssl-certificate.md §4.3](ssl-certificate.md#43-распаковка-pfx--p12-на-сервере).
|
Если 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).
|
||||||
|
|
||||||
### 9.2. Конфиг nginx (HTTPS)
|
### 9.2. Конфиг nginx (HTTPS)
|
||||||
|
|
||||||
|
|||||||
+69
-13
@@ -26,7 +26,7 @@ nginx читает **два PEM-файла** (текст, начинается
|
|||||||
| От УЦ / админа | Расширения | Что делать |
|
| От УЦ / админа | Расширения | Что делать |
|
||||||
|----------------|------------|------------|
|
|----------------|------------|------------|
|
||||||
| Готовый PEM | `.pem`, `.crt` + `.key` | Собрать fullchain, скопировать на сервер |
|
| Готовый PEM | `.pem`, `.crt` + `.key` | Собрать fullchain, скопировать на сервер |
|
||||||
| PKCS#12 | `.pfx`, `.p12` | Распаковать в PEM (см. §4) |
|
| PKCS#12 | `.pfx`, `.p12` | Распаковать в PEM (см. §4.3, на Ubuntu 24.04 нужен `-legacy`) |
|
||||||
| Отдельные файлы | `certificate.crt`, `ca-bundle.crt`, `private.key` | Склеить fullchain (см. §5) |
|
| Отдельные файлы | `certificate.crt`, `ca-bundle.crt`, `private.key` | Склеить fullchain (см. §5) |
|
||||||
| Windows (MMC) | экспорт `.pfx` | Распаковать на ПК или сервере (§4) |
|
| Windows (MMC) | экспорт `.pfx` | Распаковать на ПК или сервере (§4) |
|
||||||
|
|
||||||
@@ -66,6 +66,7 @@ sudo -u www-data test -r /etc/ssl/sac/privkey.pem && echo "key OK"
|
|||||||
## 4. Копирование на сервер
|
## 4. Копирование на сервер
|
||||||
|
|
||||||
Подставьте IP или hostname SAC-сервера вместо `SAC_SERVER`.
|
Подставьте IP или hostname SAC-сервера вместо `SAC_SERVER`.
|
||||||
|
Команды `scp` выполняются **на той машине, куда копируете** (обычно на SAC-сервере — «забрать» файл с другого хоста).
|
||||||
|
|
||||||
### 4.1. С Linux / macOS (scp)
|
### 4.1. С Linux / macOS (scp)
|
||||||
|
|
||||||
@@ -105,31 +106,84 @@ scp D:\Certs\kalinamall\wildcard.pfx papatramp@SAC_SERVER:/tmp/
|
|||||||
|
|
||||||
Распаковка на **сервере** (§4.3).
|
Распаковка на **сервере** (§4.3).
|
||||||
|
|
||||||
### 4.3. Распаковка `.pfx` / `.p12` на сервере
|
### 4.3. Забрать файл с другого Linux-сервера (scp)
|
||||||
|
|
||||||
|
Выполнять **на SAC-сервере** (pull с хоста, где лежит PFX/PEM):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
mkdir -p /tmp/certs
|
||||||
|
|
||||||
|
# один файл
|
||||||
|
scp user@certs-host.example.com:/path/to/wildcard_kalinamall_ru.pfx /tmp/certs/
|
||||||
|
|
||||||
|
# несколько файлов
|
||||||
|
scp user@certs-host:/path/to/fullchain.pem user@certs-host:/path/to/privkey.pem /tmp/certs/
|
||||||
|
|
||||||
|
# нестандартный SSH-порт (у scp заглавная P)
|
||||||
|
scp -P 2222 user@certs-host:/path/to/wildcard_kalinamall_ru.pfx /tmp/certs/
|
||||||
|
```
|
||||||
|
|
||||||
|
С другого сервера **отдать** на SAC (push — команда на сервере-источнике):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
scp /path/to/wildcard_kalinamall_ru.pfx papatramp@<IP_SAC>:/tmp/certs/
|
||||||
|
```
|
||||||
|
|
||||||
|
Нужен SSH-доступ и право **читать** файл на источнике.
|
||||||
|
|
||||||
|
### 4.4. Распаковка `.pfx` / `.p12` на сервере (Ubuntu 24.04)
|
||||||
|
|
||||||
|
На Ubuntu 24.04 стоит **OpenSSL 3.x**. Старые PFX от VeriSign/DigiCert часто используют **RC2-40-CBC** — без флага `-legacy` будет ошибка:
|
||||||
|
|
||||||
|
```text
|
||||||
|
Algorithm (RC2-40-CBC : 0), Properties (), unsupported
|
||||||
|
```
|
||||||
|
|
||||||
|
**Всегда добавляйте `-legacy`** к `openssl pkcs12`:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# установить openssl, если нет
|
|
||||||
sudo apt install -y openssl
|
sudo apt install -y openssl
|
||||||
|
|
||||||
cd /tmp
|
sudo mkdir -p /tmp/certs
|
||||||
# замените имя файла и пароль от PFX
|
cd /tmp/certs
|
||||||
openssl pkcs12 -in wildcard.pfx -nocerts -nodes -out privkey.pem
|
# замените имя PFX; Enter Import Password: — пароль от PFX (не sudo)
|
||||||
openssl pkcs12 -in wildcard.pfx -clcerts -nokeys -out server.crt
|
|
||||||
openssl pkcs12 -in wildcard.pfx -cacerts -nokeys -out ca-chain.crt
|
sudo openssl pkcs12 -legacy -in wildcard_kalinamall_ru.pfx -nocerts -nodes \
|
||||||
|
-out privkey.pem
|
||||||
|
|
||||||
|
sudo openssl pkcs12 -legacy -in wildcard_kalinamall_ru.pfx -clcerts -nokeys \
|
||||||
|
-out server.crt
|
||||||
|
|
||||||
|
sudo openssl pkcs12 -legacy -in wildcard_kalinamall_ru.pfx -cacerts -nokeys \
|
||||||
|
-out ca-chain.crt
|
||||||
|
|
||||||
# fullchain = сервер + промежуточные (порядок важен)
|
# fullchain = сервер + промежуточные (порядок важен)
|
||||||
cat server.crt ca-chain.crt | sudo tee /etc/ssl/sac/fullchain.pem > /dev/null
|
cat server.crt ca-chain.crt | sudo tee /etc/ssl/sac/fullchain.pem > /dev/null
|
||||||
sudo mv privkey.pem /etc/ssl/sac/privkey.pem
|
sudo cp privkey.pem /etc/ssl/sac/privkey.pem
|
||||||
sudo chmod 644 /etc/ssl/sac/fullchain.pem
|
sudo chmod 644 /etc/ssl/sac/fullchain.pem
|
||||||
sudo chmod 640 /etc/ssl/sac/privkey.pem
|
sudo chmod 640 /etc/ssl/sac/privkey.pem
|
||||||
sudo chown root:root /etc/ssl/sac/fullchain.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/privkey.pem
|
||||||
|
|
||||||
# удалить временные файлы с /tmp
|
# очистка временных файлов
|
||||||
shred -u server.crt ca-chain.crt 2>/dev/null; rm -f wildcard.pfx
|
sudo shred -u server.crt ca-chain.crt privkey.pem 2>/dev/null
|
||||||
|
sudo rm -f /tmp/certs/wildcard_kalinamall_ru.pfx
|
||||||
```
|
```
|
||||||
|
|
||||||
Пароль PFX вводится интерактивно. **Не** коммитьте PFX и ключ в git.
|
Если `-legacy` недостаточно:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo openssl pkcs12 -provider legacy -provider default \
|
||||||
|
-in wildcard_kalinamall_ru.pfx -nocerts -nodes -out privkey.pem
|
||||||
|
```
|
||||||
|
|
||||||
|
Проверить содержимое PFX:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
sudo openssl pkcs12 -legacy -in wildcard_kalinamall_ru.pfx -info -noout
|
||||||
|
```
|
||||||
|
|
||||||
|
Пароль PFX вводится интерактивно (`Enter Import Password`). **Не** коммитьте PFX и ключ в git.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -233,8 +287,10 @@ SAC_PUBLIC_URL=https://sac.kalinamall.ru
|
|||||||
|
|
||||||
| Симптом | Решение |
|
| Симптом | Решение |
|
||||||
|---------|---------|
|
|---------|---------|
|
||||||
|
| `RC2-40-CBC` / `unsupported` при `pkcs12` | OpenSSL 3 на Ubuntu 24.04: добавить **`-legacy`** (см. §4.4) |
|
||||||
|
| `mac verify failure` | Неверный пароль PFX |
|
||||||
| `nginx: PEM_read_bio_X509_AUX() failed` | Неверный PEM, проверьте `fullchain.pem` текстом, нет ли `.der` без конвертации |
|
| `nginx: PEM_read_bio_X509_AUX() failed` | Неверный PEM, проверьте `fullchain.pem` текстом, нет ли `.der` без конвертации |
|
||||||
| `key values mismatch` | Ключ не от этой пары сертификатов |
|
| `key values mismatch` | Ключ не от этой пары сертификатов |
|
||||||
| `permission denied` на key | `chown root:ssl-cert`, `chmod 640`, `www-data` в группе `ssl-cert` |
|
| `permission denied` на key | `chown root:ssl-cert`, `chmod 640`; `sudo -u www-data test -r ...` |
|
||||||
| Браузер/агент не доверяет | Неполная цепочка — добавьте intermediate в fullchain |
|
| Браузер/агент не доверяет | Неполная цепочка — добавьте intermediate в fullchain |
|
||||||
| `certificate has expired` | Продлить у УЦ, заменить файлы |
|
| `certificate has expired` | Продлить у УЦ, заменить файлы |
|
||||||
|
|||||||
Reference in New Issue
Block a user