Добрый день, коллеги!

Есть задача по интеграции сайта со сторонним приложением. На стороне реализовано api с рядом запросов. Но реализация сторонних запросов такова, что мне приходится в бизнес процессе вызывать запросы в цикле. Может кто-то подскажет вариант вызова вэб-сервиса в тексте задания-сценария БП?

Нравится

1 комментарий

Ольга, можно либо самостоятельно реализовать логику вызова сервиса кодом (пример есть тут), либо настроить нужный веб-сервис в разделе обычным образом, а затем взять код запуска в схеме WebServiceUserTask и скопировать его в функцию в разрабатываемом БП вместе со всеми вспомогательными функциями и параметрами, которую затем запускайте в своём скрипте в цикле. Вот основная логика оттуда:

if (ServiceUrl == Guid.Empty || string.IsNullOrEmpty(ServiceMethod)) {
	return true;
}
string serviceUrl = (new Select(UserConnection)
	.Column("URL")
	.From("WebServiceURL")
	.Where("Id").IsEqual(new QueryParameter("Id", ServiceUrl)) as Select)
	.ExecuteScalar<string>();
HttpWebRequest webRequest = CreateWebRequest(serviceUrl, ServiceMethod);
string Request = @"<soap:Envelope xmlns:soap=""http://www.w3.org/2003/05/soap-envelope"" xmlns:web=""http://www.webserviceX.NET/"">
<soap:Header/>
	<soap:Body>";
Request += RequestBodyInternal;
Request += @"
	</soap:Body>
</soap:Envelope>";
webRequest.ContentLength = Request.Length;
using (Stream stream = webRequest.GetRequestStream()) {
	using (StreamWriter streamWriter = new StreamWriter(stream)) {
		streamWriter.Write(Request);
		streamWriter.Close();
	}
}
using (WebResponse response = webRequest.GetResponse()) {
	using (StreamReader rd = new StreamReader(response.GetResponseStream())) { 
		Responce = rd.ReadToEnd();
	}
}
PrepareResponceResult();
if (!IsLoggingRequestAndResponce) {
	Request = string.Empty;
	Responce = string.Empty;
}
return true;

 

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

Коллеги всем доброго времени суток!
Столкнулся со следующей проблемой, обработки исключений возвращаемых при запросе к внешнему API.
Делаю запрос через WebClient
 

public void Patch(string method, Dictionary<string, string> parameters)
        {
            try
            {
                NameValueCollection parametersValues = new NameValueCollection();

                foreach (var parameter in parameters)
                {
                    if (String.IsNullOrEmpty(parameter.Value))
                    {
                        parametersValues.Add(parameter.Key, null);
                        continue;
                    }
                    parametersValues.Add(parameter.Key, parameter.Value);
                }

                string uri = $"{abUrl}{method}";
                using (WebClient webClient = new WebClient())
                {
                    string credentials = Convert.ToBase64String(
                        Encoding.ASCII.GetBytes(LoginDev + ":" + PassDev));
                    webClient.Headers[HttpRequestHeader.Authorization] = $"Basic {credentials}";
                    webClient.Headers.Add("Content-Type", "application/x-www-form-urlencoded");
                    byte[] result = webClient.UploadValues(uri, "PATCH", parametersValues);
                    var response = Encoding.UTF8.GetString(result);
                }

            }
            catch (WebException e)
            {
                var exceptionMessage = e.Message;
                if (e.Status.Equals(WebExceptionStatus.ProtocolError))
                {
                    if (e.Response is HttpWebResponse)
                    {
                        var sr = new StreamReader(e.Response.GetResponseStream());
                        var response = sr.ReadToEnd();
                        sr.Close();
                        sr.Dispose();
                    }
                }
            }
        }

Когда пытаюсь обработать WebException в Bpm то мне записывает в логи - http://prntscr.com/kr7aja
 

