diff --git a/docs/gitea-nginx-https.md b/docs/gitea-nginx-https.md index 6ebff6e..6e1a4cd 100644 --- a/docs/gitea-nginx-https.md +++ b/docs/gitea-nginx-https.md @@ -33,6 +33,31 @@ sudo install -m 0600 /путь/к/privkey.pem /etc/nginx/ssl/kalinamall/git.ka sudo chown root:root /etc/nginx/ssl/kalinamall/* ``` +### Сертификат в формате PFX (`.pfx` / `.p12`) + +Nginx **не** читает PFX напрямую в `ssl_certificate` / `ssl_certificate_key` — нужны **PEM**: отдельно **цепочка** (сервер + промежуточные CA) и **закрытый ключ**. PFX — контейнер, из него извлекают OpenSSL (пароль к PFX введёте по запросу): + +```bash +# Закрытый ключ (права только root) +openssl pkcs12 -in wildcard.pfx -nocerts -nodes -out git.kalinamall.ru.key + +# Сертификаты из контейнера (серверный + при необходимости цепочку соберите в один fullchain ниже) +openssl pkcs12 -in wildcard.pfx -clcerts -nokeys -out cert.pem +openssl pkcs12 -in wildcard.pfx -cacerts -nokeys -out chain.pem 2>/dev/null || true +``` + +Часто для **`ssl_certificate`** нужен один файл «сервер + промежуточные»: + +```bash +cat cert.pem chain.pem > git.kalinamall.ru-fullchain.pem +sudo chmod 0600 git.kalinamall.ru.key +sudo chmod 0644 git.kalinamall.ru-fullchain.pem +``` + +На OpenSSL 3 старые PFX иногда требуют флаг **`-legacy`** к `pkcs12`. При ошибках расшифровки проверьте пароль и точное имя алиаса в PFX (`openssl pkcs12 -in wildcard.pfx -info -noout`). + +Пути к получившимся **`…-fullchain.pem`** и **`…key`** подставьте в конфиг nginx. + ## 3. Map для WebSocket Gitea в браузере использует WebSocket. Директива **`map`** должна быть в контексте **`http {}`** один раз на весь nginx.