Почему возникает ошибка при проверке сертификата на сервере 1С и как ее исправить?

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При работе с системой 1С:Предприятие и КриптоПро CSP пользователи часто сталкиваются с ошибками при проверке сертификатов на сервере. Эти ошибки могут проявляться по-разному, но чаще всего они указывают на то, что сервер 1С не может найти или использовать установленный сертификат для выполнения криптографических операций, таких как проверка электронной подписи (удобно через автоматизация подписания кадровых и бухгалтерских документов в 1С) или шифрование. Рассмотрим эту проблему подробно и предложим комплексные решения.

Типичная ситуация, с которой мы часто сталкиваемся: сертификат успешно установлен в хранилище "Личные" для текущего пользователя, все тесты в КриптоПро CSP проходят без ошибок, но при попытке использовать его в 1С на сервере система выдает ошибку о невозможности проверки сертификата или его отсутствии. Эта проблема имеет множество причин, связанных с особенностями работы серверных служб, управлением сертификатами и правами доступа в операционной системе.

Анализируем причину проблемы: Сертификат не виден на сервере 1С

Прежде чем переходить к конкретным шагам, давайте выясним, почему сертификат, который, казалось бы, установлен корректно, может быть "невидим" для сервера 1С. Ключевая особенность заключается в том, что служба агента сервера 1С:Предприятие работает под определенной учетной записью операционной системы. Эта учетная запись может отличаться от той, под которой вы вошли в систему и установили сертификат. Часто служба работает под системными учетными записями, такими как Local System, Network Service, или под специальным пользователем, например, USR1CV8.

Сертификаты, установленные в хранилище "Личные" (CurrentUser\My), по умолчанию доступны только для интерактивного пользователя, который их установил. Если служба сервера 1С работает от имени другой учетной записи, она просто не увидит сертификат, установленный для вашего личного профиля. Даже если ваш пользователь обладает правами администратора, это не гарантирует доступности сертификата для системной службы. Проанализируем, какие шаги необходимо предпринять для устранения этой проблемы.

Шаг 1: Правильная установка сертификата и привязка к контейнеру закрытого ключа

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

  1. Определяем учетную запись службы сервера 1С.

    Для начала нам необходимо точно знать, от имени какой учетной записи запускается служба "Агент сервера 1С:Предприятие".

    1. Откройте консоль управления службами Windows. Вы можете сделать это, нажав Win + R и введя services.msc.
    2. Найдите службу "Агент сервера 1С:Предприятие" (или похожую, например, 1C:Enterprise 8.3 Server Agent (x86-64)).
    3. Дважды кликните по ней, перейдите на вкладку "Вход в систему". Здесь вы увидите, под какой учетной записью запускается служба. Это может быть:
      • Локальная система (Local System account)
      • Сетевая служба (Network Service account)
      • Специальный пользователь, например, USR1CV8 или другой доменный/локальный пользователь.

    Запомним эту учетную запись, она будет нужна нам далее.

  2. Устанавливаем сертификат в подходящее хранилище.

    В зависимости от учетной записи службы, мы выбираем стратегию установки:

    1. Для Local System или Network Service: установка в хранилище "Локальный компьютер".

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

      Для этого:

      • Нажмите Win + R и введите certlm.msc, чтобы открыть оснастку "Сертификаты для локального компьютера".
      • Разверните "Сертификаты (Локальный компьютер)" -> "Личные" -> "Сертификаты".
      • В контекстном меню (правая кнопка мыши) выберите "Все задачи" -> "Импорт".
      • Следуйте указаниям мастера импорта сертификатов. Укажите файл сертификата (обычно .pfx или .cer) и, если требуется, пароль к закрытому ключу. Обязательно выберите опцию "Поместить все сертификаты в следующее хранилище: Личные" и подтвердите, что импорт производится для "Локального компьютера".
    2. Для специализированного пользователя (например, USR1CV8): установка от имени этого пользователя.

      Если служба запускается под конкретным пользователем, например, USR1CV8, идеальным вариантом будет войти в систему под этой учетной записью (если это возможно) и установить сертификат в ее "Личные" хранилище (certmgr.msc). Если прямой вход невозможен, или это сложно, установка в хранилище "Локальный компьютер" (как описано выше) с последующей настройкой прав доступа к закрытому ключу (см. Шаг 2) также является рабочим решением.

  3. Привязываем сертификат к контейнеру закрытого ключа через КриптоПро CSP.

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

    1. Откройте "КриптоПро CSP" (обычно через "Панель управления" или поиск).
    2. Перейдите на вкладку "Сервис".
    3. Нажмите кнопку "Установить личный сертификат".
    4. Мастер установки предложит выбрать файл сертификата. Выберите тот сертификат, который вы только что импортировали в хранилище (или экспортированный из него .cer файл).
    5. Затем мастер попросит указать контейнер закрытого ключа, с которым связан этот сертификат. Выберите нужный контейнер из списка.
    6. Следуйте дальнейшим инструкциям мастера. Убедитесь, что сертификат успешно установлен.

    Этот шаг критически важен, так как без него КриптоПро CSP не сможет использовать закрытый ключ, даже если сертификат виден в хранилище.

