Skip to main content
Version: Indeed Access Manager 9.2

Indeed AM SMS Proxy

Indeed AM SMS Proxy (SMS Proxy) — это веб-приложение, которое напрямую подключается к SMPP-шлюзу и отправляет SMS, при этом Indeed Core Server не производит разрыв сессии с SMPP-шлюзом, и запросы отправляются в рамках одного подключения, а не в отдельных для каждого запроса.

Установка SMS Proxy

Чтобы установить SMS Proxy на сервере с операционной системой Linux, выполните следующие действия:

  1. Откройте файл am/.env.

  2. В переменной COMPOSE_PROFILES добавьте значение sms-proxy.

  3. Откройте конфигурационный файл am/haproxy/haproxy.cfg и раскомментируйте строки, связанные с компонентом SMS Proxy.

    • Строку с параметром acl, в которой упоминается компонент.

       acl path-sms-proxy  path_beg -i /am/proxies/sms
    • В параметре http-request reject unless добавьте компонент path-sms-proxy и разделитель || (при необходимости).

      http-request reject unless path-core || path-idp || path-mc || path-uc || path-ls || path-sms-proxy
    • Строку с параметром use_backend.

       use_backend Sms_Proxy_Backend  if path-sms-proxy
    • Строку с адресом компонента в параметре backend Sms_Proxy_Backend.

      backend Sms_Proxy_Backend
      server docker sms-proxy:5443 check inter 5000ms ssl verify required ca-file trusted_ca.crt
  4. Перезапустите контейнер с приложением.

Подготовка сертификата для SMS Proxy

  1. Чтобы создать сертификат для SMS Proxy, запустите скрипт am/ssl/generateSmsCert.sh на хосте, где установлен SMS Proxy:

     sudo bash ./generateSmsCert.sh
    Примечание

    Скрипт автоматически заполнит поле с отпечатком сертификата в конфигурационном файле am/sms-proxy/app-settings.json.

    Если SMS Proxy установлен на отдельном от Core Server хосте, то необходимо перенести файл am/ssl/client/sms-client.pfx в каталог am/ssl/client/ хоста, где установлен Core Server.

    Результат:

    • sms-client.pfx — сертификат с секретным ключом для Core Server,
    • sms-client.cer — публичный ключ сертификата для Core Server.
  2. Добавьте сертификат sms-client.cer в директорию am/ssl/ca/ и сертификат sms-client.pfx в директорию am/ssl/client/ на хосте, где установлен Core Server.

  3. Запустите скрипт prepareCaFile.sh для повторной генерации trusted_ca.crt.

    sudo bash ./prepareCaFile.sh

    Результат: создается сертификат am/ssl/ca/trusted_ca.crt.

    Примечание

    При изменении состава каталога am/ssl/ca необходимо перезапустить скрипт prepareCaFile.sh.

  4. На хосте с Core Server откройте access-manager.docker-compose.yml и раскомментируйте строку:

    #- ./ssl/client/sms-client.pfx:/tmp/am_user/.dotnet/corefx/cryptography/x509stores/my/sms-client.pfx:ro,Z

Настройка SMS Proxy в Management Console

  1. Откройте Management Console и в разделе Конфигурация→Аутентификаторы выберите SMS OTP или Storage SMS OTP.

  2. В разделе Настройки шлюза выберите тип подключения SMS Proxy.

  3. В поле Адрес подключения к серверу укажите внешний URL хоста (или балансировщика).

    Пример: https://!!!HOST_DNS!!!:<номер порта>/am/proxies/sms

    Подсказка

    В настройке указывается номер порта, который задан в переменной ENDPOINT_HTTPS_PORT в файле am/.env.

  4. Заполните поле Отпечаток сертификата клиента. Значение можно посмотреть в конфигурационном файле am/sms-proxy/app-settings.json в разделе Authentication": {"Certificate": {"Thumbprint": "" } }. Значение в параметре задается автоматически после запуска скрипта am/ssl/generateSmsCert.sh.

  5. В поле Отпечаток сертификата сервера укажите отпечаток сертификата, выпущенный для Docker (или балансировщика).

