| ||||
| ||||
Мне кажется вопрос простой, но почему-то не решается :-) Есть библиотека на С++, которая инкапсулирует в себе работу с CryptoPro. Для нее написана COM-обертка, которая используется в клиенте на C#. Все замечательно работает. Но пришлось задействовать ту же библиотеку через WebService (.Net). И я стал получать ошибку, что сертификат не найден :-) Сертификат хранился в Локальный компьютер - Личные, а также в Текущий пользователь - Личные. Куда следует поместить сертификат? Заранее большое спасибо! С уважением, Виктор | ||||
Ответы: | ||||
| ||||
.Net не поддерживает наших провайдеров. Ждите версию под .NET | ||||
| ||||
День добрый! А можно комментарий по-подробнее? Т.е. нельзя использовать ВебСервис (.Net) для подписи/проверки ЭЦП, используя COM-объект, реализующий функционал по работе с ЭЦП? Несмотря на то, что обычное Windows-приложение (.Net) работает с этим COM-объектом нормально (и подписывает и проверяет, т.е. сертификат нормально находит)? Заранее большое спасибо! С уважением, Виктор | ||||
| ||||
А как обстоит дело с Java? Т.е. есть ли возможность использовать "хоть какие-нибудь" ВебСервисы? С уважением, Виктор | ||||
| ||||
Возможно я не правильно понял вопрос - решил что речь идет о WSE. По поводу сертификата - под какой учетной записью работает Ваш webservice? Соответственно, сертификат должен быть установлен для этой учетной записи. | ||||
| ||||
Пуск - Настройка - Administrative Tools - Internet Services Manager - Default Web Site - CryptoSrv - Properties - DirectorySecurity - Edit: - стоит галочка Anonymous access (вверху) - стоит галочка Integrated Windows authentication Здесь ли это настраивается? Просто других настроек Security я не нашел. Заранее спасибо! С уважением, Виктор | ||||
| ||||
это немножко не то - относится к аутентификации пользователей на веб-сервере - нужно выяснить под какой учетной записью работает веб-сервис. Самый простой способ - вставить в код вызов функции GetUserName(), но скорее всего Ваш сервис работает под NETWORK SERVICE | ||||
| ||||
И что нужно сделать в этом случае? Заранее спасибо! С уважением, Виктор | ||||
| ||||
По умолчанию на WinXP/2000 веб-сервис работает под пользователем ASPNET. На Win2003 — Network Service. И что нужно с этим поделать? :-) Заранее большое спасибо! С уважением, Виктор | ||||
| ||||
Прошу прощения, если я не очень внятно описываю проблему. Но что подразумевается под фразой: "По поводу сертификата - под какой учетной записью работает Ваш webservice? Соответственно, сертификат должен быть установлен для этой учетной записи." Т.е. получается, что по умолчанию на WinXP/2000 веб-сервис работает под пользователем ASPNET. На Win2003 - Network Service. Что нужно сделать? Как установить сертификат для данной учетной записи? :-) Возможно я не верно понимаю работу с сертифкатами из Веб-сервиса, но вот, что я имел в виду: Если запустить данный код из Веб-сервиса, то сертификат "Иванов" не находится: [WebMethod] public void SignXml() { // Создали СОМ-объект, который умеет подписывать CCSignEnvelope SignEnvelope = new CCSignEnvelope(); SignEnvelope.SerializeInit(); // Установили файл, который нужно подписать CFileStreamReader reader = new CFileStreamReader(); reader.initialize(@"D:\Temp\____0000\src.xml"); SignEnvelope.SetBody(reader); // Собственно подпись SignEnvelope.Sign("Иванов"); // Имя сертификата, который не находится // Вывод результата в другой файл CFileStreamWriter writer = new CFileStreamWriter(); writer.initialize(@"D:\Temp\____0000\res.xml"); SignEnvelope.Serialize(writer); writer.close(); } Если же запустить этот код в обычном методе обычного Windows-приложения, то сертификат находится и все хорошо работает. Сертификат хранится в Локальный компьютер - Личные, а также в Текущий пользователь - Личные. Если не сложно, поясните, пожалуйста. Заранее большое спасибо! С уважением, Виктор. | ||||
| ||||
А не находится именно сертификат или закрытый ключ к нему? Насколько я понимаю, установить сертификат под Nework Service будет проблематично. Попробуйте или запустить asp.net под SYSTEM, или под специальной учетной записью, в хранилище сертификатов которой и устрановите требуемый сертификат. | ||||
| ||||
> А не находится именно сертификат или закрытый ключ к нему? Сейчас буду выяснять > Насколько я понимаю, установить сертификат под Nework Service будет проблематично. Попробуйте или запустить asp.net под SYSTEM Изучаю матчасть :-) Не уверен, что это можно сделать. > или под специальной учетной записью, в хранилище сертификатов которой и устрановите требуемый сертификат. Вопрос: как установить сертификат для специальной учетной записи? Сертификат в данный момент помещен во все хранилища, куда я его только смог поместить. В том числе и в "Текущий пользователь - Личные". Т.е. сертификат, получается, уже установлен для специальной учетной записи? Или я что-то недопонимаю? Заранее большое спасибо! С уважением, Виктор | ||||
| ||||
Пользователь под которым запускается ASP.NET конфигурится в machine.config Зайти на машину под этим пользователем и положить сертификат в его хранилище, или дать права на хранилище компьютера (сделать админом, но не рекомендую :)) | ||||
| ||||
!!! Работает! Спасибо большое !!! С уважением, Виктор | ||||