Шаг 2: Настройка прав доступа к закрытому ключу для службы сервера 1С

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

  1. Используем КриптоПро CSP для настройки доступа к контейнеру.

    Это основной способ управления правами для контейнеров КриптоПро.

    1. Откройте "КриптоПро CSP" и перейдите на вкладку "Сервис".
    2. Нажмите кнопку "Настроить контейнеры".
    3. В открывшемся списке выберите контейнер закрытого ключа, связанный с вашим сертификатом, и нажмите "Далее".
    4. В окне "Управление контейнером закрытого ключа" нажмите кнопку "Настроить доступ".
    5. В диалоговом окне "Разрешения для группы или пользователя" нажмите "Добавить".
    6. Введите имя учетной записи службы сервера 1С, которую мы определили ранее (например, NETWORK SERVICE, Локальная система или USR1CV8). Если это системная учетная запись, возможно, потребуется сначала нажать "Дополнительно" -> "Поиск" и выбрать ее из списка.
    7. После добавления учетной записи, убедитесь, что для нее установлены разрешения "Чтение" и "Полный доступ". Это гарантирует, что служба сможет использовать закрытый ключ.
    8. Подтвердите изменения, нажав "ОК" везде, где это требуется.
  2. Настройка прав через оснастку "Сертификаты" (для сертификатов "Локального компьютера").

    Если сертификат установлен в хранилище "Локальный компьютер", вы также можете настроить права доступа к закрытому ключу через оснастку.

    1. Откройте certlm.msc ("Сертификаты для локального компьютера").
    2. Разверните "Сертификаты (Локальный компьютер)" -> "Личные" -> "Сертификаты".
    3. Найдите ваш сертификат. Кликните по нему правой кнопкой мыши.
    4. Выберите "Все задачи" -> "Управление закрытыми ключами".
    5. В открывшемся окне "Разрешения" вы можете добавить учетную запись службы сервера 1С и предоставить ей необходимые права ("Чтение", "Полный доступ").

Шаг 3: Проверка цепочки сертификации и доступности списков отзыва (CRL)

Часто ошибки проверки сертификата, особенно фраза "Не удалось проверить сертификат в списке отозванных, т.к. соответствующий сервер в состоянии offline", указывают на проблемы с доверием к сертификату или невозможностью загрузить списки отзыва.

  1. Убеждаемся в полноте цепочки сертификации.

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

    1. Откройте свойства вашего личного сертификата (через certlm.msc или certmgr.msc).
    2. Перейдите на вкладку "Путь сертификации".
    3. Убедитесь, что вся цепочка сертификатов (ваш личный, промежуточные УЦ, корневой УЦ) отображается без ошибок и "красных крестиков". Все сертификаты в цепочке должны быть действительными.
    4. Если есть пропуски или ошибки, это означает, что отсутствуют промежуточные или корневые сертификаты. Их необходимо установить:
      • Промежуточные сертификаты: Устанавливаются в хранилище "Промежуточные центры сертификации" -> "Сертификаты" (для "Локального компьютера" или текущего пользователя в зависимости от ситуации).
      • Корневые сертификаты: Устанавливаются в хранилище "Доверенные корневые центры сертификации" -> "Сертификаты" (для "Локального компьютера" или текущего пользователя).
    5. Обычно эти сертификаты можно скачать с сайта удостоверяющего центра, выдавшего ваш сертификат.
  2. Проверяем доступность серверов со списками отзыва (CRL).

    Система должна иметь возможность загрузить актуальные списки отозванных сертификатов (CRL) или воспользоваться протоколом OCSP (Online Certificate Status Protocol) для проверки статуса отзыва сертификата. Если сервер 1С не имеет доступа к этим ресурсам, проверка будет невозможна.

    1. Определяем адреса CRL/OCSP. Откройте свойства вашего сертификата, перейдите на вкладку "Состав" и найдите поля "Точки распространения списков отзыва (CRL)" и "Доступ к информации о центре сертификации (AIA)". В них будут указаны URL-адреса, по которым система пытается получить информацию об отзыве.

    2. Проверяем сетевую доступность. Убедитесь, что сервер, на котором работает 1С, имеет доступ (через HTTP) к этим URL-адресам. Возможно, файрвол блокирует исходящие соединения, или сервер не имеет выхода в интернет. Проверьте настройки прокси-сервера, если он используется.

    3. Ручная установка CRL. Если доступ в интернет для сервера 1С ограничен и не может быть настроен, вы можете скачать файлы CRL (обычно имеют расширение .crl) вручную с сайта УЦ и установить их в систему. Для этого:

      • Кликните правой кнопкой мыши по скачанному .crl файлу и выберите "Установить CRL".
      • Мастер установки поможет поместить его в соответствующее хранилище "Промежуточные центры сертификации" -> "Списки отзыва".

    Убедитесь, что установленные CRL являются актуальными и их срок действия не истек.