При выполнении данного кода через консольное приложение обработка срабатывает корректно - http://prntscr.com/kr7baj
Подскажите в чем может быть проблема, как бороться?
Заранее благодарен.

Нравится

6 комментариев

Попробуйте, вместо public void Patch сделать public string Patch, объявите переменную, например result и в catch, сделайте result += e.Message, ну и по итогу соответственно return result

Литвинко Павел,

я в самом методе Patch в блоке catch логирую 

e.Message - http://prntscr.com/kr838h
в Bpm у меня метод Patch возвращает string. Суть в другом почему в catch обрабатывается Too many redirects, а при выполнении данного метода из консольного приложения обрабатывается корректно, то что возвращает сервер к которому запрос был.

Нигрескул Алексей,

А в консоли, на этом прерывается выполнение? Повторно не вызывается? Возможно он просто неоднократно вызывается и по итогу в лог попадает конечная ошибка

Литвинко Павел,

В консоли - при выполнении кода вылетает в catch и потом на выход метода 

При выполнении метода из консоли запустил fiddler запрос ушел один раз - http://prntscr.com/kr8oum

Попробуйте в Fiddler сравнить запросы, уходящие на сервер при работе как из сайта, так и отдельной программы. Видимо, там будет отличие если не в тексте, то заголовках запроса, приводящее к бесконечным редиректам.

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

Здравствуйте, коллеги!

В ходе мероприятия в Сколково на презентации дизайнера процессов коснулись темы вызова внешних веб-сервисов из процесса с использованием нового элемента в дизайнере процессов.

К сожалению, не нашел подробного описания возможностей этого элемента в технической документации.

Прошу помочь с реализацией следующей функции.

Имеется веб-сервис, имеющий корректное wsdl-определение. Сервис получает от процесса GET-команду (с параметром type ['jpeg', 'pdf', 'xml']) и в зависимости от параметра возвращает:
1) jpeg - изображение
2) pdf - файл документа
2) xml - со значениями полей в строках и изображениями в кодировке base64

по получении ответа процесс должен:
1) сохранить jpeg-файл в карточку контакта (например, фото контакта)
2) сохранить pdf-файл вложением в карточку контакта (например, цифровая копия подписанного договора обслуживания)
3) разобрать полученный xml-файл, создать новую карточку контакта и сохранить значения в соответствующие поля, включая закодированное base64 изображение (например, паспортные данные контакта с изображением подписи, фото и скана паспорта)

Буду благодарен за примеры кода.

Нравится

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

Добрый день!
Пока такого элемента, который бы вызывал внешние сервисы нет.
Для решения подобной задачи нужно писать в ScriptTask’е на .Net обработчик http запросов и в пространство имен (Usings) подключать нужные классы.
Примеры кода можно загуглить.

Спасибо, Олег!

Я посмотрел в дизайнере процессов установленного у нас экземпляра bpm'online 7.8. Там действительно нет того элемента, что я имел ввиду. Жаль, что я не помню его названия. Но в бета-версии, которую нам демонстрировали на мероприятии в Сколково в этом году в рамках сессии для администраторов, был такой элемент, который позволял вызывать внешние web-сервисы, при условии, что они оформлены в соответствии со стандартами по протоколу SOAP.

Очень прошу перепроверить с теми, кто делал ту презентацию. Юлия Старун там была, насколько я помню.

Заранее спасибо!

Добрый день !!!

если такой элемент процесса появится в дизайнере процессов, тогда BPMOnline станет самой крутой системой по сравнению с другими. Она и сейчас самая крутая система. Но с данным инструментом просто будет решать многие задачи.

Здравствуйте! Я зашел в дизайнер процессов из конфигурации системы. Элемент, который я имел ввиду называется "Выполнить действие процесса". В его настройках нужно указать Пользовательское действие "Вызвать веб-сервис" или "Вызвать Web-сервис".

