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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Bo4  
#1 Оставлено : 12 ноября 2008 г. 17:20:56(UTC)
Bo4

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

Группы: Участники
Зарегистрирован: 12.11.2008(UTC)
Сообщений: 2
Мужчина
Откуда: Волгоград

Доброго времени суток.

Вопрос заключается в следующем:
Есть Некое Web приложение в котором происходит подписание данных. Разработано оно под студией 2008. Функция подписания данных реализована на vbs.
В серверной части приложения на C# реализована функция проверки ЭЦП.
Код проверки:
...
CadesSignedDataClass csd = new CadesSignedDataClass();
csd.Content = data;
try
{
//проверяем ЭЦП
csd.Verify( signature, true, CAPICOM_SIGNED_DATA_VERIFY_FLAG.CAPICOM_VERIFY_SIGNATURE_AND_CERTIFICATE );
result = true;
//проверяем сертификаты, которыми были подписанны данные
foreach ( Certificate cert in csd.Certificates )
{
if ( cert.IsValid().Result == false )
{
result = false;
break;
}
}
}
catch
{
result = false;
}
...
При работе в студии когда запускается Verify класса CadesSignedData проверка подписи проходит успешно.
Стоит запустить приложении через IIS который развернут на этом же самом компьютере, проверка абсалютно тех же данных, то же самой подписью выдает неверный результат.

Получается что разница лишь в пользователе от чьего имени запущено запущены сервисы, но мне совершенно непонятно как это влияет на проверку, ведь сертификат которым мы проверяем содерижтся непосредственно в подписи?

Может быть кто нибудь сталкивался с этим?

Отредактировано пользователем 12 ноября 2008 г. 17:32:08(UTC)  | Причина: Не указана

Offline Павел Смирнов  
#2 Оставлено : 12 ноября 2008 г. 19:20:21(UTC)
Павел Смирнов

Статус: Вам и не снилось

Группы: Администраторы
Зарегистрирован: 24.12.2007(UTC)
Сообщений: 831
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 1 раз
Поблагодарили: 48 раз в 44 постах
Все сертификаты, необходимые для проверки подписи, содержатся в ней, но доверие к этим сертификатам зависит от содержимого хранилища сертификатов "Доверенные корневые центры сертификации". Содержимое хранилища может различаться у разных пользователей.

Попробуйте установить корневой сертификат УЦ в хранилище "Доверенные корневые центры сертификации" локального компьютера, тогда этот УЦ станет доверенным для всех пользователей компьютера.

P.S. Проверка
Код:
foreach ( Certificate cert in csd.Certificates )
{ 
if ( cert.IsValid().Result == false )
{
result = false;
break;
}
}

совершенно лишняя, т.к. метод Verify() проверяет всё необходимое.
Техническую поддержку оказываем тут.
Наша база знаний.
Offline Bo4  
#3 Оставлено : 12 ноября 2008 г. 20:14:15(UTC)
Bo4

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

Группы: Участники
Зарегистрирован: 12.11.2008(UTC)
Сообщений: 2
Мужчина
Откуда: Волгоград

Большое спасибо, установка сертификата УЦ в хранилище локального компьютера действительно устранило проблему.

Цитата:
P.S. Проверка
Code:
foreach ( Certificate cert in csd.Certificates )
{
if ( cert.IsValid().Result == false )
{
result = false;
break;
}
}

совершенно лишняя, т.к. метод Verify() проверяет всё необходимое.


И наличие данного сертификата среди отозванных?
Просто при работе с капикомом я использовал следующую конструкцию
Код:
SignedDataClass sd = new SignedDataClass();
sd.Content = data;
try
{
	sd.Verify( signature, true, CAPICOM_SIGNED_DATA_VERIFY_FLAG.CAPICOM_VERIFY_SIGNATURE_ONLY );
	result = true;
	//проверяем сертификаты, которыми были подписанны данные
	foreach ( Certificate cert in csd.Certificates )
	{
		//устанавливаем флаг, чтобы проверить список отозванных сертификатов
		cert.IsValid().CheckFlag = CAPICOM_CHECK_FLAG.CAPICOM_CHECK_ONLINE_REVOCATION_STATUS;
		if ( cert.IsValid().Result == false )
		{
			result = false;
			break;
		}
	}
}

чтобы убедится что сертификат еще действует.
В кадескоме насколько я понял это уже не нужно, но код перекочевал с небольшим изменением.

P.S. Опыт работы с ЭЦП у меня очень небольшой. Вот и вставляю лишние проверки.

Отредактировано пользователем 12 ноября 2008 г. 20:27:04(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.