Avanpost PKI : Установка серверной части на Windows

Общая информация

В данном разделе приводится инструкция по установке серверной части Avanpost PKI. Предполагается, что перед началом установки системы подготовлено:

  • Физический или виртуальный сервер, отвечающий системным требованиям Avanpost PKI необходимой конфигурации;
  • Операционная система Windows Server, версия которой соответствует системным требованиям Avanpost PKI;
  • Учетная запись, обладающая правами локального администратора на подготовленном сервере;
  • Доменная технологическая учетная запись для работы Avanpost PKI с доменом MS Active Directory (в случае использования домена MS Active Directory в качестве домена аутентификации). С правами Domain Users;

Установка и настройка СУБД

Microsoft SQL Server

  1. Скачать и установить MS SQL Server
  2. При установке выбрать кодировку сервера - "Cyrillic_General_CI_AS" (для поддержки русскоязычных символов и для case-insensitive сравнения строк в запросах)
  3. Настроить SQL Server после развертывания:
    • включить "SQL Server and Windows authentication mode" для инстанса сервера
    • включить учетную запись "sa" и задать ей стандартный пароль "Avanp0st"
    • Зайти в "SQL Server Configuration Manager", далее в  "Сетевая конфигурация SQL Server", далее "Протоколы для MSSQLSERVER". Найти в списке "TCP/IP" и включить
  4. Поставить Management tool, например, ms sql management studio.

PostgreSQL

  1. Скачать дистрибутив PostgreSQL для Windows версию не ниже 15
  2. Далее нужно следовать шагам wizard установщика
  3. Поставить management tool на, например, pgAdmin

Установка и настройка RabbitMQ

  1. Скачать и установить Erlang и RabbitMQ последней версии.
  2. Перейти в папку установки RabbitMQ (например, C:\Rabbitmq\rabbitmq_server-3.10.5\sbin) и запустить для нее консоль (cmd)
  3. Проверить корректность установки RabbitMQ командой ниже (ошибки должны отсутствовать)
    rabbitmqctl status
  4. Для возможности конфигурирования RabbitMQ, нужно включить management plugin командой
    rabbitmq-plugins enable rabbitmq_management

  5. Настроить RabbitMQ
    1. Перейти на страницу администрирования RabbitMQ http://localhost:15672/
    2. Зайти под пользователем "guest"  и паролем "guest"
    3. Создать пользователя "admin" и задать пароль
    4. Создать virtual host с новым именем, например, "pki7"
    5. Перейти в созданный ранее virtual host и нажать set permition для пользователя "admin"

Установка Microsoft .Net6

Скачать и установить с официального сайта Microsoft и установить sdk .net6  

Установка КрипоПро CSP

  1. Скачать с официального сайта и установить КриптоПро CSP 5.0 R3 (CryptoPro-5.0.13003)
  2. Ввести лицензию
  3. Если будет использоваться генерация на сервере ключевой пары надо строить ДСЧ "КриптоПро исходный материал" (External Gamma - набор случайных данных, необходимых для генерирования закрытых ключей).

Установка Microsoft Visual C++ Redistributable

Для работы серверных компонент Avanpost PKI необходимо установить Microsoft Visual C++ Redistributable 2015-2022 x86 и x64. Скачать можно с официльного сайта microsoft.

Установка Wkhtmltopdf

Для формирования печатных форм в Avanpost PKI необходимо установить Wkhtmltopdf именно 0.12.5 версию. Скачать её можно с официального сайта ПО или репозитория из github.

Установка основных серверных компонент Avanpost PKI

