Инструменты пользователя

Инструменты сайта


tms_nginx_with_ssl_configuration

Документация только для TMS версии 3.2.x

Настройка веб сервера nginx с SSL как проксирующего сервера для TMS

Требования

Для получения ssl сертификата letsencrypt, сервер должен иметь публичный (доступный из интернета) домен и IP адрес.

Необходимое ПО

  • Nginx - реверс прокси
  • Certbot - получение сертификатов letsencrypt

Установка nginx

apt update && apt install nginx

Настройка nginx

unzip nginx_sample_configs.zip
  • Расположить шаблоны в нужных местах
cd nginx_sample_configs/
rm -f /etc/nginx/conf.d/default.conf
cp virtualhost_sample.conf /etc/nginx/conf.d/
mkdir -p /etc/nginx/tvip/
cp tms-locations.conf /etc/nginx/tvip/
  • Исправить стандартные значения

Настройка TMS

Редактируем конфигурационный файл tvip-tms в любом редакторе, для примера vim

vim /opt/tvip-tms/application-prod.properties

В нем добавляем следующие параметры

server.port=8080
network.trusted-proxies=127.0.0.1
server.address=127.0.0.1

Перезапуск сервисов

systemctl restart tvip-tms
systemctl restart nginx

Установка certbot

apt install certbot

Создаем постоянную директорию для проверки домена ботом

mkdir -p /var/www/html/.well-known/acme-challenge

Конфигурируем certbot

certbot register --agree-tos --m ваш_email
certbot certonly -d ваш_домен --webroot

Отвечаем на вопросы бота

Input the webroot for ваш_домен: (Enter 'c' to cancel): /var/www/html/

Добавить в файл крона

nano /etc/cron.d/certbot

Итоговый файл должен выглядить следующим образом

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew --renew
-hook "/etc/init.d/nginx reload"

Завершение настройки

После успешного полученая сертификата сертификат и ключ будут расположены по адресу:

  • Сертификат - /etc/letsencrypt/live/ваш_домен/fullchain.pem
  • Ключ - /etc/letsencrypt/live/ваш_домен/privkey.pem

Редактируем файл конфигурации виртуального хоста, приводим к виду

proxy_cache_path /cache levels=1:2 keys_zone=ram:10m inactive=21600s max_size=1900m;
proxy_cache_min_uses 1;
upstream tms {
    server 127.0.0.1:8080; # UPSTREAM TO TMS TMS bind port 8080 on localhost
}
server {
    listen       80;
    server_name  ваш_домен; # Указываем Ваш домен
    server_tokens off;
    access_log /var/log/nginx/localhost-http-access.log;
    error_log /var/log/nginx/localhost-http-error.log;

    underscores_in_headers on;
    large_client_header_buffers 8 32k;

    include /etc/nginx/tvip/tms-locations.conf;

    location /.well-known {
        root /var/www/html;
    }
}

server {
    listen 443 ssl;
    server_name  ваш_домен; # Указываем Ваш домен

    access_log /var/log/nginx/localhost-https-access.log;
    error_log /var/log/nginx/localhost-https-error.log;

    ssl_certificate /etc/letsencrypt/live/ваш_домен/fullchain.pem; # Указываем Ваш домен
    ssl_certificate_key /etc/letsencrypt/live/ваш_домен/privkey.pem; # Указываем Ваш домен
    ssl_trusted_certificate /etc/letsencrypt/live/ваш_домен/chain.pem; # Указываем Ваш домен

    ssl_dhparam /etc/ssl/dhparam.pem;
    ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1 TLSv1;
    ssl_prefer_server_ciphers on;
    ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA512:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:ECDH+AESGCM:ECDH+AES256:DH+AESGCM:DH+AES256:RSA+AESGCM:!aNULL:!eNULL:!LOW:!RC4:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS;
    ssl_session_cache shared:TLS:2m;
    ssl_buffer_size 4k;
    ssl_stapling on;
    ssl_stapling_verify on;

    add_header Strict-Transport-Security 'max-age=31536000; includeSubDomains; preload' always;

    include /etc/nginx/tvip/tms-locations.conf;

Применяем конфигурацию

systemctl reload nginx
tms_nginx_with_ssl_configuration.txt · Последние изменения: 2020/04/15 16:16 — Денис Цыганов