Если в вашей инфраструктуре нет центра сертификации, для обеспечения безопасности соединения допускается использование самоподписанного сертификата.
Чтобы выпустить сертификат, выполните следующие действия в терминале сервера от имени администратора (root):
Перейдите в каталог /etc/ssl.
Сгенерируйте закрытый ключ и самоподписанный сертификат.
openssl req -x509 -nodes -days 365 -newkey rsa:2048 \ -keyout /etc/ssl/private/progate.key \ -out /etc/ssl/certs/progate.crt
Команда выше генерирует файл ключа и самоподписанный сертификат, действительные в течение 365 дней. Укажите следующие значения по запросу команды:
Country Name (2 letter code) [AU]: двухсимвольный код страны.
State or Province Name (full name) [Some-State]: название региона.
Locality Name (eg, city) []: название города.
Organization Name (eg, company) [Internet Widgits Pty Ltd]: название компании.
Organizational Unit Name (eg, section) []: название структурного подразделения компании.
Common Name (e.g. server FQDN or YOUR name) []: адрес, который будет использоваться для подключения к веб-приложению Postgres ProGate, например progate.example.com.
Email Address []: электронная почта администратора.
Конфигурация веб-сервера обычно располагается в каталоге /etc/nginx, однако структура файлов может отличаться в зависимости от дистрибутива операционной системы. Например, конфигурация виртуального сервера располагается в других каталогах для следующих операционных систем:
Для операционных систем на основе Debian (например, Astra Linux) — в каталоге /etc/nginx/sites-enabled/.
Для операционных систем на основе Red Hat (например, RED OS) — в каталоге /etc/nginx/vhosts/.
За подробной информацией о расположении и структуре дерева кофигурации обратитесь к официальной документации вашей операционной системы.
Процедура настройки, описанная ниже, предполагает, что конфигурация веб-сервера располагается в каталоге /etc/nginx/, а параметры виртуального сервера — в каталоге /etc/nginx/conf.d/. Выполните следующие действия, чтобы настроить веб-сервер:
Разместите файл progate.crt в каталоге /etc/ssl/certs/.
Разместите файл progate.key в каталоге /etc/ssl/private/.
Владельцем файлов progate.crt и progate.key должен быть администратор (root) с правами доступа 644 rw-r--r-- и 600 rw------- соответственно. Чтобы изменить права доступа, выполните следующую команду:
chown root:root /etc/ssl/certs/progate.crt /etc/ssl/private/progate.key chmod 600 /etc/ssl/private/progate.key chmod 644 /etc/ssl/certs/progate.crt
Создайте файл конфигурации /etc/nginx/conf.d/progate.example.com.conf виртуального сервера со следующим содержимым:
server {
listen 80 default_server;
server_name _;
return 301 https://progate.example.com$request_uri;
}
server {
listen 443 ssl default_server;
server_name progate.example.com;
ssl_certificate /etc/ssl/certs/progate.crt;
ssl_certificate_key /etc/ssl/private/progate.key;
ssl_protocols TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
sub_filter_once off;
sub_filter **CSP_NONCE** $request_id;
add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";
add_header X-XSS-Protection "1; mode=block";
add_header Strict-Transport-Security "max-age=31536000";
add_header Content-Security-Policy "
default-src 'none';
script-src 'self' 'nonce-$request_id';
style-src 'self' 'nonce-$request_id';
img-src 'self' data:;
font-src 'self';
connect-src 'self';
form-action 'self';
base-uri 'self';
frame-ancestors 'none';
frame-src 'none';
object-src 'none';
" always;
root /opt/pgpro/progate/ui;
location = /docs {
try_files /index.html =404;
}
location = /docs/ {
try_files /index.html =404;
}
location ~ ^/docs/(ru|en)/ {
try_files $uri =404;
}
location / {
index index.html;
try_files $uri $uri/ /index.html;
}
location /api {
try_files $uri @api;
}
location @api {
proxy_pass http://127.0.0.1:8081;
proxy_http_version 1.1;
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_read_timeout 180s;
}
location ~ /\.(ht|git|svn|env) {
deny all;
}
location ~ /\. {
deny all;
}
}Чтобы раздел документации веб-приложения работал корректно, настройте маршрутизацию пути /docs. Для этого задайте отдельные параметры location для /docs. Если указать только общий параметр location / с try_files, запросы к /docs и /docs/ могут обрабатываться иначе, чем ожидает веб-приложение (в том числе могут возникать ошибки доступа к документации). Укажите следующие параметры:
location = /docs и location = /docs/: точное совпадение URI. Запрос возвращает файл index.html точки входа в документацию.
location ~ ^/docs/(ru|en)/: статические файлы документации для локалей ru и en. Если файл отсутствует по URI, возвращается ответ 404 без файла index.html, чтобы не скрывать ошибочные пути. При необходимости поддержки других языков укажите дополнительные коды языков в регулярном выражении.
В параметре конфигурации root /opt/pgpro/progate/ui; указывается каталог, в который по умолчанию устанавливается пакет progate-gui. При переносе содержимого пакета в другой каталог измените значение этого параметра, чтобы отразить фактическое расположение содержимого.
Параметр конфигурации proxy_pass http://127.0.0.1:8081; предполагает, что для следующих параметров конфигурации серверной части Postgres ProGate заданы соответствующие значения: PROGATE_HTTP_SERVER_HOST="127.0.0.1" и PROGATE_HTTP_SERVER_PORT="8081".
Проверьте корректность конфигурации, выполнив команду nginx -t. При отсутствии ошибок вывод будет следующим:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Если найдены ошибки, проверьте корректность указанных значений параметров.
Если ошибки не найдены, перезапустите веб-сервер, выполнив команду systemctl restart nginx. После перезапуска веб-приложение Postgres ProGate будет доступно по адресу https://progate.example.com.