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

Уведомление

Icon
Error

3 Страницы123>
Опции
К последнему сообщению К первому непрочитанному
Offline timur.lt  
#1 Оставлено : 26 февраля 2015 г. 12:49:21(UTC)
timur.lt

Статус: Участник

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

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

Подскажите, у меня стоит задача подписать xml файл (электронная счет-фактура) сертификатом, который находится в реестре.
На компьютере установлен КриптоПро CSP версии 3.6.
Вроде в коде я нахожу нужный сертификат, но при вызове
signerData.Sign(signer, false);
выдается exception
The signer's certificate is not valid for signing.
В чем может быть проблема?

public void ftest()
{
CAPICOM.Store store = new CAPICOM.Store();
store.Open(CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, "AddressBook");

CAPICOM.Certificate cer = store.Certificates[2];
MessageBox.Show(cer.GetInfo(CAPICOM.CAPICOM_CERT_INFO_TYPE.CAPICOM_CERT_INFO_SUBJECT_SIMPLE_NAME) + " " +
cer.ValidToDate.ToString());

store.Close();

CAPICOM.Signer signer = new CAPICOM.Signer();
signer.Certificate = cer;
CAPICOM.SignedData signerData = new CAPICOM.SignedData();

signerData.Content = "<xml>test</xml>";
string ss = signerData.Sign(signer, false);
}

Возможно есть другой способ подписания?
Offline Андрей Писарев  
#2 Оставлено : 26 февраля 2015 г. 13:07:24(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,104
Мужчина
Российская Федерация

Сказал «Спасибо»: 613 раз
Поблагодарили: 2378 раз в 1870 постах
Тестовый сертификат используется?
Что написано в поле "Использование ключа"?
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей Писарев  
#3 Оставлено : 26 февраля 2015 г. 13:07:52(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,104
Мужчина
Российская Федерация

Сказал «Спасибо»: 613 раз
Поблагодарили: 2378 раз в 1870 постах
Зачем используется AddressBook?
Техническую поддержку оказываем тут
Наша база знаний
Offline timur.lt  
#4 Оставлено : 26 февраля 2015 г. 13:32:01(UTC)
timur.lt

Статус: Участник

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

Поблагодарили: 1 раз в 1 постах
Использую рабочий сертификат.
Текст в поле "Использование ключа" -
Цифровая подпись, Неотрекаемость, Шифрование ключей, Шифрование данных (f0)
Поле выделено - желтым значком с восклицательным знаком.

AddressBook нашел методом тыка, сертификат расположен на закладке "Другие пользователи", если смотреть в окне Свойтства браузера \ Сертификаты.


Offline Андрей Писарев  
#5 Оставлено : 26 февраля 2015 г. 16:39:42(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,104
Мужчина
Российская Федерация

Сказал «Спасибо»: 613 раз
Поблагодарили: 2378 раз в 1870 постах
При просмотре сертификата - на вкладке Общие: есть закрытый ключ для этого сертификата?
Что дает (ошибки есть\лог здесь опубликовать) тестирование этого сертификата через КриптоПРО CSP\Сервис\Протестировать?
Техническую поддержку оказываем тут
Наша база знаний
Offline timur.lt  
#6 Оставлено : 6 марта 2015 г. 11:32:13(UTC)
timur.lt

Статус: Участник

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

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

Переустановили сертификат и стало подписываться.

Но делаю проверку через сайт http://www.gosuslugi.ru/pgu/eds/
— электронного документа. ЭП — отсоединенная, в формате PKCS#7
пишет ЭП не верна

А проверка
— электронного документа. ЭП — в формате PKCS#7
проходит.

Код
CAPICOM.Store store = new CAPICOM.Store();
store.Open(CAPICOM.CAPICOM_STORE_LOCATION.CAPICOM_CURRENT_USER_STORE, "My");
CAPICOM.Certificate cer = store.Certificates[1];
store.Close();

CAPICOM.Signer signer = new CAPICOM.Signer();
signer.Certificate = cer;
CAPICOM.SignedData signerData = new CAPICOM.SignedData();

string str = System.IO.File.ReadAllText("c:\\2\\ON_SFAKT_2AEBB260FA2-67B2-410E-B5C2-4E55D8778EB3_2AE5264DFA7-096F-406B-94C4-614BE2C75B42_20150226_BE791445-2986-4829-A0D2-93975E56FC44.xml", Encoding.Default);

signerData.Content = str;
string ss = signerData.Sign(signer, false);
System.IO.File.WriteAllText("c:\\2\\ON_SFAKT_2AEBB260FA2-67B2-410E-B5C2-4E55D8778EB3_2AE5264DFA7-096F-406B-94C4-614BE2C75B42_20150226_BE791445-2986-4829-A0D2-93975E56FC44.bin", ss);


В чем может быть ошибка? Спасибо.

Отредактировано пользователем 6 марта 2015 г. 12:14:11(UTC)  | Причина: Не указана

Offline timur.lt  
#7 Оставлено : 6 марта 2015 г. 12:08:56(UTC)
timur.lt

Статус: Участник

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

Поблагодарили: 1 раз в 1 постах
bin файл нельзя загрузить поэтому вставил файл с раширением log
Offline Андрей Писарев  
#8 Оставлено : 6 марта 2015 г. 12:52:34(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 14,104
Мужчина
Российская Федерация

Сказал «Спасибо»: 613 раз
Поблагодарили: 2378 раз в 1870 постах
Цитата:
string ss = signerData.Sign(signer, false);



Редко кто читает документацию



Код:
SignedData.Sign( _
  [ ByVal Signer ], _
  [ ByVal bDetached ], _
  [ ByVal EncodingType ] _
) 


Техническую поддержку оказываем тут
Наша база знаний
Offline timur.lt  
#9 Оставлено : 6 марта 2015 г. 13:25:11(UTC)
timur.lt

Статус: Участник

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

Поблагодарили: 1 раз в 1 постах
поставил

signerData.Sign(signer, true );

вызывал с CAPICOM.CAPICOM_ENCODING_TYPE.CAPICOM_ENCODE_BINARY
все равно на сайте http://www.gosuslugi.ru/pgu/eds/ пишет ошибку
Электронная подпись недействительна

нашел на форуме, но там используется CAdESCOM
http://www.cryptopro.ru/...ts&m=55188#post55188

Offline timur.lt  
#10 Оставлено : 6 марта 2015 г. 13:59:33(UTC)
timur.lt

Статус: Участник

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

Поблагодарили: 1 раз в 1 постах
нужно ли использовать параметр, как примере
signer.Options = CAPICOM.CAPICOM_CERTIFICATE_INCLUDE_OPTION.CAPICOM_CERTIFICATE_INCLUDE_WHOLE_CHAIN;

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