#0
by Gleb K
win2008r2 + 1С 8.3 + IIS Имею http-сервис опубликованный на IIS, необходимо работать с ЭП (проверять подпись запроса и формировать подпись для ответа). Пул приложений 1С в ISS стартует под собственным пользователем IIS APPPOOL 1C. Свой сертификат RSA с закрытым ключом установил в хранилище компьютераличные, дал полные права доступа к нему пользователю IIS APPPOOL 1C (пробовал как через mmc, так и через утилиту winhttpcertcfg). Также пробовал ставить сертификат в хранилище пользователяличные. Следующий код не видит сертификата: МК = Новый МенеджерКриптографии("Microsoft Enhanced Cryptographic Provider v1.0","",1); Также пробовал стартовать пул приложений 1С под учеткой Network service и под своей личной учеткой - не помагает. Если запустить толстый клиент на этой машине, то сертификат видится без проблем. Ребята, есть идеи?
#2
by igork1966
Полагаю что ветка реестра "хранилище компьютераличные" не видна под другим пользователем, не?
#3
by Gleb K
если имеется в виду HKEY_CURRENT_USERSoftwareMicrosoftSystemCertificates и HKEY_LOCAL_MACHINESOFTWAREMicrosoftSystemCertificates То доступ с наследованием на обе ветки проставил, сертификат все равно не видит.
#4
by Gleb K
Если смотреть через толстый клиент, то текущему пользователю доступно только хранилище пользователя и сертификат виден, а на хранилище компа выдается ошибка, но если на его ветку в реестре добавить права текущему пользователю и поместить туда сертификат, то ошибки не появляется, но ни одного сертификата в этом хранилище не видно. Поставил сертификат в хранилище пользователя, сделал запуск пула приложений от имени текущего пользователя, сертификаты хранилища пользователя все-равно не видны.
#7
by Gleb K
http-сервис вроде исполняется на сервере, при этом используются синхронные вызовы методов, так что вроде контекст правильный.
#11
by Gleb K
Попробовал через CAPICOM, он видит сертификаты, но при попытке подписать (последняя строка в коде) валится с ошибкой "Ошибка при вызове метода контекста (Sign): Произошла исключительная ситуация: Набор ключей не существует". Пул приложений 1С сейчас стартует под локальным пользователем. Этот же код, но в толстом клиенте под локальным пользователем работает без проблем. // CAPICOM constants
#13
by Gleb K
Попробовал сделать через обертку .Net В толстом клиенте все работает. Из модуля http-сервиса пула приложений запускаемого от этого же пользователя - падает на первой строке как-будто COM интерфейс не зарегистрирован. Интересно это фундаментальные ограничения или какой-то косяк с правами доступа?
#14
by Serginio1
Возможно не зарегистрирован. Там нужно в поставке идет RegAsm.bat который нужно запустить от администратора Внутри %SystemRoot%Microsoft.NETFrameworkv4.0.30319RegAsm.exe "%~dp0NetObjetToIDispatch45.dll" /codebase
#16
by Gleb K
Зарегистрирован батником, в толстом клиенте на этой же машине код полностью отрабатывает. А при запуске через пул приложений IIS на вызов http-сервиса - падает.
#17
by Gleb K
В настройках пула 1С рекомендует ставить Без управляемого кода, но я пробовал ставить 4 Net все-равно падает.
#18
by Serginio1
Там 2 строчки одна для 32 разрядного (Толстый клиент) Вторая для 64 разрядного. Запусти из под cmd
#19
by Gleb K
Запускал cmd под админскими правами и оттуда уже батник. В реестре вроде прописался HKEY_CLASSES_ROOTCLSID{8693BBEC-C964-4478-AFCB-E8D15FD8F4F6}
#23
by Gleb K
Папку с dll ? Права полные для текущего пользователя - в толстом клиенте все отрабатывает, через пул приложений под правами того же текущего пользователя - нет.
#31
by Gleb K
При регистрации он кстати ругался на ключ /codebase но потом написал, что типы успешно зарегистрированы
#32
by Gleb K
У меня в дереве Dcom нет NetObjetToIDispatch45 Дерево смотрю 32 разрядное через mmc comexp.msc /32
#35
by Gleb K
Сейчас поставил общие права на объекты Dom и прописал права в локальных политиках, теперь ошибка Отказано в доступе. Но сервер еще не перезагружал.
#37
by Gleb K
Такой объект тоже зарегистрирован HKEY_CLASSES_ROOTCLSID{DFDADA57-B22C-4276-928A-8B91C9891FF1}
#40
by Gleb K
Хочешь прикол? попытка //До сюда код выполняется и в БиблиотекаNET сидит COMОбъект а на следующей строке все падает с ошибкой "Ошибка при вызове метода контекста (СоздатьОбъект): Произошла исключительная ситуация (mscorlib): Адресат вызова создал исключение."
#45
by Serginio1
Значит проблема доступа к ,"C:Usersg.kondratyevDesktopleaderGKazimut360.pfx", Попробуй просто найти файл Можно создать и так
#52
by Gleb K
Переместил файл поближе и перевел в нижний регистр: c:1cbasegk.pfx Теперь файл существует, но при попытке падает: "Ошибка при вызове метода контекста (СоздатьОбъект): Произошла исключительная ситуация (NetObjetToIDispatch45): Ссылка на объект не указывает на экземпляр объекта."
#54
by Gleb K
все-равно падает на последней строке "Ошибка при вызове метода контекста (СоздатьОбъект): Произошла исключительная ситуация (mscorlib): Адресат вызова создал исключение.""
#59
by Gleb K
Ошибка при вызове метода контекста (СоздатьОбъект): Произошла исключительная ситуация (mscorlib): Адресат вызова создал исключение.
#62
by Gleb K
Serginio1 огромное спасибо за помощь, попробую импорт завтра, а также через X509Store.
#63
by Serginio1
Для флагов есть OR Например Код на C# new X509Certificate2(fileName, keyPassword, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet | X509KeyStorageFlags.Exportable) Код на 1С Сертификат=X509Certificate2(fileName, keyPassword,Врап.OR( X509KeyStorageFlags.MachineKeySet, X509KeyStorageFlags.PersistKeySet, X509KeyStorageFlags.Exportable));
#66
by Gleb K
Пробую сейчас через хранилище Ошибка при получении значения атрибута контекста (PrivateKey): Неизвестная ошибка System.Reflection.TargetInvocationException: Адресат вызова создал исключение. ---> System.Security.Cryptography.CryptographicException: Не удается найти указанный файл.
#69
by Gleb K
Хорошая статья, но странно это, т.к. у меня в пуле приложений стоит Загрузить профиль пользователя = True, т.е. с этой настройкой должно работать создание объекта сертификата из файла, но нет. Далее предлагается поместить сертификат в хранилище компа, дать права на него пользователю под которым запускается пул, и достать его из хранилища, что собственно я успешно и делаю, но при обращении к закрытому ключу объекта сертификат получаю грабли.
#70
by Gleb K
Эврика! Рабочим оказался следующий код: Serginio1 огромное спасибо за участие, хотя еще мне нужно сделать проверку подписи входящего запроса, но если будут проблемы напишу сюда и надеюсь не откажите еще раз помочь.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Была обработина под 77, которая красиво из mxl делала xls нужна под 8.0
- 8.2 "Доступ. Отказ в доступе" в журнале регистрации
- Программный доступ к хранилищу конфигурации
- Параметры сеанса. Модуль сеанса
- Невозможно в ОФ программно получить доступ к панеле быстрого доступа?
- V8.3 RLS доступ к реквизитам параметра сеанса
- Доступ. Отказ в доступе.
- Версия набора расширений сеанса не найдена в параметрах сеанса.
В этой группе 1С
- Ошибка формата сообщения обмена
- УТ11 - сбой в БД, Z-отчет по ФР снят, в БД отсутствует отчет о розн. продажах
- Единый маршрутный лист по заказу ERP 2.1.3
- На 8.3.6 7 8 - сбиваются привязки в обычных формах
- При загрузке документов из ККМ Offline выходит ошибка ?
- Как подружить 1С и APACHE 2.4.4(x64)
- 1С не видит ключ СЛК по сети
- Утап 11, интеграция с кт 2000 алкоголь
- Загрузка из текстовых файлов в 1С (из каталога)
- ОписаниеОповещения в модуле команды. В веб-клиенте ругается на ЭтотОбъект.
- УТ 10.3 Отчет "Валовая прибыль"
- Как снять запрет на открытие внешних обработок
- Измерение РС - строка
- работа с xml, если xml - строка
- Подключение через COM к базе в веб-клиенте
- Нужно поменять единицу хранения остатков
- Корректировочный счет-фактура не попадает в книгу покупок
- Как в ЗУП 3.0 в запросе получить организация в сотрудника?
- Внешний отчет УПП, выбор реализации?
- Переход с платформы 8.2 на 8.3. Ошибка доступа к файлу. Отказано в доступе.