Проблема Ошибка вызова WS Consumer из локальной базы на клиенте

BVK

One Level
18.12.2020
9
2
BIT
0
Клиент LotusNotes v.9.0.1. Есть база, установленная локально на клиенте. Из WSDL сгенерировал LS-классы для WS Consumer, далее написал агент для вызова сервиса. При вызове получаю ошибку:
Web Service ML method helloWorld error: Error connecting to 'apitest.merlion.com' on port '443', You must enable the Notes TCPIP port.
Как это преодолеть?
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
348
443 порт наверное хочет авторизации - имя, пароль или сертификат.
 

BVK

One Level
18.12.2020
9
2
BIT
0
Меня смущает, что в notes.ini вообще ничего нет про порт 443.
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
517
Меня смущает, что происходит это на локале, в рамках клиента.
Или у вас локальный сервер?
Если это в рамках клиента, то там нет задачи http, но ее можно включить запустив nhttp из папки лотуса.
 

BVK

One Level
18.12.2020
9
2
BIT
0
Меня смущает, что происходит это на локале, в рамках клиента.
Или у вас локальный сервер?
Если это в рамках клиента, то там нет задачи http, но ее можно включить запустив nhttp из папки лотуса.
Спасибо за подсказку!
Сервера нет, один клиент на компе, база - на клиенте - т.е. минимальная кофигурация для запуска базы. Да ещё восхотелось вызывать чужой web-сервис, да ещё с "с шифрованием трафика по протоколу TLS версий 1.0, 1.1, 1.2". С этим TLS ещё впереди разбираться, как и что про него в классы WS Consumer'а запихнуть...

Узнал, что пара строк в Notes.ini
TCPIP=TCP,0,15,0
Ports=TCPIP
и выбор подходящего Location (с обслуживанием TSP/IP) сильно помогают проблеме. Теперь получаю:

Web Service MLPort_n0 method helloWorld error Error connecting to 'apitest.merlion.com' on port '443', SSL bad peer certificate. Connection refused.
 
Последнее редактирование:

savl

Lotus Team
28.10.2011
2 624
314
BIT
517
Установите локальный сервер, у меня стойкое ощущение, что на клиенте http задача слушает только 80-й порт и никакой ssl по 443-му не получить, можно попробовать поменять в дизайнере для http preview, но это не точно.
про поддержку ssl на локале - вообще сомнительно.
1608367619176.png


Настройки, которые указаны, это для клиента в первую очередь, на сервере есть аналогичные, но в данном случае они несут другой смысл, это параметры подключение клиента к серверу: тип протокола и настройка портов.
Локейшены тоже отвечают за другое: либо для переключения на разные среды, либо для режима онлайн/оффлайн, либо для разных технологий подключения, но они не влияют на локальную задачу http.
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
348
По http (не https) коннектиться не пробовали? Какой адрес для endpoint используете?
 

garrick

Lotus Team
26.10.2009
1 367
152
BIT
348
Всё! Я окончательно запутался. Кто кого куда вызывает?
Consumer с локального клиента обращается к внешнему серверу, не Domino? Этот сервис вы сами написали? Consumer передаёт имя/пароль сервису?
 

BVK

One Level
18.12.2020
9
2
BIT
0
Проблема решена!
Спасибо всем за советы и подсказки!
Выяснилось, что поддержка TLS 1.2 включена в Domino-9.0.1, начиная только с FixPack-3, а в FixPack-4 исправлены несколько ошибок, связанных с TLS (в Domino-11 включена уже поддержка TLS 1.3).

Для того, чтобы из клиента через WebServiceConsumer вызывать чужой web-сервис по протоколу TLS 1.2, нужно выполнение нескольких условий:
1) в notes.ini клиента должна быть пара строк для работы через TCPIP
Код:
TCPIP=TCP,0,15,0
Ports=TCPIP
2) должно быть выбрано расположение (Location) с использованием TCP/IP (например, "Работа(сеть")
3) в инициализацию WebServiceConsumer нужно добавить пару строк для криптопротокола: логин/пароль и параметры протокола:
Код:
    Sub NEW
        Call Service.Initialize ("HttpsApitestMerlionComReMlservice3MLService", _
                                          "MLService.MLPort", "https://apitest.merlion.com/re/mlservice3", "MLPort_n0")
        ' userid and password
        Call Service.SetCredentials (<логин>, <пароль>)
        ' set SSL options
        Call Service.SetSSLOptions (NOTES_SSL_ACCEPT_SITE_CERTS+NOTES_SSL_ACCEPT_EXPIRED_CERTS) ' из lsxsd.lss
    End Sub
4) для клиента Notes-9.0.1 должен быть установлен свежий FixPack (у нас нашёлся FP3)
5) установили на этот компьютер сервер Domino-9.0.1 (его службы отключили) и установили его FixPack-10 (такой нашлось). Нет абсолютной уверенности, что этот шаг необходим, но в процессе установки FixPack на Domino он пишет "Notes update ...".

После этого агент на клиенте благополучно вызывает через WebServiceConsumer чужой web-сервис, при этом лотус автоматически заменяет протокол SSL на TLS 1.2. Есть большая уверенность, что и серверные агенты на этом сервере будут тоже вести себя аналогично.[/code]
 
Последнее редактирование:
  • Нравится
Реакции: lmike и VladSh
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!