Имя: Пароль:
1C
1С v8
Подписание строки сертификатом
0 orensymrak
 
06.07.23
15:27
Всем привет,
понадобилось подписать строку сертификатом средствами 1С.
Что имеется
Строка:
{
"command": "GetQRCd",
"TermNo": "32201060",
"qrcType": "01",
"amount": "100",
"currency": "RUB",
"paymentPurpose": "Назначение платежа"
}


С помощью openssl сформирован самоподписанный сертификат
openssl req -x509 -newkey rsa:4096 -keyout private.key -out client.crt -nodes -days 365

Установил его как в доверенные так и в личные.
Начинаю выбирать данный сертификат и подписывать строку
Функция Тест2(Строка)
    МК = Новый МенеджерКриптографии("", "", 80); // 75 и 80 пробовал ошибка та же                                                    
    Хранилище = МК.ПолучитьХранилищеСертификатов(ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты);
    СертификатыХранилища = Хранилище.ПолучитьВсе();
                                    
    Сертификат = СертификатыХранилища[0]; // мой самоподписанный серт
    
    Стр = ПолучитьДвоичныеДанныеИзСтроки(Строка);

    Результат = МК.Подписать(Стр, Сертификат);
    Возврат Результат;
КонецФункции


Но получаю ошибку:
Ошибка при получении свойства сертификата (0x00000000).


Решил проверить, а верно ли код написал, выбрал другой доступный сертификат, и 1С подписала строку где в "Результат" получил двоичные данные.

Подскажите, где я ошибся, или где то какой то этап пропустил.
1 lodger
 
06.07.23
16:50
Синтаксис:
ПолучитьХранилищеСертификатов(<ТипХранилища>, <РасположениеХранилища>)
Возвращаемое значение:
Тип: ХранилищеСертификатовКриптографии.

ХранилищеСертификатовКриптографии (CryptoCertificateStore)
Описание:
Предоставляет доступ к хранилищу сертификатов.
Платформа не имеет своего хранилища сертификатов. Она предоставляет доступ к системному хранилищу сертификатов.

---
а в нём разве можно ковыряться через [0]? через квадратные скобки ты сможешь ковырять это
СертификатыХранилища.ПолучитьВсе()[0]
2 orensymrak
 
07.07.23
09:49
(1) Ну так там же и есть указание с какого хранилища считывать сертификаты "ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты"
И да в нем можно ковыряться, через обращение к индексу я тестово выбираю тот сертификат, который мне нужен.
3 arsik
 
07.07.23
09:57
Херня это, а не сертификат.
Посмотри как правильно самоподписные сертификаты генеряться в опенвпн, через easy-rsa.
4 arsik
 
07.07.23
09:59
5 cuberboy
 
07.07.23
10:15
(3) ты очень далек от истины
6 Тихий омут
 
07.07.23
11:11
(0) СБП? Плюнул в конце концов на платформенные методы и сделал через openssl. Интересно будет, если у тебя получится побороть именно с помощью платформы
7 orensymrak
 
07.07.23
11:15
(6) да СБП, в конфигурации не реализован данный банк, у которого своя методика работы в отличии от других
P.S. СБП зеленого банка работает прекрасно уже в своей интеграции, а сейчас нужно реализовать СБП другого банка.
8 orensymrak
 
07.07.23
14:29
(6) Еще раз прочитал сообщение и только дошло, что ты реализовал это через openssl?
Не хотелось бы конечно этого, но уже третий день бьюсь над этим и мысли уже начинают смотреть на методики по openssl....
9 oleg_km
 
08.07.23
18:06
(0) Ты сгенерил сертификат RSA:

openssl req -x509 -newkey rsa:4096 -keyout private.key -out client.crt -nodes -days 365


А использовать пытаешься с криптопровайдером ГОСТ:

МК = Новый МенеджерКриптографии("", "", 80);// 75 и 80 пробовал ошибка та же
10 orensymrak
 
16.07.23
18:30
(9) не очень осведомлен с криптографией, поэтому не понимаю намека, тип модуля криптографии не тот?
11 oleg_km
 
16.07.23
19:38
(10) Ну да, тип модуля определяет применяемые алгоритмы криптографии. RSA - это скорее всего тип 1, а тип 75 и 80 - это наш ГОСТ
12 orensymrak
 
24.07.23
09:21
(11) Такая же ошибка с типом: 1
Ошибка при получении свойства сертификата (0x00000000).
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn