|   |   | 
| 
 | Как правильно добавить цифровой сертификат 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 запросы, что вобщем-то не так уж и сложно.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |