|
Как правильно добавить цифровой сертификат SLL при соединении через web-сервис? | ☑ | ||
---|---|---|---|---|
0
ilou
22.10.11
✎
19:50
|
Определение = Новый WSОпределения(...);
Прокси = Новый WSПрокси(Определение,...); далее пытаюсь получить результат функции А = Прокси.GetVersion(); по причине: Ошибка SOAP сервера: Authorization error сертификат получен и засунут в файл ...bin\cacert.pem по идее вроде все что написано на диске ИТС, но что-то не срабатывает. Может у кого были подобные проблемы, как обошли? |
|||
1
oleg_km
22.10.11
✎
21:04
|
Вот я так до конца и не понял: в файл cacert.pem суется сертификат сервера или клиента. Вроде как сервера, а клиентский сертификат 1С не поддерживает, потому то клиентский сертификат должен содержать закрытый ключ, а закрытый ключ должен находиться в СКЗИ, а у 1С не СКЗИ. Я понял это как то так, но с удовольствием послушал бы тех, кто разобрался в этом вопросе. Пока сделал через WinHTTP
|
|||
2
acsent
22.10.11
✎
21:05
|
веб сервисы не поддерживают соединение через ssl
|
|||
3
Fragster
гуру
22.10.11
✎
21:20
|
(2) ?
|
|||
4
ilou
22.10.11
✎
21:50
|
Вот выдержка с ИТС:
"Чтобы сертификат сервера был принят клиентом, нужно поместить его или сертификат Центра Сертификации, выдавшего данный сертификат сервера, в файл cacert.pem, который находится в каталоге bin "1С:Предприятия". В этом файле перечислены все сертификаты, которым доверяет данный клиент. Файл имеет формат PEM (Privacy Enhanced Mail) - текстовый формат, в котором сертификаты закодированы в base64 последовательности." |
|||
5
oleg_km
23.10.11
✎
10:23
|
(4) Ну да, это сертификат сервера. А в данном случае судя по всему требуетсяи сертификат клиента, а 1С этого не умеет делать, как я понимаю
|
|||
6
Fragster
гуру
23.10.11
✎
12:14
|
(5) этим занимается веб сервер
|
|||
7
oleg_km
23.10.11
✎
12:22
|
(6) Чем "этим" занимается веб-сервер? Чтобы запустить SSL в обоюднай авторизацией нужно чтобы со стороны клиента был указан сертификат с закрытым ключем клиента и сертификат сервера, и со стороны сервера должно быть тоже самое.
|
|||
8
Fragster
гуру
23.10.11
✎
12:24
|
(7) когда 1с обращается к веб сервису - она клиент, когда кто-то обращается к веб сервису - сервер - это IIS или апач, который уже вызывает 1С. соответственно, во втором случае - SSLем будет заниматься веб-сервер, а не 1с.
|
|||
9
Fragster
гуру
23.10.11
✎
12:24
|
когда кто-то обращается к веб сервису =
когда кто-то обращается к нашему 1сному веб сервису - |
|||
10
ilou
23.10.11
✎
12:58
|
Но ведь 1С как-то сертификаты, то смотрит, если например убрать сертификат из файла: cacert.pem
то при вызове функции web-сервиса он пишет. Peer certificate cannot be authenticated with known CA certificates а при наличии сертификата в файле: Ошибка SOAP сервера: Authorization error |
|||
11
Fragster
гуру
23.10.11
✎
13:16
|
(10) ты напиши, что ты делаешь, хоть - из 1с вызываешь веб сервис, или откуда-то вызываешь 1сный веб сервис
|
|||
12
ilou
23.10.11
✎
14:23
|
и может быть кто знает, что вот эта часть сертификата значит:
MD5 Fingerprint=74:7B:82:03:43:F0:00:9E:6B:B3:EC:47:BF:85:A5:93 Certificate: Data: Version: 1 (0x0) Serial Number: 02:ad:66:7e:4e:45:fe:5e:57:6f:3c:98:19:5e:dd:c0 |
|||
13
ilou
23.10.11
✎
14:23
|
(11)
Определение = Новый WSОпределения("http://soap.direct.yandex.ru/wsdl/v4"); Прокси = Новый WSПрокси(Определение,"API","YandexAPIService","APIPort"); а1 = Прокси.GetVersion(); |
|||
14
ilou
24.10.11
✎
12:29
|
подниму, что ли может быть еще кто-то подскажет в чем может быть проблема...
|
|||
15
ilou
24.10.11
✎
20:51
|
up
|
|||
16
DmitrO
25.10.11
✎
10:49
|
(0)Не получится работать с Яндекс.Директ API из 1С с помощью встроенного SOAP клиента (WSПрокси). Причины в следующем.
Для работы с этим сервисом яндекса нужна авторизация. По документации Яндекс.Директ API она может быть сделана двумя способами: 1)авторизационный токен; 2)персональный сертификат. Для того чтобы использовать авторизационный токен необходимо указание данных (пользователь, токен, идентификатор приложения) в заголовке SOAP запроса (SOAP-ENV:Header). 1С это не поддерживает, в заголовки вообще нет доступа. Авторизацию по персональному сертификату 1С в SOAP клиенте (WSПрокси) тоже не поддерживает. На данный момент в 1С SOAP клиенте поддерживается SSL только в части защиты канала (шифрования трафика по https). Для этого достаточно добавить серверный сертификат в файл cacert.pem. А авторизация в рамках защищенного канала может быть и простой (basic), видимо в 1С посчитали что этого будет достаточно. |
|||
17
DmitrO
25.10.11
✎
11:00
|
Тем не менее задачу решить можно используя просто HTTPСоединение (https поддерживается) и способ авторизации: авторизационный токен. При этом придется самому строить SOAP запросы, что вобщем-то не так уж и сложно.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |