ЦВД
10 апреля 2024 г. 5 мин

Как обновить сертификаты ЭП из локального ЦС в Directum RX

Обновление сертификатов электронной подписи (ЭП) — регулярная задача при сопровождении Directum RX. Особенно остро она встаёт, когда сертификаты выдаются локальным центром сертификации (ЦС), а не внешним УЦ.
Как обновить сертификаты ЭП из локального ЦС в Directum RX

В этом материале — наш опыт автоматизированного обновления сертификатов из локального ЦС для сотен сотрудников, включая решение двух самых коварных проблем:

  • Невидимые символы при копировании отпечатков.
  • Несовместимость SHA256 с устаревшими серверами.

Задача: массовое обновление сертификатов без ручного ввода

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

Ручной ввод сертификатов в Directum RX — трудоёмкий и подверженный ошибкам процесс. Нам нужно было:

  • Автоматизировать импорт сертификатов.
  • Избежать ошибок при настройке сервисов.
  • Обеспечить совместимость с серверами на старых ОС.

Шаг 1: Получение сертификатов из локального ЦС

Сертификаты можно получить несколькими способами:

  • Через веб-интерфейс ЦС.
  • Через оснастку certmgr.msc (для личных сертификатов).
  • Программно — с помощью PowerShell.

Рекомендуемый способ — PowerShell:

# Получить сертификат по отпечатку
$cert = Get-ChildItem -Path Cert:\CurrentUser\My | Where-Object { $_.Thumbprint -eq "A1B2C3D4..." }
# Экспортировать в файл .cer (только открытый ключ)
Export-Certificate -Cert $cert -FilePath "C:\certs\user.cer"
# Или в .pfx (с закрытым ключом, если разрешён экспорт)
Export-PfxCertificate -Cert $cert -FilePath "C:\certs\user.pfx" -Password (ConvertTo-SecureString -String "password" -Force)

Шаг 2: Автоматический импорт в Directum RX

Для массового обновления мы разработали скрипт на C#, который импортирует сертификаты в Directum RX через API.

var newCert = Sungero.CoreEntities.Certificates.Create();

newCert.Owner = Sungero.CoreEntities.Users.As(employee);

newCert.X509Certificate = certificateData; // массив байт .cer или .pfx

newCert.Issuer = certificateInfo.Issuer;

newCert.Subject = certificateInfo.Subject;

newCert.Thumbprint = certificateInfo.Thumbprint;

newCert.NotBefore = certificateInfo.NotBefore.FromUtcTime();

newCert.NotAfter = certificateInfo.NotAfter.FromUtcTime();

newCert.Description = "Обновлён из локального ЦС";

newCert.Save();

Преимущества:

  • Не нужно заходить под каждым пользователем.
  • Все сертификаты обновляются централизованно.
  • Можно запланировать выполнение перед окончанием срока действия.

Проблема 1: Невидимые символы в отпечатке сертификата

Одна из самых коварных ошибок — невидимые символы, которые копируются вместе с отпечатком при копировании из оснастки certmgr.msc.

Симптомы:

  • Сервисы не запускаются.
  • Ошибка: «Сертификат не найден», хотя отпечаток вроде бы верный.

Решение:

  • Скопируйте отпечаток в Блокнот.
  • Удалите все пробелы и лишние символы.
  • Проверьте длину — должно быть 40 символов (HEX).
  • Используйте чистую строку в конфигурационных файлах (appsettings.json, web.config).

Совет: Напишите простой валидатор:

bool IsValidThumbprint(string thumbprint)

{

return !string.IsNullOrWhiteSpace(thumbprint)

&& thumbprint.Length == 40

&& System.Text.RegularExpressions.Regex.IsMatch(thumbprint, @"^[A-F0-9]{40}$");

}

Проблема 2: Ошибка SHA256 на старых серверах

Новые сертификаты используют алгоритм хеширования SHA256, но на серверах с Windows Server 2012 R2 и ниже он не поддерживается по умолчанию.

Симптомы:

  • Ошибка при установке .pfx-файла.
  • Сервисы подписания не запускаются.
  • В логах: «The hash algorithm is not supported».

Решение:

  • Установите обновление KB4474419.
  • Перезагрузите сервер.
  • Только после этого импортируйте сертификат.

Альтернатива (если обновление нельзя установить):

  • Импортируйте сертификат на современной ОС (Windows 10/11, Server 2016+).
  • Экспортируйте его обратно с шифрованием 3DES-SHA1:

Export-PfxCertificate -Cert $cert -FilePath "C:\certs\legacy.pfx" -Password $pwd -Csp "Microsoft Enhanced RSA and AES Cryptographic Provider" -KeyExportPolicy Exportable

При экспорте система спросит, какое шифрование использовать — выберите 3DES-SHA1.

Важно: Не создавайте .pfx с SHA256, если он будет использоваться на старых серверах.

Шаг 3: Обновление отпечатков в сервисах

После обновления сертификатов необходимо обновить отпечатки в конфигурационных файлах всех сервисов:

  • MessageBroker.exe.config
  • SignatureService.exe.config
  • StorageService.exe.config
  • appsettings.json в Web-API

Что проверить:

  • Все отпечатки очищены от невидимых символов.
  • Используется https в адресах.
  • Сертификат доверенный и установлен в хранилище Local Machine.

Итог: чек-лист обновления сертификатов ЭП

Получены новые сертификаты из локального ЦС

  • Отпечатки очищены от невидимых символов
  • На старых серверах установлено KB4474419
  • При необходимости — сертификаты экспортированы в 3DES-SHA1
  • Сертификаты импортированы в Directum RX (вручную или через скрипт)
  • Отпечатки обновлены во всех сервисах
  • Сервисы перезапущены и проверены на работоспособность

Заключение

Обновление сертификатов ЭП — процесс, который можно и нужно автоматизировать. Особенно при работе с локальным ЦС и большим количеством пользователей.

Ключевые моменты успеха:

  • Внимание к деталям — даже один невидимый символ может сломать систему.
  • Совместимость с инфраструктурой — помните о старых серверах.
  • Централизованное управление — используйте скрипты и API Directum RX.

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

Подбор решения за 60 секунд
Ответьте на 4 коротких вопроса, и мы бесплатно подберём для вас оптимальное решение на базе Directum RX