![]() |
|
Веб-сервис (soap) через обратный прокси с SSL | ☑ | ||
---|---|---|---|---|
0
Asmody
07.03.19
✎
10:11
|
Вопрос из раздела с двумя звездочками.
На внутреннем IIS опубликована база с веб-сервисами, (конкретно - Документооборот). Внутри работает без SSL, чтобы не заморачиваться с выпуском сертификатов для интранета. Захотели попользовать мобильное приложение. Для этого нужно выставить "хвост" во внешний мир. Во внешний мир смотрит apache с настроенным SSL, сертификатами, всё как надо. Прописали на нём обратный прокси на внутренний сервер как-то так: ProxyPass /docum http://192.168.1.120/docum ProxyPassReverse /docum http://192.168.1.120/docum Веб-клиент в такой схеме работает прекрасно. Мобильное приложение не работает. Стал разбираться - всё дело в том, что 1Ска генерит в wsdl <soapbind:address location > с http. Естественно, мобильное приложение пытается обратиться по этой ссылке и обламывается. При этом остальной URL вполне корректный, т.е. подставляется внешнее имя+порт. Где бы чего бы колдануть, чтобы 1Ска генерила правильный wsdl? |
|||
1
Cyberhawk
07.03.19
✎
10:24
|
1C, выступая в роли потребителя сервиса, сделали начиная с 8.3.7 необязательный параметр "Местоположение", которым можно переопределять то, что засасывается при создании ВС-прокси по ВСДЛ-файлу.
Чую, что и твоему внешнему потребителю придется делать то же самое. |
|||
2
Asmody
07.03.19
✎
10:31
|
(1) Внешний потребитель - это приложение "1С:Документооборот" из стора. Там никаких таких галочек нет.
|
|||
3
Cyberhawk
07.03.19
✎
10:33
|
Хз о чем ты. Я о платформе и ее методах.
|
|||
4
Nyoko
07.03.19
✎
10:35
|
(0) Попробуй настроить ssl на nginx, во фрешах так работает
|
|||
5
Cyberhawk
07.03.19
✎
10:37
|
(4) От использования нгинска 1С не начнет выдавать хттпс в местоположении, когда к ней будут обращаться по хттп
|
|||
6
Nyoko
07.03.19
✎
10:40
|
(5) ну это как настроишь, можно настроить только 443, можно и редирект запилить с 80, все можно этож NGINX ))
|
|||
7
Nyoko
07.03.19
✎
10:45
|
когда я настраивал, просто, давал серверу глобальный IP, он все равно же стоит в конторе. одно название, один сертификат... а все эти пробросы маршрутизации и прочее, не нужная трата времени ИМХО.
|
|||
8
Asmody
07.03.19
✎
10:52
|
(7) Можно и голую ж.пу на улицу выставить и надеяться, что не вые.ут.
|
|||
9
Cyberhawk
07.03.19
✎
10:55
|
(6) Не поможет, говорю же. Проблема в ложных ожиданиях на клиенте. Связка прокси и поставщика незащищенного веб-сервиса отрабатывает корректно.
|
|||
10
Nyoko
07.03.19
✎
10:56
|
(8) Файр вол, обновление системы, только 443 открытый порт. Какая нахрен голая жопа!
p.s. Вот всегда кстати, все программисты не настраивают firewall, а отключают его со словами он же в сетке, а когда все шифрует шифровальшик плачат. |
|||
11
Cyberhawk
07.03.19
✎
10:56
|
А клиент ломится на веб-сервис по хттпс, прокси редиректит это на хттп, поставщик и отдает всдл-описание с хттп, оно и приходит на клиент. И вот тут на клиенте есть возможность переопределять "Местоположение")
Кстати, чо за ошибку-то выдает клиент, написал бы хоть. В 1С:Заказы кажись это ребятки из 1С побороли, а до ДО руки не дошли. |
|||
12
Cyberhawk
07.03.19
✎
10:57
|
(10) Файрвол пусть работает, но не том же хосте и железе, что и сервер приложений 1С. Типа такая задумка.
|
|||
13
Nyoko
07.03.19
✎
11:00
|
(9) ок понял, лады... тут "незащищенного веб-сервиса отрабатывает корректно" нужно смотреть логи / снифить http, наверняка в каком-то месте каконить Allow-origin не стоит.
|
|||
14
Garykom
гуру
07.03.19
✎
11:01
|
(0) Вся проблема что вместо "https" стоит просто "http" ?
|
|||
15
Garykom
гуру
07.03.19
✎
11:03
|
Ну блин что IIS на httpS://192.168.1.120/docum переставить не судьба?
|
|||
16
Cyberhawk
07.03.19
✎
11:06
|
(15) Не хотят они с SSL заморачиваться для типа внутренних веб-сервисов. Хотя стоит единожды взять этот барьер и куча гемора снимается)
|
|||
17
Asmody
07.03.19
✎
11:16
|
Вод ведь еще что:
Apache висит на 443м порту, но на шлюзе он прокинут на нестандартный порт 4443 на внешнем адресе. При этом внешний адрес имеет несколько DNS-имен. Если я захожу из-вне по https://NAME1.domain.ru:4443/docum/ws/mobileDMVersionService.1cws?wsdl, я вижу location="http://NAME1.domain.ru:4443/docum/ws/mobileDMVersionService.1cws". Соответственно, для https://NAME2.domain.ru:4443/docum/ws/mobileDMVersionService.1cws?wsdl отдает location="http://NAME2.domain.ru:4443/docum/ws/mobileDMVersionService.1cws" Если захожу на apache по внутреннему адресу https://192.168.1.4/docum/ws/mobileDMVersionService.1cws?wsdl, то вижу location="http://192.168.1.4/docum/ws/mobileDMVersionService.1cws" Т.е. 1Ска понимает, по какому имени я стучусь. Не понимает только протокол. Вот в этом вся боль. |
|||
18
Nyoko
07.03.19
✎
11:19
|
(17) пропиши serverName в апаче.
|
|||
19
Asmody
07.03.19
✎
11:20
|
(18) он прописано, конечно.
|
|||
20
Вафель
07.03.19
✎
11:21
|
значит придется ссл подимать в интранете
|
|||
21
Nyoko
07.03.19
✎
11:21
|
<VirtualHost *:80>
DocumentRoot "/www/example2" ServerName http://www.example.org # Other directives here </VirtualHost> Прописан точно ? |
|||
22
Cyberhawk
07.03.19
✎
11:25
|
(21) Зачем в Апаче прописывать что-то относящееся к 80 порту? На него туда не ломятся
|
|||
23
sergeyspb13
07.03.19
✎
11:27
|
попробуй реврайт сделать
mod_rewrite RewriteEngine On RewriteCond %{HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} |
|||
24
Nyoko
07.03.19
✎
11:29
|
(22) смотри у тебя есть 1 ip на нем 140 доменов, хоть ссл хоть без, дело вкуса.
Для обеспечения такой возможности используется VirtualHost Если проброс порта и сертификат встроен в Юзергейт или еще какую программку для слабоумных ничем больше не могу помочь... |
|||
25
Cyberhawk
07.03.19
✎
11:33
|
(24) А, ясно Это понятно)
Автор в (17) вроде привел примеры, говорящие о том, что проблем с определением "виртуального" (внутреннего) хоста у него нет. Т.е. достучаться до веб-сервиса получается. Поэтому Я и не понял, зачем тут виртуалхост трогать) |
|||
26
Asmody
07.03.19
✎
11:40
|
(24) Сертификат установлен на apache, порты пробрасывает шлюз (железный Mikrotik, если что), <VirtualHost *:80> на apache занимается только тем, что перекидывает тех, кто случайно зашел на него по http, на https. Наружу 80 порт apache не смотрит.
|
|||
27
Nyoko
07.03.19
✎
11:44
|
(25) . "1Ска понимает, по какому имени я стучусь. Не понимает только протокол. Вот в этом вся боль."
1.VirtualHost, отделить один домен от другого по стандартному порту. (при условии что это будет 1 веб сервер на входе) 2. Вся эта солянка iss + apache накуя! я бы оставил что-то одно. (скорее всего после этого проблемы пропадут) 3. Все эти задачи с пробросами, простые, решаются за 30 минут. |
|||
28
Asmody
07.03.19
✎
11:50
|
(27) Ты можешь делать как угодно. Пока ты предлагаешь всякую ерунду, не понимая сути проблемы.
|
|||
29
Nyoko
07.03.19
✎
12:00
|
(28) ок, тебе лично больше ничем не помогу )))
|
|||
30
Garykom
гуру
07.03.19
✎
12:18
|
(26) Может банально вместо IIS опубликовать 1С на имеющемся apache с ssl ?
|
|||
31
Garykom
гуру
07.03.19
✎
12:18
|
(30)+ веб-серверу не обязательно же быть на том же железе что и 1С
|
|||
32
Asmody
07.03.19
✎
12:21
|
(30) Зачем мне 1Ска на проксе? :)
|
|||
33
Asmody
07.03.19
✎
12:24
|
Заработало!
Добавил в IIS самоподписанный сертификат и отключил проверку SSLProxy в apache. И всё завелось! |
|||
34
Cyberhawk
07.03.19
✎
12:46
|
Это ты обошел, причем нарушив изначальные условия.
Но можно было и решить вопрос, написав разрабам ДО, чтоб добавили флажок в настройки ) |
|||
35
Сияющий в темноте
07.03.19
✎
15:02
|
А что,подправить выданное описание на лету нельзя?
1с отдает то,что знает и с чем работает,и что мешает на пробросе прочитать этот отданный файл и его исправить? а вообще,наверное,есть режим WsProxy,который это делает автоматом. |
|||
36
Asmody
07.03.19
✎
15:06
|
(35) В apache есть mod_proxy_html, который, вроде как, может менять отдаваемую страницу "на лету". Я даже попробовал, но что-то не срослось.
Как говорится, фиг с ним, пусть внутри живет на самоподписанном сертификате. Все равно внутри оно особо не мешает |
|||
37
Сияющий в темноте
07.03.19
✎
15:14
|
(36)наверное,из-за того,что web-сервис,это не совсем простая html-страница,и для него нужен специальный модуль,ну или самому на php накатать.
|
|||
38
Asmody
07.03.19
✎
15:15
|
(37) там внутре обычный xml и ничего кроме
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |