Страницы: 1
RSS
Ошибка при получении свойства сертификата
 

Коллеги, здравствуйте. Ситуация такая – когда пытаюсь подписать документы в 1С на клиенте ошибок не возникает, все подписывается и проверяется, а вот при попытке выполнения такой операции на сервере выдает ошибку «Ошибка при получении свойства сертификата (0x00000000)».

С чем это может быть связано? Лицензия серверная, на сервере также установлен сервер 1С 8.3.14.1630. Сервер 1С запускается под учетной записью.

 
Цитата
horap написал:
Коллеги, здравствуйте. Ситуация такая – когда пытаюсь подписать документы в 1С на клиенте ошибок не возникает, все подписывается и проверяется, а вот при попытке выполнения такой операции на сервере выдает ошибку «Ошибка при получении свойства сертификата (0x00000000)».  С чем это может быть связано? Лицензия серверная, на сервере также установлен сервер 1С 8.3.14.1630. Сервер 1С запускается под учетной записью.

Цепочка сертификата в порядке? Корневые/промежуточные сертификаты УЦ желательно ставить в хранилище компьютера, чтобы проверка цепочки не зависела от того от имени какого пользователя запущен процесс. Имя хранилища тоже должно быть правильное: конечный сертификат в личные, промежуточный в промежуточные, корневой в доверенные корневые, что бы не было сертификатов УЦ в личных или сертификата корневого в промежуточных.

У нас 1С запускается под отдельной учетной записью и для этой записи запрещен интерактивный вход, то есть вот так просто нельзя под ней зайти и установить сертификат. Если запускается под другим пользователем, то сертификат вероятно должен быть установлен для того пользователя, так как сертификаты в хранилище одного пользователя не видят другие пользователи. Аналогично с контейнерами в реестре - они не видны другим пользователям. Напротив, контейнеры на флешке, токене, несистемном разделе - видны (всем пользователям) и в режиме пользователя и в режиме компьютера. Если используется кластер, то еще и потребуется установить на каждый сервер кластера.

 
Цитата
Karina написал:
Цитата
horap написал:
Коллеги, здравствуйте. Ситуация такая – когда пытаюсь подписать документы в 1С на клиенте ошибок не возникает, все подписывается и проверяется, а вот при попытке выполнения такой операции на сервере выдает ошибку «Ошибка при получении свойства сертификата (0x00000000)».  С чем это может быть связано? Лицензия серверная, на сервере также установлен сервер 1С 8.3.14.1630. Сервер 1С запускается под учетной записью.
 Цепочка сертификата в порядке? Корневые/промежуточные сертификаты УЦ желательно ставить в хранилище компьютера, чтобы проверка цепочки не зависела от того от имени какого пользователя запущен процесс. Имя хранилища тоже должно быть правильное: конечный сертификат в личные, промежуточный в промежуточные, корневой в доверенные корневые, что бы не было сертификатов УЦ в личных или сертификата корневого в промежуточных.  У нас 1С запускается под отдельной учетной записью и для этой записи запрещен интерактивный вход, то есть вот так просто нельзя под ней зайти и установить сертификат. Если запускается под другим пользователем, то сертификат вероятно должен быть установлен для того пользователя, так как сертификаты в хранилище одного пользователя не видят другие пользователи. Аналогично с контейнерами в реестре - они не видны другим пользователям. Напротив, контейнеры на флешке, токене, несистемном разделе - видны (всем пользователям) и в режиме пользователя и в режиме компьютера. Если используется кластер, то еще и потребуется установить на каждый сервер кластера.

Слушайте, если подписание 1С запускается в службе, нужен компонент Криптопровайдер уровня ОС. Служба КриптоПро по хранению ключей вообще как бы должна работать на сервере. Также на сервере должен быть установлен закрытый ключ как для локальной машины, так и для пользователя, под которым работает служба 1С сервера.

Если запускается от LocalSystem или виртуальной учетной записи службы, то вообще имеет смысл использовать хранилище компьютера для сертификата и не хранить контейнер в реестре, не забудьте дать права на контейнер для этой учетной записи (как в хранилище, так и доступ к папке на носителе или доступ к токену).

Виртуальных учетных записей служб нет в поиске пользователей, их нужно вводить вручную. Кто-то жаловался, что у него с виртуальными учетными записями не вышло, но лично я не проверял.

 

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

Вообще ошибка при получении свойства сертификата (0x00000000) - это проявление ошибки отсутствия связи сертификата в Личном списке сертификатов пользователя ОС с контейнером закрытого ключа.

Ну и чтобы определить под каким пользователем ОС (на каком компьютере), необходимо наличие связи закрытого ключа с открытой частью сертификата, требуется узнать режим запуска 1С.

 
Цитата
Karina написал:
Можно еще в менеджере сертификатов у закрытого ключа для локальной машины дать доступ пользователю, под которым будет выполняться подписание. Сделайте, чтобы сервер 1С работал под доменным пользователем, которому и дали права на работу с закрытым ключом локальной машины. Должно после этого заработать.  Вообще ошибка при получении свойства сертификата (0x00000000) - это проявление ошибки отсутствия связи сертификата в Личном списке сертификатов пользователя ОС с контейнером закрытого ключа.  Ну и чтобы определить под каким пользователем ОС (на каком компьютере), необходимо наличие связи закрытого ключа с открытой частью сертификата, требуется узнать режим запуска 1С.

Кстати, да. Если база файловая и запускается через тонкий клиент на том же компьютере, то наличие связи надо проверять для пользователя ОС, под которым запускается сеанс 1С на этом компьютере (без повышения прав, т.е. без «запуск от имени администратора»).

Если файловая ИБ запускается через браузер, т.е. используется web-сервер (в том числе на одном и том же компьютере) и пользователь планирует работать с локальной подписью (т.е. сертификат будет доступен только одному пользователю и только на одном компьютере) - то наличие связи надо проверять на этом компьютере для пользователя, под которым запущен браузер, без повышения прав. В этом случае ошибки в проверках на сервере проблемой не являются.

Если база клиент-серверная и проверяется подпись на сервере, то наличие связи надо проверять для пользователя ОС, под которым запущен сервер 1С без повышения прав (если используется web-сервер, то все равно проверки выполнять для пользователя ОС, под которым запущен сервер 1С). В этом случае ошибка в проверке подписи на клиенте проблемой не является.

Ну и все в таком духе, так что выясняйте, в каком из режимов происходит запуск 1С при возникновении ошибки, а также в какой проверке возникает эта ошибка (проверка на сервере или на клиенте).

 
Цитата
Борис Романов написал:
Цитата
Karina написал:
Можно еще в менеджере сертификатов у закрытого ключа для локальной машины дать доступ пользователю, под которым будет выполняться подписание. Сделайте, чтобы сервер 1С работал под доменным пользователем, которому и дали права на работу с закрытым ключом локальной машины. Должно после этого заработать.  Вообще ошибка при получении свойства сертификата (0x00000000) - это проявление ошибки отсутствия связи сертификата в Личном списке сертификатов пользователя ОС с контейнером закрытого ключа.  Ну и чтобы определить под каким пользователем ОС (на каком компьютере), необходимо наличие связи закрытого ключа с открытой частью сертификата, требуется узнать режим запуска 1С.
 Кстати, да. Если база файловая и запускается через тонкий клиент на том же компьютере, то наличие связи надо проверять для пользователя ОС, под которым запускается сеанс 1С на этом компьютере (без повышения прав, т.е. без «запуск от имени администратора»).   Если файловая ИБ запускается через браузер, т.е. используется web-сервер (в том числе на одном и том же компьютере) и пользователь планирует работать с локальной подписью (т.е. сертификат будет доступен только одному пользователю и только на одном компьютере) - то наличие связи надо проверять на этом компьютере для пользователя, под которым запущен браузер, без повышения прав. В этом случае ошибки в проверках на сервере проблемой не являются.  Если база клиент-серверная и проверяется подпись на сервере, то наличие связи надо проверять для пользователя ОС, под которым запущен сервер 1С без повышения прав (если используется web-сервер, то все равно проверки выполнять для пользователя ОС, под которым запущен сервер 1С). В этом случае ошибка в проверке подписи на клиенте проблемой не является.  Ну и все в таком духе, так что выясняйте, в каком из режимов происходит запуск 1С при возникновении ошибки, а также в какой проверке возникает эта ошибка (проверка на сервере или на клиенте).

А вообще когда такая ошибка возникает нужно перейти по гиперссылке «Установить сертификат в контейнер» (она находится в окне проверки сертификата, напротив пунктов «Подписание данных» и/или «Расшифровка данных»).

В открывшемся окне автоматически определится контейнер закрытого ключа, который соответствует выбранному сертификату. Обратите внимание, что сертификату должен соответствовать один контейнер закрытого ключа. Требуется нажать «Установить». Ну и потом сертификат будет успешно установлен в контейнер. Проблема решена.

А, еще момент. Если криптосредство (КриптоПро, VipNet) не запускается без повышения прав в сеансе пользователя ОС, из-под которого выполняется запуск приложений 1С (запуск сервера 1С или web-сервера для файловой ИБ), рекомендуется выполнить переустановку криптосредства, чтобы оно было доступно в сеансе пользователя ОС, из-под которого выполняется запуск приложений 1С (и/или сервера/web-сервера).

Страницы: 1