Подскажите, кто знает, как на сервере обмена сообщениями  установить сертификат безопасности и указать его в конфигурационных файлах сервиса сообщений, чтобы использовать wss://

Нравится

4 комментария

Добрый день.

1. получить сертификат. Например, на https://letsencrypt.org/ru/

2. Сформировать сертификат с расширением pfx

 

openssl pkcs12 -export -nokeys -in certificate.cer -out certificate.pfx



3. Установить Messaging Service.

4. Разместить pfx его в папке Messaging Service.

5. Прописать параметры pfx в конфиге Messaging Service

<server name="ClientWebSocketService"
serviceName="ClientWebSocketService" ip="Any" port="2013" mode="Tcp"
 idleSessionTimeOut="10000" maxCommandLength="4096" security="tls12" > //Заменить tls на tls1.2 
 
   <certificate filePath="certificate.pfx" password="111"></certificate>
</server>

 

Добрый день!

 

Дополню ответ Игоря.

 

Так же кроме всех этих действий необходимо дополнительно в конфигурационном файле в секции <servers> удалить или “закомментировать” следующий конфигурационный блок:

<server name="ClientWebSocketService"

serviceName="ClientWebSocketService" ip="Any" port="2013" mode="Tcp"

idleSessionTimeOut="10000" maxCommandLength="4096"

maxConnectionNumber="10000">

</server>

 

А так же после внесения изменений в конфигурационный файл необходимо в системной настройке “Сервер обмена сообщениями“ (код “SysMsgServerNode“) изменить адрес подключения к серверу телефонии с ws:// на wss://.

 

Также подробная инструкция по настройке защищенного соединения wss размещена на Академии: https://academy.terrasoft.ru/docs/user/drugie_reshenija/konnektory_tele…

и не забыть положить файл сертификата в корневой каталог TMS - C:\Program Files (x86)\BPMonline Messaging Service

Коновалов Игорь, К сожалению, по вашему мануалу не получилось.  На http всё работает. 

Сертификат сгенерированный таким образом (без ключа) TMS не принимает:

----

2022-06-16 15:37:57,624 [4] ERROR ClientWebSocketService - Failed to parse 'Tls1.2' to SslProtocol!

2022-06-16 15:37:57,624 [4] ERROR DefaultBootstrap - Failed to setup server instance!

----

Свой pfx сертификат, которым подписан сайт в err.log выдаёт:

----

2022-06-16 15:23:55,676 [15] ERROR ClientWebSocketService - Session: ef6bdf3c-7488-45ea-93ae-05cd0d4a59bb/192.168.2.75:49881

Unexpected error

System.IO.IOException: Сбой операции дешифрования, см. внутреннее исключение. ---> System.ComponentModel.Win32Exception: При обработке сертификата произошла неизвестная ошибка

   --- Конец трассировки внутреннего стека исключений ---

   в System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult)

   в SuperSocket.SocketEngine.AsyncStreamSocketSession.OnStreamEndRead(IAsyncResult result)

----

 

В конфиг файле закомментировал строку без SSL, раскомментировал с ssl как в инструкции:

 

----

<servers>

      <!--

      <server name="ClientWebSocketService" serviceName="ClientWebSocketService" ip="Any" port="2013" mode="Tcp"

      idleSessionTimeOut="10000" maxRequestLength="4096" maxCommandLength="4096" maxConnectionNumber="10000" SendTimeOut="30000">

      </server>-->

       <!--Support for WebSocket secure connection. Replace previous and set correct certificate name and password. -->

           <server name="ClientWebSocketService" serviceName="ClientWebSocketService" ip="Any" port="2013" mode="Tcp"

        idleSessionTimeOut="10000" maxRequestLength="4096" maxCommandLength="4096" security="Tls12">

            <certificate filePath="cert-domain.pfx" password=""></certificate>

        </server>

----

Явно проблемы в связке сертификата и его скармливанием ТМСу, но что делать не пойму. Если исправить Tls12 на Tls1.2 получаю такую ошибку в err.log:

----

2022-06-16 15:30:08,380 [6] ERROR ClientWebSocketService - Session: 4ba204cb-1f12-4925-933f-547e63fe4ea8/192.168.2.75:49894

Unexpected error

System.IO.IOException: Сбой операции дешифрования, см. внутреннее исключение. ---> System.ComponentModel.Win32Exception: При обработке сертификата произошла неизвестная ошибка

   --- Конец трассировки внутреннего стека исключений ---

   в System.Net.Security._SslStream.EndRead(IAsyncResult asyncResult)

   в SuperSocket.SocketEngine.AsyncStreamSocketSession.OnStreamEndRead(IAsyncResult result)

2022-06-16 15:30:16,231 [4] ERROR ClientWebSocketService - Failed to parse 'Tls1.2' to SslProtocol!

2022-06-16 15:30:16,231 [4] ERROR DefaultBootstrap - Failed to setup server instance!

 

 

 

Показать все комментарии