Страницы: 1
RSS
Подписание строки сертификатом
 

Коллеги, всем здравствуйте. Нужно в 1С подписать строку сертификатом. Например, с помощью openssl сформировали самоподписанный сертификат openssl req -x509 -newkey rsa:4096 -keyout private.key -out client.crt -nodes -days 365, который установили в доверенные и в личные.

Как только начинаю выбирать этот сертификат и подписывать строку получаю ошибку - Ошибка при получении свойства сертификата (0x00000000). В чем может быть проблема, подскажите?

 
Цитата
log написал:
Коллеги, всем здравствуйте. Нужно в 1С подписать строку сертификатом. Например, с помощью openssl сформировали самоподписанный сертификат openssl req -x509 -newkey rsa:4096 -keyout private.key -out client.crt -nodes -days 365, который установили в доверенные и в личные.   Как только начинаю выбирать этот сертификат и подписывать строку получаю ошибку - Ошибка при получении свойства сертификата (0x00000000). В чем может быть проблема, подскажите?
Проверьте повнимательнее ваш синтаксис, должно быть вот так

ПолучитьХранилищеСертификатов(<ТипХранилища>, <РасположениеХранилища>)

Возвращаемое значение:

Тип: ХранилищеСертификатовКриптографии.

ХранилищеСертификатовКриптографии (CryptoCertificateStore)

Описание:

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

Платформа не имеет своего хранилища сертификатов. Она предоставляет доступ к системному хранилищу сертификатов.

Ну и еще может вы пытаетесь использовать с криптопровайдером ГОСТ, например, тип модуля определяет применяемые алгоритмы криптографии. RSA - это скорее всего тип 1, а тип 75 и 80 - это наш ГОСТ, может из-за этого еще выходит ошибка.

 

А у меня еще вопрос – подписи должна быть прикрепленная или нет? Типо на входе чтобы была строка, а на выходе эта же строка с подписью. Если да, то тогда платформа сама по себе не умеет подписывать в формате xmldsig (в том числе cades bes). Но в БСП есть внешняя компонента, которая умеет.

Могу посоветовать со своей стороны вот такое, может пригодится.

МенеджерКриптографии (CryptoManager)

Подписать (Sign)

Вариант синтаксиса: Данные подписи в возвращаемом значении

Синтаксис:

Подписать(<ИсходныеДанные>, <Сертификат>)

Параметры:

<ИсходныеДанные> (обязательный)

Тип: Строка; ДвоичныеДанные; Поток, ПотокВПамяти, ФайловыйПоток.

Исходные данные для подписывания.

Данные могут размещаться в файле (в этом случае указывается имя файла) или представлены как ДвоичныеДанные.

<Сертификат> (необязательный)

Тип: СертификатКриптографии.

Используемый сертификат криптографии.

Если параметр не указан, то в хранилище персональных сертификатов должен быть ровно один сертификат. В противном случае генерируется исключительная ситуация.

 

Кстати, если брать вариант синтаксиса Данные подписи сохраняются в файл, то тогда ситуация следующая

Синтаксис:

Подписать(<ИсходныеДанные>, <ВыходныеДанные>, <Сертификат>)

Параметры:

<ИсходныеДанные> (обязательный)

Тип: Строка; ДвоичныеДанные; Поток, ПотокВПамяти, ФайловыйПоток.

Исходные данные для подписывания.

Данные могут размещаться в файле (в этом случае указывается имя файла) или представлены как ДвоичныеДанные.

<ВыходныеДанные> (обязательный)

Тип: Строка: Поток, ПотокВПамяти, ФайловыйПоток.

Имя файла или поток, в который будут выгружены подписанные данные.

<Сертификат> (необязательный)

Тип: СертификатКриптографии.

Используемый сертификат криптографии.

Если параметр не указан, то в хранилище персональных сертификатов должен быть ровно один сертификат. В противном случае генерируется исключительная ситуация.

Описание варианта метода:

Подписанные данные записываются в файл. Возвращает Неопределено.

Возвращаемое значение:

Тип: Неопределено; ДвоичныеДанные.

При сохранении подписи в файл возвращает Неопределено.

Описание:

Создает подпись в формате CMS (базируется на PKCS#7) и возвращает ее как ДвоичныеДанные или сохраняет ее в файл.

Подпись создается алгоритмами, которые заданы свойствами АлгоритмХеширования и АлгоритмПодписи.

В данные подписи исходный файл не включается.

В данные подписи могут быть включены сертификаты, в зависимости от свойства ВключениеСертификатовВПодпись.

Если сертификат не указан, то для подписи используется единственный установленный персональный сертификат.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

 

Я бы еще добавила, чтобы автор начал копать попросту в типовой, например, ЗУП, общий модуль ЭлектроннаяПодписьКлиент процедура Подписать. Насколько помню, там все через менеджер криптографии делается.

Кстати, из новых версий БСП:

ПараметрыCMS

Формирует структуру свойств для подписания данных в формате CMS.

Синтаксис

Функция ПараметрыCMS() Экспорт

Возвращаемое значение

Структура:

* ТипПодписи - Строка - "CAdES-BES" - остальные варианты пока не используются.

* Открепленная - Булево - Ложь (по умолчанию) - включать данные в контейнер подписи.

Истина - не включать данные в контейнер подписи.

* ВключениеСертификатовВПодпись - РежимВключенияСертификатовКриптографии - определяет длину цепочки

сертификатов, включаемых в подпись. Значение ВключатьЦепочкуБезКорневого

не поддерживается и считается равным значению ВключатьПолнуюЦепочку.

Пример вызова

Результат = ЭлектроннаяПодписьКлиент.ПараметрыCMS()

Доступность

Тонкий клиент, Толстый клиент

Страницы: 1