Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline SergPP  
#1 Оставлено : 19 ноября 2012 г. 12:58:22(UTC)
SergPP

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.11.2012(UTC)
Сообщений: 4

Возникла проблема - на работающем приложении ASP.net, которое успешно работало с ЭЦП через Криптопро.net, начала выдаваться ошибка "Алгоритм ключа сертификата не поддерживается." на строчке
SecureKey = Certificate.PrivateKey;

Начали разбираться - ну почему же раньше работало, а сейчас - перестало?

Оказалось, виновно обновление Windows: KB2719033 и KB2729452
Откатили, всё заработало.

Обращаюсь к другим участникам форума - у кого-нибудь ещё возникло подобная проблема?
Если не возникла - поделитесь информацией, как вы работаете под IIS c КриптоПро.NET?

Отредактировано пользователем 19 ноября 2012 г. 14:45:15(UTC)  | Причина: Не указана

Offline SergPP  
#2 Оставлено : 19 ноября 2012 г. 13:01:16(UTC)
SergPP

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.11.2012(UTC)
Сообщений: 4

Вот например, мы работаем самым простым способом:
1. необходимо для запоминания пароля "включить кэширование"(КриптоПро CSP - Безопасность).
Протестировать контейнер, и "запомнить пароль" для него.

2. под IIS 7.5 в Advanced Settings переводим Application Pool, где расположено наше приложение (обычно это DefaultAppPool) на Identity = LocalSystem,
там же убеждаемся что Load User Profile=true

после чего ключ нормально видится и приложение работает.

Сама работа с ключом выполняется так:
Код:

CspParameters cp = new CspParameters();            
            cp.KeyContainerName = containerName;            
            cp.ProviderType = 75;
            cp.Flags = CspProviderFlags.NoPrompt;

            if (!string.IsNullOrEmpty(psw))
            {
                SecureString sec_psw = new SecureString();
                foreach (char ch in psw)
                {
                    sec_psw.AppendChar(ch);
                }
                cp.KeyPassword = sec_psw;
            }

            Gost3410CryptoServiceProvider.UseMachineKeyStore = true;

            try
            {
                Gost3410CryptoServiceProvider gost = new Gost3410CryptoServiceProvider(cp);
                // Запоминаем сертификат подписчика
                X509Certificate2 Certificate = gost.ContainerCertificate;
                // Открываем ключ подписи.            
                AsymmetricAlgorithm _SecureKey = Certificate.PrivateKey;
....

Отредактировано пользователем 19 ноября 2012 г. 13:33:46(UTC)  | Причина: Не указана

Offline khomenko  
#3 Оставлено : 19 ноября 2012 г. 14:44:36(UTC)
Михаил Хоменко

Статус: Активный участник

Группы: Администраторы, Участники
Зарегистрирован: 28.04.2010(UTC)
Сообщений: 140
Мужчина
Откуда: Крипто-Про

Поблагодарили: 15 раз в 14 постах
Добрый день,

Обновление затрагивает только IIS, на Крипто-Про .NET не должно влиять.
Попробуйте установить последнюю версию Крипто-Про .NET 1.0.4702.0 (с установленными обновлениями Windows)
Если ошибка сохранится - пришлите osinfo.xml.

Если вы работеете под apppool identity, то необходимо дать права этой учетке на доступ к контейнеру с закрытым ключом.
Offline SergPP  
#4 Оставлено : 19 ноября 2012 г. 15:34:44(UTC)
SergPP

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.11.2012(UTC)
Сообщений: 4

khomenko написал:

Обновление затрагивает только IIS, на Крипто-Про .NET не должно влиять.

Абсолютно верно. Эти обновления что-то изменяют в IIS, после чего приложение, работающее под ним, теряет доступ к ключу.

khomenko написал:

Попробуйте установить последнюю версию Крипто-Про .NET 1.0.4702.0 (с установленными обновлениями Windows)

На одном из компьютеров, где вылезла ошибка - была проверена эта гипотеза, переставили КриптоПро.NET
Вообще ошибка происходит на любых версиях КриптоПро.NET, мы проверили на разных серверах и разных версиях - я посмотрел на нескольких пользователях.

khomenko написал:

Если ошибка сохранится - пришлите osinfo.xml.
Если вы работеете под apppool identity, то необходимо дать права этой учетке на доступ к контейнеру с закрытым ключом.

Ок, давайте попробуем разобраться. Я установил этот Windows Update, доступа к ключу сейчас нет.
Права выдал. Файл прикладываю.
Вложение(я):
osinfo.rar (19kb) загружен 5 раз(а).

У Вас нет прав для просмотра или загрузки вложений. Попробуйте зарегистрироваться.
Offline Георгий Садофьев  
#5 Оставлено : 19 ноября 2012 г. 16:03:02(UTC)
Георгий Садофьев

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 14.10.2011(UTC)
Сообщений: 150
Мужчина

Поблагодарили: 33 раз в 32 постах
А ошибка возникает только в приложении на ASP.NET?
Если, например, какой-нибудь пример из sdk запустить, ошибка также проявится?
Техническую поддержку оказываем тут
Наша база знаний
Offline SergPP  
#6 Оставлено : 19 ноября 2012 г. 16:04:21(UTC)
SergPP

Статус: Новичок

Группы: Участники
Зарегистрирован: 19.11.2012(UTC)
Сообщений: 4

Yoda написал:
А ошибка возникает только в приложении на ASP.NET?
Если, например, какой-нибудь пример из sdk запустить, ошибка также проявится?

Нет. Только при работе из-под IIS.
Offline khomenko  
#7 Оставлено : 19 ноября 2012 г. 16:42:53(UTC)
Михаил Хоменко

Статус: Активный участник

Группы: Администраторы, Участники
Зарегистрирован: 28.04.2010(UTC)
Сообщений: 140
Мужчина
Откуда: Крипто-Про

Поблагодарили: 15 раз в 14 постах
судя по osinfo ошибок у установке нет, но стоит не последняя версия.

На версии Крипто-Про .NET 4702 + установленных обновлениях:
- Если пул работает под appPool identity, то
-- возникает ошибка "Алгоритм ключа сертификата не поддерживается".
-- в журнале при этом появляются ошибки от CPNetDetours**
-- права на ключ давали через оснастку сертификатов или напрямую через реестр (или ключ на токене?)
- Если пул работает под LocalSystem - ошибок нет ?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.