Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Info
Для установки NGINX, должен быть подключен и настроен репозиторий пакетов nginx. Если это небыло сделано автоматически, добавьте репозиторий вручную.

Ручное добавление репозитория nginx 

RHEL и производные дистрибутивы

Установите пакеты, необходимые для подключения yum-репозитория:

...

[ngproxy.confinx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
 
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

Debian и производные дистрибутивы

Установите пакеты, необходимые для подключения apt-репозитория:

...

echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list

Установка nginx

Чтобы установить nginx, выполните следующую команду:

RHEL и производные дистрибутивы

sudo yum install nginx

В случае запроса подтверждения GPG-ключа проверьте, что отпечаток ключа совпадает с 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62.

Debian и производные дистрибутивы

sudo apt update
sudo apt install nginx

Документация по установке на прочие ОС доступна на официальном портале продукта.

Выпуск SSL/TLS сертификата

Для настройки защищенного соединения необходимо выпустить SSL/TLS сертификат на имя машины с установленным nginx.
Возможно выпустить самоподписанный сертификат или сертификат с УЦ.

Самоподписанный сертификат

  1. Создать самоподписанный сертификат утилитой openssl (необходимо подставить название машины с nginx вместо SERVERNAME.DOMAIN):

    sudo openssl req -x509 -nodes -addext "subjectAltName=DNS:SERVERNAME.DOMAIN,DNS:www.SERVERNAME.DOMAIN" -days 730 -newkey rsa:2048 -keyout /etc/ssl/private/SSL.key -out /etc/ssl/private/SSL.crt

  2. Добавить сертификат в доверенные на локальной машине в соответствии с выбранной для настройки ОС.

    Например, для RHEL и производных дистрибутивов:

    sudo cp /etc/ssl/private/SSL.crt /etc/pki/ca-trust/source/anchors/SSL.crt
    sudo update-ca-trust extract

    Для Debian и производных дистрибутивов:

    sudo cp /etc/ssl/private/SSL.crt /usr/local/share/ca-certificates/
    sudo update-ca-certificates -f

  3. Сделать сертификат доверенным в домене, например, с помощью групповых политик.

Выпуск сертификата на УЦ

  1. Выпустить сертификат на УЦ, например, Microsoft CA, экспортировать данный сертификат в формате .pfx на машину с установленным nginx (с закрытым ключом, с цепочкой корневых/промежуточных УЦ), и сертификат корневого УЦ.

    Warning
    Субъект (Subject) сертификата должен содержать FQDN сервера Rutoken KeyBox.
    Дополнительное имя субъекта (Subject Alternative Name) сертификата должно содержать атрибут DNS-имя (DNS Name) (FQDN сервера Rutoken KeyBox). Например: redos.demo.local или соответствующую запись с подстановочными знаками, например: *. demo.local (Wildcard certificate).
    Улучшенный ключ (Enhanced Key Usage) сертификата должен содержать значение Проверка подлинности сервера (Server Authentication).
  2. Добавить сертификат корневого УЦ в доверенные на машине с установленным nginx.
    Для RHEL и производных дистрибутивов:

    sudo cp ./root-ca.crt /etc/pki/ca-trust/source/anchors/
    sudo update-ca-trust extract

    Для Debian и производных дистрибутивов:

    sudo cp ./root-ca.crt /usr/local/share/ca-certificates/
    sudo update-ca-certificates -f

  3. Разделить .pfx сертификат на файл цепочки сертификатов и ключ, сделать файл ключа без пароля (необходимо подставить имя импортированного файла вместо PFXFILE): 

    openssl pkcs12 -in PFXFILE.pfx -chain -nokeys | sed -ne '/-BEGIN CERTIFICATE/,/END CERTIFICATE/p' > SSL.crt
    openssl pkcs12 -in PFXFILE.pfx -nocerts -out SSLencrypted.key
    openssl rsa -in SSLencrypted.key -out SSL.key

    Файл цепочки сертификатов должен быть следующего вида:

    -----BEGIN CERTIFICATE-----
    #Ваш сертификат#
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    #Промежуточный сертификат#
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    #Корневой сертификат#
    -----END CERTIFICATE-----

  4. Скопировать файлы цепочки сертификатов и ключа в папку, которая будет указана в файле конфигурации nginx:

    sudo cp ./SSL.crt /etc/ssl/private/
    sudo cp ./SSL.key /etc/ssl/private/

Настройка конфигурационного файла

Для работы Рутокен KeyBox требуется настроить nginx, чтобы он обслуживал запросы и отправлял их на проксируемый адрес (сервис RutokenKeyBox).
Как работают nginx и его модули, определяется в конфигурационном файле, по умолчанию он называется nginx.conf и в зависимости от операционной системы расположен в каталоге /usr/local/nginx/conf, /etc/nginx или /usr/local/etc/nginx

...

Изменения, сделанные в конфигурационном файле, не будут применены, пока nginx не будет отправлена команда перезагрузить конфигурацию или он не будет перезапущен. Для перезагрузки конфигурации выполните команду:

nginx -s reload

Файлы

proxy.conf

nginx.conf