Если выбрать первый вариант - "Вызвать веб-сервис", то во вкладке Параметров нужно указать следующие параметры:
- RequestBodyInternal
- RequestParameters
- URL сервиса
- Вернуть запрос и ответ действия
- Запрос
- Метод сервиса
- Ответ
- Параметры запроса
- Результат запроса
- Сервис
- Статус выполнения вызова

Если выбрать второй вариант - "Вызвать Web-сервис", то во вкладке Параметров нужно указать следующие параметры:
- URL web-сервиса
- Метод
- Название
- Параметры метода

Мой SOAP сервис вызывается (из локальной сети) по адресу:
http://[ip_address]/soap?format=pdf
http://[ip_address]/soap?format=jpg
http://[ip_address]/soap?format=xml

Его описание доступно по
http://[ip_address]/soap?wsdl

Текст WSDL во вложении (нужно изменить расширение с txt на xml).

Пример XML-ответа - во вложении (нужно изменить расширение с txt на xml).
Пример PDF-ответа - во вложении.
Пример JPG-ответа - во вложении.

Это была вводная. Сама задача была описана в исходном сообщении темы. Подозреваю, что мне нужно использовать первый вариант ("Вызвать веб-сервис") - у него вроде больше настраиваемых параметров. Теперь вопрос знатокам (или "подсказка зала" - уж как повезет :) :

Кто подскажет, как использовать этот элемент? Если можно - с практическими примерами.

Заранее спасибо!

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