Подготовка к установке

  1.  Создать папку для компонентов PKI, например, C:\AP
  2. Подготовить PFX файлы для:
    1. Шифрования ПИН-кодов. Для того, что Avanpost PKI мог защитить ПИН-коды и иную критичную информацию перед ее размещением в базе данных. Avanpost PKI поддерживает как RSA, так и ГОСТ-сертификаты.
    2. Проверки подписи JWT-токена. Проверки подписи JWT-токена необходимы для того, что Avanpost PKI мог обеспечить внутренние технологические нужды в части аутентификации методов WEB API. Avanpost PKI поддерживает только RSA-сертификаты проверки подписи JWT-токена.

Установка Avanpost PKI Server

  1. Распакуйте содержимое zip-архива Avanpost.PKI.Server.v7.x.y.zip в папку C:\AP\AvanpostPKIServer.
  2. Скопируйте файл лицензии Avanpost.Pki.plic в папку C:\AP\Avanpost PKI Server.
  3. Отредактируйте основной конфигурационный файл службы Avanpost PKI Server - appsettings.json
  4. Секция <ConnectionStrings> отвечает за настройку подключения к базе данных. Отредактируйте параметры - "ConnectionString, DatabaseProvider, Password" в соответсвии с СУБД и параметрами подключения.
  5. А так же отредактируете остальные параметры:
    Наименование параметраОписаниеЗначение по умолчаниюПримечания
    Bus
    ServerUriАдрес сервера RabbitMQrabbitmq://localhostУказать адрес сервера, на котором установлен RabbitMQ
    UserNameЛогин технологического пользователяadminУказать логин технологического пользователя, созданного в процессе установки RabbitMQ
    UserPasswordПароль технологического пользователяAvanp0stУказать пароль технологического пользователя, созданного в процессе установки RabbitMQ
    VirtualHostИмя виртуального хостаpki7Указать имя виртуального хоста, созданного в процессе установки RabbitMQ
    EmailSettings
    MailBoxNameИмя почтового ящика отправителя почтовых рассылокAvanpost PKI
    UserNameЛогинTestUser
    FromАдрес отправителя почтовых рассылокavanpostpki@test.local
    PasswordПарольAvanp0st
    PortПорт SMTP-сервера25
    AnonymousВключит анонимную отправку сообщенийtrue
    HostАдрес SMTP-сервераlocalhost
    IsSslВключить использование SSLfalse
    PushSettings
    ExpiringPeriodПериод жизни неотправленных push-уведомлений в днях7
    SmevSettings
    smev_cert_numberСертификат для авторизации на СМЭВ-
    smev_urlАдреса сервисов СМЭВ 3-
    smev_ftp_urlАдреса сервисов СМЭВ 3-
    smev_esia_envРежим работы с сервисами СМЭВ 3DEV
    smev_time_intervalИнтервал опроса сервисов СМЭВ 3 для получения ответа в секундах. Если флаг закомментирован - взаимодействие не будет запущено.15
    smev_use_proxyИспользовать прокси-сервер при обращении к сервисам СМЭВ 3false
    smev_proxy_ipПрокси. IP-
    smev_proxy_portПрокси. Порт8080
    smev_proxy_userПрокси. Пользователь-
    smev_proxy_domainПрокси. Домен-
    smev_proxy_passПрокси. Пароль-
    smev_crl_urlадрес списка отзыва сертификатов-
    smev_revocation_periodКак часто и в какой период времени обращаться к СМЭВ, чтобы получать данные об отозванных сертификатах0 */15 8-20 ? * * *
    issuer_info
    IssuerName
    -
    Address
    -
    Phone
    -
    Other
    -
    SmevEcpSettings
    SmevEcpFnsBaseUrlАдрес сервисов ЕЦП ФНС УЦ-
    SmevEcpFnsOperatorCertNumberСерийный номер технологического сертификата оператора ЕЦП ФНС УЦ-
    CryptoProCliSettings
    CertmgrFilePathПуть до испольняемого файла утилиты Криптопро certmgrC:\\Program Files\\Crypto Pro\\CSP\\certmgr.exe
    CsptestFilePathПуть до испольняемого файла утилиты Криптопро csptestC:\\Program Files\\Crypto Pro\\CSP\\csptest.exe
    TempFilesFolderPathПуть к папке, в которую будут записываться временные файлыC:\\temp
    AdPublishingPluginSettings
    BaseAddressАдрес Ad, для плагина публикации сертификатаLDAP://10.10.180.107:389/dc=avpki,dc=local
    UserЛогин для AD Admin
    PasswordПароль от логинаAvanp0st
    AuthTypeТип аутентификацииBasic
    PinCertificatesSettings
    PinCertificatesСписок сертификатов шифрования ПИН кодов
    IsMainЕсли true, то сертификат будет использоваться для шифрования новых пин-кодовtrue
    PathПуть до pfxC:\\Temp\\pkiJwtCertificate.pfx
    PasswordПароль от pfx1

    CloudTokensEnableВключить использование облачных токенов. Варианты значений: Включить - true, Отключить - false. Значение по умолчанию - falsetrue
    plugin_domain_pathПуть к папке с подключаемыми плагинами публикации сертификатов во внешние системы. Значение по умолчанию - pluginC:\\AP\\Avanpost.PKI.Plugins
    DefaultUserPin
    null
    WkHtmlToPdfPathПуть к исполняемому файлу конвертера отчетов в PDFC:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe
    FinallyClearReportFilesУдалять временные файлы после завершения построения отчетовfalse
    TemplatePathПуть к папке с шаблонами отчетовtemplates
    ClientTypeСпецифичные настройки под Заказчиков. Возможные значения: Megafon, MTSBank, FNSMegafon
    ReportRowNumbers
    false
    corporateNameНаименование головной организации-
    issuerNameНаименование удостоверяющего центра организации-
    adminsroleНаименование роли корневого администратораAdminРекомендуется не изменять данный параметр
    AutoPlannedTasksCancellationCronCron-выражение для настройки запуска автоматической отмены отложенных задач0 0 0 1/1 * ? *
    WorkflowServiceUserIdИдентификатор системного пользователя1Рекомендуется не изменять данный параметр

  6. Выполните первоначальную инициализацию и развертывание базы данных Avanpost PKI. Для этого запустите командную строку от имени администратора, перейдите в директорию Avanpost PKI Server и выполните команду:
    dotnet Avanpost.Pki.Server.dll migrations dbinit

  7. Для наполнения БД первичными данными выполните команду:
    dotnet Avanpost.Pki.Server.dll migrations fill

  8. Для создания технологического (системного) пользователя выполните команду:
    dotnet Avanpost.Pki.Server.dll migrations addsystemuser -login administrator
    Вместо "administrator" нужно указать логин системного пользователя PKI
  9. Выполните установку службы Avanpost PKI Server в оснастку служб ОС Windows.
    dotnet Avanpost.Pki.Server.dll service install
  10. Отредактируйте конфигурационный файл подсистемы логирования службы Avanpost PKI Server - NLog.config - раскомментируйте строку:
    <variable name="basedir" value="C:\AP\AvanpostLogs"/>

