Indeed AM SMS Proxy
Indeed AM SMS Proxy (SMS Proxy) — это веб-приложение, которое напрямую подключается к SMPP-шлюзу и отправляет SMS, при этом Indeed Core Server не производит разрыв сессии с SMPP-шлюзом, и запросы отправляются в рамках одного подключения, а не в отдельных для каждого запроса.
Установка SMS Proxy
Чтобы установить SMS Proxy на сервере с операционной системой Linux, выполните следующие действия:
Откройте файл am/.env.
В переменной
COMPOSE_PROFILES
добавьте значениеsms-proxy
.Откройте конфигурационный файл 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
Перезапустите контейнер с приложением.
Подготовка сертификата для SMS Proxy
Чтобы создать сертификат для 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.
Добавьте сертификат sms-client.cer в директорию am/ssl/ca/ и сертификат sms-client.pfx в директорию am/ssl/client/ на хосте, где установлен Core Server.
Запустите скрипт prepareCaFile.sh для повторной генерации trusted_ca.crt.
sudo bash ./prepareCaFile.sh
Результат: создается сертификат am/ssl/ca/trusted_ca.crt.
ПримечаниеПри изменении состава каталога am/ssl/ca необходимо перезапустить скрипт prepareCaFile.sh.
На хосте с 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
Откройте Management Console и в разделе Конфигурация→Аутентификаторы выберите SMS OTP или Storage SMS OTP.
В разделе Настройки шлюза выберите тип подключения SMS Proxy.
В поле Адрес подключения к серверу укажите внешний URL хоста (или балансировщика).
Пример: https://!!!HOST_DNS!!!:<номер порта>/am/proxies/sms
ПодсказкаВ настройке указывается номер порта, который задан в переменной
ENDPOINT_HTTPS_PORT
в файле am/.env.Заполните поле Отпечаток сертификата клиента. Значение можно посмотреть в конфигурационном файле am/sms-proxy/app-settings.json в разделе
Authentication": {"Certificate": {"Thumbprint": "" } }
. Значение в параметре задается автоматически после запуска скрипта am/ssl/generateSmsCert.sh.В поле Отпечаток сертификата сервера укажите отпечаток сертификата, выпущенный для Docker (или балансировщика).
Редактирование конфигурационного файла
Откройте конфигурационный файл am/sms-proxy/app-settings.json.
В секции
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
— показываются значения всех логируемых полей.
Поле
Publication
включает опциональный параметрDefaultSource
, содержащий имя отправителя в запросах, например Indeed-AM.В поле
Authentication": {"Certificate":}
указывается отпечаток сертификата, по которому провайдер (SMS или Storage SMS) может быть аутентифицирован в SMS Proxy для отправки сообщений. Заполняется автоматически после запуска скрипта am/ssl/generateSmsCert.sh.ПримечаниеРекомендуется сначала настроить систему без установки двустороннего TLS-соединения, то есть без использования сертификатов. При настройке SMS Proxy в Management Console оставьте значения отпечатков сертификатов пустыми.
Сохраните 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, выполните следующие действия:
В конфигурационном файле 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
— отпечаток клиентского сертификата.
- Добавьте отпечаток сертификата в Management Console.
Сбор логов
Информация по включению логирования и сбору логов SMS Proxy находится в разделе Сбор логов серверных компонентов.