Статус: Новичок
Группы: Участники
Зарегистрирован: 06.04.2021(UTC) Сообщений: 2
Сказал(а) «Спасибо»: 2 раз
|
Автор: Александр Лавник Автор: vint-95 Добрый день. Сразу предупрежу - с теорией проблемы, поэтому путаюсь в терминологии и могу задавать глупые вопросы, прошу прощения. Появилась потребность сделать на Unix (Oracle Linux Server 7.3) в 1С программно (8.3.12.1595, без вспомогательных конфигураций по работе с сертификатами) шифрование с использованием КриптоПро (v4.0.9017 KC1 Release Ver:4.0.9944 OS:Linux CPU:AMD64). В МенеджерКриптографии указываю путь к библиотеке "/opt/cprocsp/lib/amd64/libcapi20.so" и тип провайдера (81). Добавляю тестовый сертификат: ./certmgr -inst -file "/opt/cprocsp/bin/amd64/certificates/certnew.cer" -store uMy Сертификат добавил, в списке появился. Проверяю в коде: ни в хранилище персональных сертификатов, ни в сертификатах получателей ничего нет. Изменил хранилище на uAddressBook - ничего. Попробовал добавить иначе, на основе инструкции ( ссылка) - создал тестовый сертификат на основе csr-запроса, инсталлировал в контейнер, потом добавил в хранилище. Результат аналогичный - массив сертификатов пуст. Сертификаты: Код:1-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : CN=testUser, O=MyCompany, C=RU, E=test@test.ru
Serial : 0x12005230250582B6C86A3EF21A000100523025
SHA1 Hash : abbb8e7fc3f66f2ef7dca1ef5f10156fd12756c1
SubjKeyID : abe9062eb28b32ed2e9f449a7c18ad0ce8c4b66d
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2012 (1024 bits)
Not valid before : 08/04/2021 06:06:51 UTC
Not valid after : 08/07/2021 06:16:51 UTC
PrivateKey Link : Yes
Container : HDIMAGE\\NewTest2.000\43F4
Provider Name : Crypto-Pro GOST R 34.10-2012 KC1 Strong CSP
Provider Info : ProvType: 81, KeySpec: 1, Flags: 0x0
CA cert URL : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202(1).crt
OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202(1).crl
Extended Key Usage : 1.3.6.1.5.5.7.3.2
2-------
Issuer : E=support@cryptopro.ru, C=RU, L=Moscow, O=CRYPTO-PRO LLC, CN=CRYPTO-PRO Test Center 2
Subject : CN=test, O=MyCompany, C=RU, E=test@test.ru
Serial : 0x1200522F0E5C41077332DD7ECC000100522F0E
SHA1 Hash : cb1d4252b34634a170e83c0f0181f4ad82c2adbf
SubjKeyID : 621f22e47efa5fd68fa528d5456930c160680903
Signature Algorithm : ГОСТ Р 34.11/34.10-2001
PublicKey Algorithm : ГОСТ Р 34.10-2012 (512 bits)
Not valid before : 08/04/2021 04:56:24 UTC
Not valid after : 08/07/2021 05:06:24 UTC
PrivateKey Link : No
CA cert URL : http://testca.cryptopro.ru/CertEnroll/test-ca-2014_CRYPTO-PRO%20Test%20Center%202(1).crt
OCSP URL : http://testca.cryptopro.ru/ocsp/ocsp.srf
CDP : http://testca.cryptopro.ru/CertEnroll/CRYPTO-PRO%20Test%20Center%202(1).crl
Extended Key Usage : 1.3.6.1.5.5.7.3.2
При этом - корневые сертификаты из 1C-кода в Unix я могу получить (другое дело, что они мне не нужны). В Windows и вовсе всё работает без проблем - массив сертификатов получаю, шифрование успешно. Пробовал и тестовый *.pfx импортировать из Windows - не без проблем, но с учётом рекомендаций ( ссылка) добавить удалось. Результат аналогичный: массив пуст. Подскажите, пожалуйста, где я ошибся? Как добавить сертификаты в персональное хранилище таким образом, чтобы 1С увидела сертификаты? Здравствуйте. Код вызываете под тем же пользователем, что и устанавливаете личный сертификат? Или, возможно, в Вашем коде идет обращение к хранилищу компьютера, а не пользователя? Благодарю за ответ. В качестве проверки гипотезы добавил сертификаты в хранилище машины. Пусто. А код действительно вызывается из-под другого пользователя - забыл про то, что там сервисный пользователь usr1cv8 под 1С-шные процессы забит. Буду править, спасибо большое за помощь. Цитата:Так в коде?
Цитата: ТипКП=81
МенеджерКриптографии = Новый МенеджерКриптографии(ИмяКП, "", ТипКП); ХранилищеСертификатов = МенеджерКриптографии.ПолучитьХранилищеСертификатов( ТипХранилищаСертификатовКриптографии.ПерсональныеСертификаты, РасположениеХранилищаСертификатовКриптографии.ДанныеПользователяОС); Не совсем - не указал пользователя, под которым выполняется код (нет РасположениеХранилищаСертификатовКриптографии.ДанныеПользователяОС). За указание спасибо.
|