Шаг 4: Совместимость криптографических алгоритмов и версия КриптоПро CSP

Как было упомянуто в обсуждении, актуальные криптографические стандарты меняются (например, переход от ГОСТ Р 34.11-94 к ГОСТ Р 34.11-2012). Важно, чтобы используемый сертификат и установленная версия КриптоПро CSP были совместимы.

  1. Уточняем алгоритм сертификата.

    Откройте свойства вашего сертификата, перейдите на вкладку "Состав". Найдите поле "Алгоритм подписи" или "Алгоритм открытого ключа". Там будет указан используемый ГОСТ-алгоритм (например, ГОСТ Р 34.11-2012 или ГОСТ Р 34.11-94).

  2. Проверяем версию КриптоПро CSP.

    Откройте "КриптоПро CSP", перейдите на вкладку "Общие". Здесь указана версия продукта. Для работы с современными алгоритмами ГОСТ Р 34.11-2012 обычно требуется "КриптоПро CSP 4.0" или "КриптоПро CSP 5.0" (R5) и выше.

    Если ваш сертификат использует более новый алгоритм, а версия КриптоПро CSP устарела и его не поддерживает, криптографические операции будут завершаться ошибкой. В этом случае необходимо обновить КриптоПро CSP до актуальной версии.

Шаг 5: Проверка настроек 1С и обновление конфигурации

Иногда сама конфигурация 1С или ее настройки могут быть причиной проблемы с видимостью или использованием сертификатов — для этого подойдёт формирование электронных перевозочных документов в 1С:Бухгалтерия.

  1. Настройки электронной подписи и шифрования в 1С — для этого есть автоматизация внутреннего электронного документооборота в БГУ.

    В некоторых конфигурациях 1С (например, 1С:Документооборот, 1С:Бухгалтерия с модулем ЭДО) существуют специальные настройки, определяющие, где должны выполняться криптографические операции – на клиенте или на сервере. Убедитесь, что для серверных операций включены соответствующие опции. Например, в настройках ЭДО (поможет автоматизация получения и архивации подписанных документов ЭДО) или электронных подписей проверьте наличие и активность пунктов типа "Создавать электронные подписи на сервере" или "Проверять электронные подписи на сервере".

  2. Обновление конфигурации 1С.

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

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

    1. Запустите базу 1С в режиме "Конфигуратор".
    2. В главном меню выберите "Конфигурация" -> "Обновить конфигурацию базы данных".
    3. Следуйте инструкциям мастера обновления. Вам может потребоваться указать файл обновления, полученный с портала 1С:ИТС или от партнера 1С.
    4. После обновления конфигурации, если требуется, обновите и платформу 1С:Предприятие до актуального релиза.

Шаг 6: Проверка лицензии КриптоПро CSP

Наконец, мы не должны забывать о банальной, но иногда встречающейся причине – истекшей или отсутствующей лицензии на "КриптоПро CSP". Без действующей лицензии криптографические функции будут заблокированы, что приведет к ошибкам проверки сертификата.

  1. Откройте "КриптоПро CSP".
  2. Перейдите на вкладку "Общие".
  3. В разделе "Лицензия" проверьте срок действия вашей лицензии. Если лицензия истекла или ее нет, необходимо приобрести и ввести новую лицензию.

Завершающие действия после внесения изменений

После выполнения любых изменений, будь то установка сертификатов, настройка прав доступа, обновление КриптоПро CSP или изменение настроек 1С, обязательно перезапустите службу агента сервера 1С:Предприятие. Это необходимо, чтобы служба загрузила новые настройки операционной системы и получила обновленные данные о сертификатах и правах доступа. Без перезапуска службы изменения могут не вступить в силу, и проблема останется.

Перезапуск службы 1С:Предприятия выполняется через консоль services.msc: найдите службу, кликните по ней правой кнопкой мыши и выберите "Перезапустить".

Следуя этим шагам, вы сможете диагностировать и устранить большинство проблем, связанных с проверкой сертификатов на сервере 1С с использованием КриптоПро CSP.

← На главную