Установка Avanpost PKI Web

  1. Распакуйте содержимое zip-архива Avanpost.PKI.Web.v7.x.y.zip в папку C:\AP\AvanpostPKIWeb.
  2. Отредактируйте основной конфигурационный файл службы Avanpost PKI Web- appsettings.json
  3. Секция <ConnectionStrings> отвечает за настройку подключения к базе данных. Отредактируйте параметры - "ConnectionString, DatabaseProvider, Password" в соответсвии с СУБД и параметрами подключения.
  4. А так же отредактируете остальные параметры:
    Наименование параметраОписаниеЗначение по умолчаниюПримечания
    Bus
    ServerUriАдрес сервера RabbitMQrabbitmq://localhostУказать адрес сервера, на котором установлен RabbitMQ
    UserNameЛогин технологического пользователяadminУказать логин технологического пользователя, созданного в процессе установки RabbitMQ
    UserPasswordПароль технологического пользователяAvanp0stУказать пароль технологического пользователя, созданного в процессе установки RabbitMQ
    VirtualHostИмя виртуального хостаpki7Указать имя виртуального хоста, созданного в процессе установки RabbitMQ
    LdapSettings
    IsMainОпределяет первоочередность сервера аутентификации, если логин пришел без префикса доменаfalse
    PrefixОпределяет сервер аутентификации, если логин пришел с префиксом доменаtestpki
    Serverадрес подключения к LDAP-каталогу для аутентификации пользователейlocalhost
    ContainerNameКонтейнер поиска пользователейDC=pki7,DC=dom
    AuthTypeОпределяет способ аутентификации с Ldap-сервером.BasicВозможные значения: Anonymous, Basic, Negotiate, Ntlm, Digest, Sicily, Dpa, Msn, External, Kerberos
    AdminDnТехническая учетная запись Ldap , используемая для определения DN пользователяCN=admin,DC=pki7,DC=dom
    AdminPasswordПароль технической учетной записи LdapAvanp0st
    UserLoginAttributeАтрибут Ldap, по которому выполняется поиск DN пользователяuid
    UserObjectClassКласс записи Ldap, по которому выполняется поиск DN пользователяperson
    SmevSettings
    smev_cert_numberСертификат для авторизации на СМЭВ

    smev_urlАдреса сервисов СМЭВ 3

    smev_ftp_urlАдреса сервисов СМЭВ 3

    smev_esia_envРежим работы с сервисами СМЭВ 3DEV
    smev_time_intervalИнтервал опроса сервисов СМЭВ 3 для получения ответа в секундах. Если флаг закомментирован - взаимодействие не будет запущено

    smev_use_proxyИспользовать прокси-сервер при обращении к сервисам СМЭВ 3false
    smev_proxy_ipПрокси. IP

    smev_proxy_portПрокси. Порт8080
    smev_proxy_userПрокси. Пользователь

    smev_proxy_domainПрокси. Домен

    smev_proxy_passПрокси. Пароль

    smev_crl_urlадрес списка отзыва сертификатов

    issuer_info
    IssuerName


    Address


    Phone


    Other


    SmevEcpSettings
    SmevEcpFnsBaseUrlАдрес сервисов ЕЦП ФНС УЦ-
    SmevEcpFnsOperatorCertNumberСерийный номер технологического сертификата оператора ЕЦП ФНС УЦ-
    EmailSettings
    MailBoxNameИмя почтового ящика отправителя почтовых рассылокAvanpost PKI
    UserNameЛогинTestUser
    FromАдрес отправителя почтовых рассылокavanpostpki@test.local
    PasswordПарольAvanp0st
    PortПорт SMTP-сервера25
    AnonymousВключит анонимную отправку сообщенийtrue
    HostАдрес SMTP-сервераlocalhost
    IsSslВключить использование SSLfalse
    CryptoProCliSettings
    CertmgrFilePathПуть до испольняемого файла утилиты Криптопро certmgrC:\\Program Files\\Crypto Pro\\CSP\\certmgr.exe
    CsptestFilePathПуть до испольняемого файла утилиты Криптопро csptestC:\\Program Files\\Crypto Pro\\CSP\\csptest.exe
    TempFilesFolderPathПуть к папке, в которую будут записываться временные файлыC:\\temp
    JwtSettings
    CertificatePathПуть к pfx сертификата проверки JWT-токенаC:\\Temp\\pkiJwtCertificate.pfx
    CertificatePasswordПароль от pfx файла1
    KeepSessionTimeВремя жизни сессии пользователя в часах1
    IdpSettings
    Url https://idp
    RedirectUri https://host/oauth/callbackМеняется только host, /oauth/callback - обязательная часть
    PostLogoutRedirectUri https://host/oauth/logoutcallbackМеняется только host, /oauth/logoutcallback - обязательная часть
    ClientId pki
    ClientSecret topsecret
    Scope openid profile
    LoginClaimНаименование claim из id_token , по значению которого будет идентифицироваться пользовательpreferred_username
    ServerCertificateValidationIgnore
    true
    PkiAuthRedirectРедиректить основную старницу аутентификации PKI сразу на Idpfalse
    PinCertificatesSettings
    PinCertificatesСписок сертификатов шифрования ПИН кодов
    IsMainЕсли true, то сертификат будет использоваться для шифрования новых пин-кодовtrue
    PathПуть до pfxC:\\Temp\\pkiJwtCertificate.pfx
    PasswordПароль от pfx1
     
    WorkflowServiceUserIdИдентификатор системного пользователя1Рекомендуется не изменять данный параметр
    UseNegotiateИспользовать сквозную Windows-аутентификацию, Kerberos-аутентификациюfalseВарианты значений: false - не использовать, true - использовать
    adminsroleНаименование роли корневого администратораAdminРекомендуется не изменять данный параметр
    DefaultUserPin
    null
    NeedWebActionEventsLogging false
    plugin_domain_pathПуть к папке с подключаемыми плагинами публикации сертификатов во внешние системыC:\\AP\\Avanpost.PKI.Plugins


  5. Откройте cmd от имени администратора и перейдите в папку веб приложения командой cd.
  6. Выполните cli-комманду для создания службы веб приложения:
    dotnet Avanpost.Pki.Web.dll service install

  7. Запустите службу Avanpost.Pki.Web. Если все настроено корректно то по адресу http://localhost:5000 откроется страница логина в PKI.
  8. Для изменения ip адреса и порта нужно остановить службу и изменить службу коммандой sc, пример:
    sc config Avanpost.Pki.Web_7 binPath="C:\Program Files\dotnet\dotnet.exe C:\AP\Avanpost.Pki.Web\Avanpost.Pki.Web.dll --urls http://localhost:5555"

