Skip to content

Настройка SSL

Важно!

Сразу после установки Vampy WebUI доступен только через HTTP.

Вы можете настроить SSL одним из следующих методов:

  1. Загрузить свой SSL сертификат на платформу и настроить HTTP/HTTPs;
  2. Настроить HTTP или TCP реверс-прокси с SSL-терминацией.

Загрузка SSL-сертификатов в ASMP

Загрузите SSL-сертификаты в формате PEM в каталог /opt/hw-vmp/vssl. Обратите внимание, что загруженные файлы не будут перезаписаны при обновлении до следующей версии, поэтому можете смело хранить их в этом каталоге.

Вы можете изменить каталог по умолчанию, если он вам не подходит:

  1. Откройте файл /opt/hw-vmp/config/user.ini (требуются права root);
  2. Добавьте опцию v.ssl.dir в раздел [main] и укажите новый путь:
[main]
v.ssl.dir = /opt/hw-vmp/vssl

Чтобы применить изменения, выполните команду:

/opt/hw-vmp/bin/reconfig

Настройка HTTP/HTTPs

Чтобы настроить перенаправление с HTTP на HTTPs, добавьте следующие параметры в раздел [main] файла /opt/hw-vmp/config/user.ini (требуются права root):

[main]
v.ssl.enabled = ssl_redirect
v.deck.ip.expose = 0.0.0.0
v.deck.port.expose = 80
v.deck.https.ip.expose = 0.0.0.0
v.deck.https.port.expose = 443

где:

  • v.ssl.enabled - опция, которая включает SSL. Возможные значения:
    • no_ssl - используется только незащищенное HTTP-соединение (значение по умолчанию);
    • ssl_both - используются как незащищенное HTTP-соединение, так и защищенное HTTPs-соединение;
    • ssl_redirect - перенаправление с незащищенного HTTP-соединения на защищенное HTTPs-соединение;
    • ssl_only - используется только защищенное HTTPs-соединение.
  • v.deck.ip.expose - IP-адрес для незащищенного HTTP-соединения (0.0.0.0 - публичный IP-адрес, 127.0.0.1 - локальный IP-адрес). Обязательно для no_ssl, ssl_both и ssl_redirect.
  • v.deck.port.expose - номер порта для незащищенного HTTP-соединения (значение по умолчанию - 80). Обязательно для no_ssl, ssl_both и ssl_redirect.
  • v.deck.https.ip.expose - IP-адрес для защищенного HTTPs-соединения (0.0.0.0 - публичный IP-адрес, 127.0.0.1 - локальный IP-адрес). Обязательно для ssl_only, ssl_both и ssl_redirect.
  • v.deck.https.port.expose - номер порта для защищенного HTTPs-соединения. Обязательно для ssl_only, ssl_both и ssl_redirect.

Чтобы применить изменения, выполните команду:

/opt/hw-vmp/bin/reconfig

Настройка HTTP или TCP реверс-прокси с SSL-терминацией

При необходимости вы можете запустить ASMP за вашим собственным реверс-прокси. Например, настройте nginx, который будет проксировать все запросы к ASMP.

Чтобы использовать свой прокси-сервер на той же машине, измените следующие параметры в /opt/hw-bw/config/user.ini (требуются права root):

[main]
v.ssl.enabled = no_ssl
v.deck.ip.expose = 127.0.0.0
v.deck.port.expose = 10001

Чтобы применить изменения, выполните команду:

/opt/hw-vmp/bin/reconfig

Пример конфигурации nginx как HTTP реверс-прокси

  1. Пример конфигурации nginx:

      server {
        server_name yourasmp.example.com;
        access_log /var/log/nginx/yourasmp.example.com-access.log 
      full_log;
        error_log /var/log/nginx/yourasmp.example.com-error.log;
    
        client_max_body_size 0;
    
        location / {
            proxy_pass http://localhost:10001;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For 
        $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP $remote_addr;
        }
    
        listen 443 ssl;
        ssl_certificate /path/to-your/certs/fullchain.pem;
        ssl_certificate_key /path/to-your/certs/privkey.pem;
        }
    
        server {
            if ($host = yourasmp.example.com) {
                return 301 https://$host$request_uri;
        }
    
        listen 80;
            server_name yourasmp.example.com;
            return 404;
        }
    

    где:

    • 10001 - номер порта, который вы установили для v.deck.port.expose в файле user.ini;
    • yourasmp.example.com - имя хоста или IP-адрес вашей виртуальной машины.
  2. Пример конфигурации Let's Encrypt с certbot. Вы должны установить эту конфигурацию перед тем, как выдавать сертификаты с помощью certbot.

server {
    listen 80;
    server_name yourasmp.example.com;
    access_log /var/log/nginx/yourasmp.example.com-access.log 
   full_log;
    error_log /var/log/nginx/yourasmp.example.com-error.log;

    client_max_body_size 0;

    location / {
      proxy_pass http://localhost:10001;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For 
$proxy_add_x_forwarded_for;
      proxy_set_header X-Real-IP $remote_addr;
   }
 }

где:

  • 10001 - номер порта, который вы установили для v.deck.port.expose в файле user.ini;
  • yourasmp.example.com - имя хоста или IP-адрес вашей виртуальной машины.

Добавление корневых сертификатов

Сначала вам нужно создать каталог /opt/certs и скопировать корневой сертификат на платформу:

cp ca.pem /opt/certs

После этого необходимо указать путь к каталогу с корневыми сертификатами в файле /opt/hw-vmp/config/user.ini, добавив там опцию:

custom.root.certs.path = /opt/certs

Перезапустите платформу (systemctl restart hw-vmp) или выполните /opt/hw-vmp/bin/reconfig, если вы изменили файл /opt/hw-vmp/config/user.ini.

Конвертация CA-сертификата из .PFX

Вам может понадобиться конвертировать CA из .pfx.

  1. Создайте SSL-ключ:

    openssl pkcs12 -in your_file.pfx -nocerts -nodes -out key.pem
    

  2. Создайте SSL-сертификат:

    openssl pkcs12 -in your_file.pfx -clcerts -nokeys -out domain.pem
    

    Примечание: если удалить флаг -out, то ключ со всей информацией будет выведен на экран. Скопируйте всё, начиная со строки BEGIN PRIVATE KEY / BEGIN CERTIFICATE и до END PRIVATE KEY / END CERTIFICATE, и сохраните в файл.

  3. Создайте корневой сертификат:

    openssl pkcs12 -in your_file.pfx -cacerts -nokeys -chain -out ca.pem
    

    Примечание: вы получите цепочку корневых сертификатов. Вам понадобится только последний сертификат в этой цепочке. Например, вы можете открыть файл для редактирования и удалить все, кроме последнего.

  4. Объедините файлы в один сертификат:

    cat domain.pem ca.pem > cert.pem
    

  5. Скопируйте SSL-сертификаты на виртуальную машину с установленной платформой в каталог с SSL-сертификатами:

    cp cert.pem /opt/hw-vmp/vssl/
    cp key.pem /opt/hw-vmp/vssl/