Назначение
Nginx используется как reverse proxy для веб-интерфейса, REST API и протокольных сервисов Avanpost CA.
Пример публикует:
/— веб-интерфейс;/api/— REST API;/swagger/— документация API;/scep/— SCEP;/ocsp/— OCSP;/public/— публичные сертификаты и материалы CA;/wstep/— MS-WSTEP.
Состав endpoints необходимо сверять с версией установленного дистрибутива.
Предварительные требования
- Avanpost CA запущен;
- настроено DNS-имя
<CA_FQDN>; - подготовлен TLS-сертификат с
<CA_FQDN>в SAN; - подготовлена полная цепочка TLS-сертификата;
- закрытый ключ TLS защищен;
- TCP 443 доступен клиентам;
- TCP 80 используется только для перенаправления на HTTPS либо закрыт.
1. Установка Nginx
sudo dnf install nginx
sudo systemctl enable nginx
2. Установка TLS-сертификата
Создайте каталог:
sudo install -d -o root -g nginx -m 750 /etc/nginx/tls
Разместите сертификат и ключ:
/etc/nginx/tls/avanpost-ca-fullchain.pem
/etc/nginx/tls/avanpost-ca.key
Установите права:
sudo chown root:nginx /etc/nginx/tls/avanpost-ca-fullchain.pem
sudo chown root:nginx /etc/nginx/tls/avanpost-ca.key
sudo chmod 640 /etc/nginx/tls/avanpost-ca-fullchain.pem
sudo chmod 640 /etc/nginx/tls/avanpost-ca.key
Проверьте сертификат:
openssl x509 \
-in /etc/nginx/tls/avanpost-ca-fullchain.pem \
-noout \
-subject \
-issuer \
-dates \
-ext subjectAltName
3. Создание конфигурации
Создайте:
sudo vi /etc/nginx/conf.d/avanpost-ca.conf
Добавьте:
server {
listen 80;
server_name <CA_FQDN>;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name <CA_FQDN>;
ssl_certificate /etc/nginx/tls/avanpost-ca-fullchain.pem;
ssl_certificate_key /etc/nginx/tls/avanpost-ca.key;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_session_cache shared:TLS:10m;
ssl_session_timeout 10m;
access_log /var/log/nginx/avanpost-ca-access.log;
error_log /var/log/nginx/avanpost-ca-error.log warn;
proxy_http_version 1.1;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 10s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
location /api/ {
proxy_pass http://127.0.0.1:9999/api/;
}
location /swagger/ {
proxy_pass http://127.0.0.1:9999/swagger/;
}
location /scep/ {
proxy_pass http://127.0.0.1:9999/scep/;
}
location /ocsp/ {
proxy_pass http://127.0.0.1:9999/ocsp/;
}
location /public/ {
proxy_pass http://127.0.0.1:9999/public/;
}
location /wstep/ {
proxy_pass http://127.0.0.1:9999/wstep/;
}
location /epass/ {
proxy_pass http://127.0.0.1:9999/epass/;
}
location /enrolment/ {
proxy_pass http://127.0.0.1:9999/enrolment/;
}
location / {
proxy_pass http://127.0.0.1:8080;
}
}
Если backend Avanpost CA слушает другие адреса или порты, замените значения в соответствии с конфигурацией установленной версии.
4. Проверка конфигурации
sudo nginx -t
Ожидаемый результат:
syntax is ok
test is successful
5. SELinux
Не переводите SELinux в permissive без отдельного согласованного решения.
Если Nginx не может подключиться к локальному backend, для ОС с совместимой SELinux-политикой может потребоваться:
sudo setsebool -P httpd_can_network_connect 1
Восстановите контексты:
sudo restorecon -Rv /etc/nginx
sudo restorecon -Rv /var/log/nginx
Конкретные правила SELinux должны соответствовать используемой ОС и политике усиления.
6. Запуск Nginx
sudo systemctl enable --now nginx
sudo systemctl reload nginx
sudo systemctl status nginx
7. Проверка HTTPS
curl --head http://<CA_FQDN>/
Ожидается перенаправление на HTTPS.
Проверьте TLS:
openssl s_client \
-connect <CA_FQDN>:443 \
-servername <CA_FQDN> \
-verify_return_error
Проверьте интерфейс:
curl --head https://<CA_FQDN>/
Не используйте curl -k как итоговую проверку: этот параметр отключает проверку доверия.
8. Ограничение административного доступа
Если архитектура позволяет, ограничьте административный интерфейс доверенными сетями:
location / {
allow <ADMIN_NETWORK_CIDR>;
deny all;
proxy_pass http://127.0.0.1:8080;
}
Не применяйте это ограничение к публичным AIA, CDP, CRL и OCSP, если они должны быть доступны внешним проверяющим сторонам.
Критерии готовности
- Nginx запущен;
- конфигурация проходит
nginx -t; - HTTP перенаправляется на HTTPS;
- сертификат действителен;
- имя
<CA_FQDN>присутствует в SAN; - TLS 1.2 и TLS 1.3 доступны;
- reverse proxy передает запросы Avanpost CA;
- административный интерфейс ограничен согласно архитектуре;
- SELinux не отключен глобально.
Следующий шаг
Перейдите к странице Проверка установки.