Установка Avanpost PKI ExternalApi

  1. Распакуйте содержимое zip-архива Avanpost.PKI.Web.ExternalRestApi.v7.x.y.zip в папку C:\AP\AvanpostPKIWebExternalRestApi
  2. Отредактируйте основной конфигурационный файл службы Avanpost PKI Web External Rest Api - appsettings.json
  3. Секция <ConnectionStrings> отвечает за настройку подключения к базе данных. Отредактируйте параметры - "ConnectionString, DatabaseProvider, Password" в соответсвии с СУБД и параметрами подключения.
  4. А так же отредактируете остальные параметры:
    Наименование параметраОписаниеЗначение по умолчаниюПримечания
    Bus
    ServerUriАдрес сервера RabbitMQrabbitmq://localhostУказать адрес сервера, на котором установлен RabbitMQ
    UserNameЛогин технологического пользователяadminУказать логин технологического пользователя, созданного в процессе установки RabbitMQ
    UserPasswordПароль технологического пользователяAvanp0stУказать пароль технологического пользователя, созданного в процессе установки RabbitMQ
    VirtualHostИмя виртуального хостаpki7Указать имя виртуального хоста, созданного в процессе установки RabbitMQ
    LdapSettings
    IsMainОпределяет первоочередность сервера аутентификации, если логин пришел без префикса доменаfalse
    PrefixОпределяет сервер аутентификации, если логин пришел с префиксом доменаtestpki
    Serverадрес подключения к LDAP-каталогу для аутентификации пользователейlocalhost
    ContainerNameКонтейнер поиска пользователейDC=pki7,DC=dom
    AuthTypeОпределяет способ аутентификации с Ldap-сервером.BasicВозможные значения: Anonymous, Basic, Negotiate, Ntlm, Digest, Sicily, Dpa, Msn, External, Kerberos
    AdminDnТехническая учетная запись Ldap , используемая для определения DN пользователяCN=admin,DC=pki7,DC=dom
    AdminPasswordПароль технической учетной записи LdapAvanp0st
    UserLoginAttributeАтрибут Ldap, по которому выполняется поиск DN пользователяuid
    UserObjectClassКласс записи Ldap, по которому выполняется поиск DN пользователяperson
    CryptoProCliSettings
    CertmgrFilePathПуть до испольняемого файла утилиты Криптопро certmgrC:\\Program Files\\Crypto Pro\\CSP\\certmgr.exe
    CsptestFilePathПуть до испольняемого файла утилиты Криптопро csptestC:\\Program Files\\Crypto Pro\\CSP\\csptest.exe
    TempFilesFolderPathПуть к папке, в которую будут записываться временные файлыC:\\temp

    plugin_domain_pathПуть к папке с подключаемыми плагинами публикации сертификатов во внешние системы. Значение по умолчанию - pluginC:\\AP\\Avanpost.PKI.Plugins
    NeedWebActionEventsLogging
    false
    AllowedHosts
    *

  5. Откройте cmd от имени администратора и перейдите в папку внешнего api командой cd.
  6. Выполните cli-комманду для создания службы внешнего api:
    dotnet Avanpost.Pki.Web.ExternalRestApi.dll service install
  7. Запустите службу Avanpost.Pki.Web.ExternalRestApi 7. Если все настроено корректно то по адресу http://localhost:5000/swagger откроется страница внешнего api.
  8. Для изменения ip адреса и порта нужно остановить службу и изменить службу коммандой sc, пример:
    sc config Avanpost.Pki.Web.ExternalRestApi_7 binPath="C:\Program Files\dotnet\dotnet.exe C:\AP\AvanpostPKIWebExternalRestApi\Avanpost.Pki.Web.ExternalRestApi.dll --urls http://localhost::5004"