Взявся розбиратися з написанням web-сервісів.
З початковою операцією сервісу [http://bpmonline-dev.local/ServiceModel/AuthService.svc/Login] питань не виникло.
Авторизуюсь, витягую coocies. Все добре.

Але є запитання з подальшою технологією роботи.

[http://localhost/ServiceModel/AuthService.svc/Help] видає варіанти використання сервісу:
Uri Method Description
GetSolutions
POST
Service at http://localhost/ServiceModel/AuthService.svc/GetSolutions

GetSolutionsData
POST
Service at http://localhost/ServiceModel/AuthService.svc/GetSolutionsData

Login
POST
Service at http://localhost/ServiceModel/AuthService.svc/Login

GET
Service at http://localhost/ServiceModel/AuthService.svc/Login?UserName={USERNAME}&UserPassword={USERPASSWORD}&SolutionName={SOLUTIONNAME}&TimeZoneOffset={TIMEZONEOFFSET}

Я так зрозумів, що для формування http-звернення до сервера потрібно визначити номер рішення (solution) яке має бути підставлене в рядок звернення:
http://localhost//ServiceModel/ProcessEngineService.svc/Execute

Питання: як визначити номер рішення ?
(якщо можна - з прикладом).

Нравится

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

Ну от, потрібну інформацію видає сервіс
http://localhost/ServiceModel/AuthService.svc/GetSolutionsData:
[{"Key":"TSBpm","Value":0},{"Key":"TSBpm.1","Value":1},{"Key":"TSBpm.2","Value":2},{"Key":"TSBpm.3","Value":3}]

Добый день, Игорь!
Обычно в продуктивной среде используется только 1 рабочее решение (конфигурация), и его номер - 0. Другие конфигурации могут использоваться для разработки и их номера соответсвуют полю [Number] таблицы [SysSolution], а на IIS должно быть добавлено соответсвующее приложение для каждой конфигурации, как видно на скрине:

Ну, загалом справився.
Написав програмку, в яку вхідними параметрами передаю web-ресурс, назву служби, назву рішення та ще кілька параметрів для проформи.

Спочатку проводжу аутентифікацію за допомогою служби:
http://localhost/ServiceModel/AuthService.svc/Login

Потім читаю список рішень в JSON-форматі за допомогою тієї ж служби:
http://localhost/ServiceModel/AuthService.svc/GetSolutionsData

в цьому списку шукаю рішення за назвою, визначаю номер рішення.

Далі, маючи web-ресурс, назву служби з вхідних параметрів та номер рішення, формую звернення до цієї служби:
http://localhost/&lt;№ рішення>/ServiceModel/ProcessEngineService.svc//Execute

Писав для зовнішнього запуску служби завантаження email-ів, яка раніше запускалася windows-планувальником за допомогою утилітки ProcessExecutor54.exe.

Я в ImapClient вніс зміни на предмет фіксації типу вкладеного в email-файлу, і служба завантаження email-ів в інтерфейсі BPMonline працювала нормально, а при зовнішньому запуску типи файлів не фіксувались (наче ProcessExecutor54.exe десь знаходила старий варіант служби).

Тому вирішив написати свій стартер для web-служб BPMonline.
Написав.
Працює зараз в тестовому режимі.
Поки що все [ok].

Якщо комусь цікаво - можу поділитися .NET утиліткою BPMonlineServise.exe

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

Думаю не для кого не секрет, что на Windows Server 2008R2 повышенная политика безопасности. Столкнулся с задачей настройки подключения к веб-сервисам из Terrasoft на этой ОС. Соединение не устанавливалось, хотя из других ОС к этим же веб-сервисам коннект проходил нормально.
Перепробовал много различных способов: отключение брандмауэра, отключение UAC, мониторинг запросов в реестр/файловую систему, анализ недостающих библиотек. Но потом нашел интересную статью по этой теме:
http://stackoverflow.com/questions/2485578/incompatibilities-between-indy-9-and-windows-server-2003
Причиной всему оказался включенным системный Data Execution Prevention (DEP). Добавил в список его исключений приложение TSClient.exe и соединения к веб-сервисам стали происходить нормально.
Для русской Windows 2008R2 эта настройка находиться "Компьютер" -> "Свойства" -> "Дополнительные параметры системы" -> закладка "Дополнительно" -> Быстродействие "Параметры" -> закладка "Предотвращение выполнения данных". Выберите "Включить DEP только для основных программ и служб Windows" или добавьте в список исключения необходимые программы (TSClient.exe, TSAdmin.exe ...)

Нравится

Поделиться

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

Непомогло. Как выходила ошибка так и выходит.

В ходе удаленного соединения оказалось, что соединение с машины Windows Server 2008 происходило нормально, а вот с Windows XP - та же проблема. Добавили Terrasoft в список исключений DEP и все заработало.

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

С чего начинается интернет. Конечно же Apache, наверное это единственный "живой" веб-сервер, который появился на заре развития интернета, и который продолжает жить и здравствовать. Ну, собственно, это была полемика, а мы перейдем к практике.

Итак, обзаводимся инструментами

  1. Собственно, сам сервер Apache. Идем на сайт http://httpd.apache.org/download.cgi. Поддерживаемые версии на сегодня это 2.0.X и 2.2.X (да-да, 2.2 ветка уже тоже поддерживается). Внимание!!!: хотим SSL? Конечно. И не забываем, что нам надо взять соответствующий установочный пакет "Win32 Binary including OpenSSL 0.9.8m (MSI Installer)".
  2. Ваш любимый блокнот, где придется немного подредактировать конфигурационные файлы Apache.
  3. Хотим SSL? Конечно же, безопасность превыше всего. Тогда идем на http://www.slproweb.com/products/Win32OpenSSL.html (официальный сайт библиотек OpenSSL для Windows). И скачиваем оттуда версию "Win32 OpenSSL v1.0.0a Light" (для тех, кто в 64-битном танке, там есть версия "Win64 OpenSSL v1.0.0a Light"). И не в коем случае не берите полную версию - она абсолютно не нужна.
    Да, чуть не забыл. Вы абсолютно не должны смущаться, по поводу разных версий OpenSSL в установочном пакете Apache и в поставке Win32 OpenSSL Light.
  4. Ну и естественно, нужен пациент. То есть Terrasoft версии 3.3.2, веб-сервисы которого мы и будем подключать к Apache 2.X.X.

Краткое отступление. Когда писалась данная заметка, я тестировал все нижеописанное в следующей конфигурации: Windows Server 2008 32-bit, Apache 2.2.15 32-bit with SSL, IIS 7.0 (по умолчанию, я установил все расширения), Terrasoft XRM 3.3.2.107. Соответственно, все мои изыскания были проведены для данных версий. Но, скажу честно и откровенно, должны заработать и в других комбинациях.

Установка Apache.

Все до ужаса просто. Кликаем всегда далее и вот у нас стоит Apache, и он даже запустился. Так, только прежде чем ставить Apache, давайте посмотрим вокруг себя и попытаемся найти того, кто (или что) нам обязательно будет мешать. Вот некоторые кандидаты, замеченные Вашим покорным слугой.

Кандидат №1 - это конечно же уже установленный и запущенный Apache (другой версии). Если он Вам нужен - Вы и так уже знаете как его ставить, а если не нужен - удаляйте :smile:, удаляйте :lol: - мы же все равно ставим новый.:twisted:

Кандидат №2 - это IIS. А-я-я-й. Мы же Apache ставим - зачем нам IIS. Поэтому необходимо удалить IIS с компьютера, чтобы он Вам не мешал и "не портил всю картину".
Как его удалять - ну это уже задание на дом - для изучения всяких-таких руководств от Microsoft.

Кандидат №3 - Skype. Ага, а что ему делать на сервере? Ну если он все-таки там нашелся, необходимо в его настройках отключить использование 80 и 443 портов (а он, редиска, использует их по умолчанию - зачем, это уже другая песня).

Итак, смотрим на скриншоты и вперед. В основном, установка идет со значениями по умолчанию.
Шаг №1

Шаг №2

Шаг №3

Шаг №4. Обратите внимание на значение в поле ServerName. Если Вы не будете использовать виртуальный хостинг, то здесь должно быть прописан полный адрес вашего сервера.
Также, по умолчанию, ставим Apache как службу системы с автоматическим запуском и прослушиванием порта 80.

Шаг №5

Шаг №6

Шаг №7

Проверить работоспособность можно, если перейти по адресу http://127.0.0.1/ или по адресу http:///. Если Вы увидите след. картинку, то можно считать, что Apache установлен, запущен и работает нормально.

Установка Terrasoft XRM

Здесь я даже останавливаться не буду. Это итак разложено по полочкам в "Руководстве администратора". Единственный момент (а оказывается многие забывают) - это надо настроить путь к папке Settings в файле RunSettings.xml
К примеру, после установки Terrasoft XRM со значениями по умолчанию, путь к папке Settings будет C:\Program Files\Terrasoft\Settings\.

После этого, необходимо запустить TSClient.exe и настроить подключение к конфигурации.

Настройка Web-сервисов под Apache

Итак, Apache есть, Terrasoft XRM установлен. Самое время подключить web-сервисы. Открываем в любимом редакторе файл httpd.conf, который находиться в папке conf корневой папки установки Apache (если ставили по умолчанию, то это будет C:\Program Files\Apache Software Foundation\Apache2.2\conf\httpd.conf) и в конец файла добавляем следующие строки (для Apache 2.2.x)

LoadModule tsapache_module \
     "С:\Program Files\Terrasoft\Bin\TSWebServicesServerLibraryApache22.dll"
/TSWebServices>
        SetHandler TSWebServicesServerLibraryApache22-handler
>

Для Apache 2.0.x, строки будут следующие

LoadModule tsapache_module \
     "С:\Program Files\Terrasoft\Bin\TSWebServicesServerLibraryApache20.dll"
/TSWebServices>
        SetHandler TSWebServicesServerLibraryApache20-handler
>

Название виртуальной директории (в данном примере TSWebServices) Вы можете придумать самостоятельно так, как Вам нравится.

Чтобы изменения вступили в силу, необходимо произвести перезапуск Apache сервера. Если по быстрому, то в трее у Вас должен быть значок Apache Monitor , кликнув по которому откроется окно программы, в котором можно сделать перезапуск (остановку/запуск) сервера Apache. Если перезапуск прошел успешно, значит модуль веб-сервисов загрузился успешно. Можно проверить работоспособность, если перейти по адресу http://127.0.0.1/TSWebServices/ (где вместо 127.0.0.1 может быть записан полный адрес сервера, а TSWebServices - это название виртуальной папки, которое Вы указали в httpd.conf). Вы должны увидеть следующую картинку

Увидели - вуаля. Web-сервисы под Apache запущенны и работают. Далее необходимо настроить клиент Terrasoft, но останавливаться на этом не буду, так как в руководстве данный материал полностью раскрыт и освещен.

Настройка SSL.

Вот собственно мы и добрались до самого главного. То есть до безучастности. Конечно, многие могут возразить, зачем, мол, веб-сервисы да еще и через SSL - не проще ли поднять VPN или заходить на удаленный рабочий стол.
Да, неверное многие так и делают, но дискуссии на тему что лучше мы оставим другим, а сейчас просто займемся настройкой SSL под Apache.

Но сначала немного теории. Итак, для того чтобы обзавестись защищенным каналом, необходимо наличие сертификатов. А здесь начинаются сплошные непонятные слова и действия. (Да, можно и бубен прикупить, с надписями SSL). Но мы сейчас быстро разложим все по полочкам.

Собственно, сертификат - это заверенный удостоверяющим центром электронный (или печатный, что очень редко) документ, подтверждающий принадлежность владельцу открытого ключа или каких-либо атрибутов. А теперь, чтобы не надо было ломать мозги, представим себе, что сертификат - это какой либо документ (например копия Вашего паспорта) содержащий Ваши данные и это все заверено государственным нотариусом. Ведь ни у кого не будет сомнений, что это копия действительно Вашего паспорта, а не дяди Васи со стороны. То есть, удостоверяющий центр - это такая организация, которой все доверяют. Довольно известные компании Thawte, VeriSign очень давно работают в этом сегменте, что позволяет им довольно интенсивно влиять на многие аспекты сертификации в целом.

Для нас же с Вами, сертификат - это некий файл в формате X.509 (может быть текстовым, а может и не быть :-)) который содержит информацию про Вас, и информацию про того, кто сертификат "заверил". Понятие "заверил" не зря взято в кавычки - это значит что в Вашем сертификате стоит электронная цифровая подпись той компании, которая подтвердила правдивость Ваших данных. Собственно, как мокрая печать нотариуса на документах.

Также существуют корневые сертификаты (CA). Корневой сертификат - это сертификат, который заверен сам собой. Напрашивается вопрос - зачем сертификат который заверен своей же организацией. А вот ответ на самом деле очень простой. Если каждый сертификат должен быть кем-то заверен (далее по тексу буду использовать выражение "подписан", так как в мире сертификатов оно больее полно раскрывает смысл), то где-то должно быть начало этой цепочки. Так вот, начало этой цепочки - это и есть корневой сертификат.

Кроме всего этого, существуют публичные списки корневых сертификатов. Это списки тех сертификатов, которые либо включены в операционную систему либо встроенны в приложение (например, браузер Mozilla Firefox). Используя эти публичные сертификаты (CA) приложение может проверить "на действительность и правильность" любой сертификат. В случае с браузерами - мы видим "позеленевшую" адресную строку, когда заходим на любой сайт HTTPS.

Итак, было немного теории, теперь перейдем к практике.

Для начала подготовим инструменты - это минимальный набор файлов: openssl.exe, libeay32.dll, ssleay32.dll и главное - openssl.cfg. Можно забрать архивом прикрепленных файлах. Распаковываем. Конечно, туда, куда Вам больше нравится.

Теперь вкратце о том, что необходимо сделать. Так как мы будем генерировать (создавать) все сами - (денег нет, не дают, нет необходимости покупать у гигантов CA) - то нам необходимо будет сгенерировать два сертификата. Первый - это RootCA - то есть наш корневой сертификат, который мы сами же и подпишем. Второй - это сертификат сервера, на котором будут работать вебсервер.

Чтобы долго не расписывать что, как и почем, в архиве есть файл gen.cmd (для любознательных - можете заглянуть внутрь). Запускаем и идем по шагам.

Итак, какие данные у вас спросит скрипт.


Код страны - двухбуквенное обозначение, вводить необходимо в верхнем регистре.


Название компании. Обязательно латиницей. На данный момент пробелы в названии не поддерживаются (хотя для любопытных - можете попробовать).


Название сервера - это должно быть полное FQDN имя домена, для которого будет сгенерирован сертификат. Обычно - это полное название компютера, на котором установлен Apache2 (или IIS). Если это не так - ну тогда Вам прямая дорога к вашему системному администратору (если это не Вы) - он должен быть в курсе.

Введенные данные будут записаны в файл info.txt.



Пароли - первый для приватного ключа от CA, второй - для приватного ключа сервера. Минимум - 4 символа. (Сохранены будут с файлах с расширением .pwd)

После этого будут сгенерированны ключи и сертификаты. При создании экспортных версий (для MS) - будут запрошены пароли экспорта - эти пароли будут запрошены при импорте сертификатов в MS.

Да, если у Вас что-то пошло не так, там есть простенький файл clean.cmd - который удалит все сгенерированные и промежуточные данные. (Внимание, приватные ключи тоже будут удалены).

Продолжение следует...

Нравится

Поделиться

6 комментариев

Супер, Миша, СПАСИБО!

Мне понравился стиль аффтара. +5

Зачмечательный пост.+1.
К слову о Skype на сервере. Его не обязательно удалять, главное не запускать до старта самого веб-сервера, а потом можно, скайп смотрит не занят ли 80й порт и если занят, то пользует другой (какой не помню).

У многих, кто пытается протестировать веб-сервисы с Apache'м на локальной машине Skype либо уже запущен, либо в автостарте. По крайней мере, если Apache не заработает - это один из вариантов, почему он не работает.

Отмечу особый изящный стиль изложения, ну и конечно высокий уровень подготовки материала. Ты сэкономил многие часы работы нашим коллегам и Клиентам!
Фраза про 64-битный танк очень актуальна.

Дополню немного этот материал.

Корневой сертификат и сертификат сервера сгенерирован, все хорошо. Хотелось бы немного рассказать об установке сертификатов на сервер IIS и настройке соединения на клиентских машинах.

Итак, по порядку.

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

Первым устанавливаем корневой сертификат (CA, файл ca.crt). Для этого открываем этот сертификат встроенной программой просмотра сертификатов и нажимаем кнопочку "Установить". Установить корневой сертификат нужно в Trusted Root Certification Authorities\Local Computer (категория доверенных корневых центров сертификации)

Далее устанавливаем сертификат сервера, который подписан уже установленным корневым сертификатом. Для этого заходим в панель управления IIS, заходим в раздел управления сертификатами и устанавливаем серверный сертификат server.p12 (формат .p12 аналогичен формату .pfx). При этом этот сертификат уже будет доверенным, т.к. он подписан корневым сертификатом, которому вы доверяете.

После этого в настройках привязки сайта к портам и протоколам (Bindings) для настройки SSL указываем только что импортированный серверный сертификат:

Теперь настроим Terrasoft на клиентской машине.
Для этого в настройках SSL прописываем:

Файл корневого сертификата - путь к файлу корневого сертификата ca.crt, который вы предварительно скопировали на клиентскую машину.

Данные о том кем и кому выдан этот сертификат берем из его свойств:

Внимательно переписываем эти данные, т.к. сравнение происходит по строгому совпадению.

Все, ваши веб-сервисы для работы через защищенное соединение SSL настроены!

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