Редактирование конфигурационного файла

  1. Откройте конфигурационный файл am/sms-proxy/app-settings.json.

  2. В секции Smpp заполните следующие параметры:

    • SystemId и Password — укажите данные аутентификации для подключения к серверу SMPP;
    • Host — укажите адрес подключения к серверу SMPP;
    • Port — укажите заданный порт для подключения к серверу SMPP;
    • SystemType — опциональный параметр входа в систему со стороны сервера SMPP, например S1;
    • EsmeAddressTon — тип нумерации. Возможные значения: Unknown, International, National, NetworkSpecific, SubscriberNumber, Alphanumeric, Abbreviated;
    • EsmeAddressNpi — индикатор плана нумерации. Возможные значения: Unknown, ISDN, Data, Telex, LandMobile, National, Private, ERMES, IP;
    • AddressEncoding — кодировка адреса отправителя и получателя. Возможные значения: GSM 01.38 (по умолчанию), ASCII, utf-8, iso-8859-1;
    • SslProtocols — опциональный параметр для указания протокола. Возможные значения: None (по умолчанию), Ssl2, Ssl3, Tls, Default, Tls11, Tls12, Tls13;
    • LoggingPermissions — укажите параметр, отвечающий за отображение в логах информации об отправителе и получателе. Можно указать значения через запятую. Возможные параметры:
      • Source— отправитель сообщения,
      • Destination— получатель сообщения,
      • None (значение по умолчанию) — скрываются значения всех логируемых полей,
      • All — показываются значения всех логируемых полей.
  3. Поле Publication включает опциональный параметр DefaultSource, содержащий имя отправителя в запросах, например Indeed-AM.

  4. В поле Authentication": {"Certificate":} указывается отпечаток сертификата, по которому провайдер (SMS или Storage SMS) может быть аутентифицирован в SMS Proxy для отправки сообщений. Заполняется автоматически после запуска скрипта am/ssl/generateSmsCert.sh.

    Примечание

    Рекомендуется сначала настроить систему без установки двустороннего TLS-соединения, то есть без использования сертификатов. При настройке SMS Proxy в Management Console оставьте значения отпечатков сертификатов пустыми.

  5. Сохраните app-settings.json и запустите контейнер с приложением с помощью команды sudo docker-compose up -d.

Пример конфигурационного файла
{
"Smpp": {
"SslProtocols": "Tls12",
"SystemId": "test",
"Password": "test",
"SystemType": "S1",
"Host": "192.168.0.1",
"Port": "7777",
"ReconnectionDelay": "00:02:00",
"LoggingPermissions": "Source"
},
"Publication": {
"DefaultSource": "OOOIndeed"
},
"Documentation": {
"Enabled": true
},
"Debug": {
"ExceptionResponsesEnabled": true
},
"Authentication": {
"Certificate": {
"Enabled": false,
"Thumbprint": "DA38B312C78B5155A2FCC3C1DDC3394D23EEDBF8",
"ForwardingHeader": "X-IndeedAM-ClientCert"
},
"NetworkAddress": {
"Enabled": true,
"AnyAddress": true
}
},
"ReverseProxyIntegration": {
"BasePath": "/am/proxies/sms"
},
"Security": {
"HttpsRedirectionEnabled": false,
"HttpsExcludePaths": [
"/healthcheck/",
"/health-check"
]
},
"Logging": {
"LogLevel": {
"Default": "Trace",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"Server": {
"Certificates": {
"Default": {
"Path": "/ssl/server.pfx",
"Password": "ulRiX7lZ3p4A4kd"
}
}
}
}

Двустороннее TLS-соединение

Чтобы установить двустороннее TLS-соединение между серверами Indeed Core Server и Indeed AM SMS Proxy, выполните следующие действия:

  1. В конфигурационном файле SMS Proxy укажите следующие параметры.

     "Authentication": {
    "Certificate": {
    "Enabled": true,
    "Thumbprint": "!!! Client certificate thumbprint !!!",
    "ForwardingHeader": "X-IndeedAM-ClientCert"
    },
  • Authentication:Certificate:Enabled — для использования двустороннего TLS-соединения необходимо значение true.
  • Authentication:Certificate:ForwardingHeader — ожидается закодированный Base64 сертификат. Пример: X-IndeedAM-ClientCert.
  • Authentication:Certificate:Thumbprint — отпечаток клиентского сертификата.
  1. Добавьте отпечаток сертификата в Management Console.

Сбор логов

Информация по включению логирования и сбору логов SMS Proxy находится в разделе Сбор логов серверных компонентов.