Установка Avanpost PKI Siem Log Service

  1. Распакуйте содержимое zip-архива Avanpost.PKI.Siem.LogService.v7.x.y.zip в папку C:\AP\AvanpostPKISiemLogService
  2. Отредактируйте основной конфигурационный файл службы Avanpost PKI Siem Log Service - appsettings.json
  3. Секция <ConnectionStrings> отвечает за настройку подключения к базе данных. Отредактируйте параметры - "ConnectionString, DatabaseProvider, Password" в соответсвии с СУБД и параметрами подключения.
  4. А так же отредактируете остальные параметры:
    Наименование параметраОписаниеЗначение по умолчаниюПримечания
    Bus
    ServerUriАдрес сервера RabbitMQrabbitmq://localhostУказать адрес сервера, на котором установлен RabbitMQ
    UserNameЛогин технологического пользователяadminУказать логин технологического пользователя, созданного в процессе установки RabbitMQ
    UserPasswordПароль технологического пользователяAvanp0stУказать пароль технологического пользователя, созданного в процессе установки RabbitMQ
    VirtualHostИмя виртуального хостаpki7Указать имя виртуального хоста, созданного в процессе установки RabbitMQ
     
    IsLogSenderEnabled true 
    TcpSender
    HostАдрес Siem сервиса127.0.0.1 
    PortПорт Siem сервиса21 
    UdpSender
    HostАдрес Siem сервиса127.0.0.1 
    PortПорт Siem сервиса21 
  5. Откройте cmd от имени администратора и перейдите в папку службы логирования командой cd.
  6. Выполните комманду в cmd, запустив от имени администратора, для создания службы логирования (необходимо проверить путь к библиотеке, он может отличаться от вашего):
    sc create Avanpost_PKI_LogService_7_2 DisplayName="Avanpost PKI LogService 7 2" binPath="C:\Program Files\dotnet\dotnet.exe C:\AP\AvanpostPKISiemLogService\Avanpost.Pki.Siem.LogService.dll" start=auto




Обсуждение