Шифрование настроек в Сервисе настроек
В Сервис настроек сохраняются конфиденциальные данные системы Docsvision, например, пароли, ключи, строки подключения и т.д. Так как эти данные являются чувствительными, их рекомендуется шифровать. Данный раздел описывает шаги, необходимые для шифрования настроек, хранимых в Сервисе.
| Настройка шифрования поддерживается в Сервисе настроек, начиная с версии 6.1, сборка 6.1.234 и выше. |
Настройки шифрования указываются в конфигурационном файле Сервиса настроек, в параметре EncryptionCertificate. Требуется использовать самоподписанный сертификат, поддерживающий шифрование/дешифрование данных. Далее приводится инструкция по созданию сертификата и конфигурации Сервиса настроек.
В конфигурационном файле по умолчанию указан параметр EncryptionCertificate, однако шифрование осуществляться не будет, пока не указан один из подчинённых параметров: Path или
Thumbprint. При необходимости создайте параметры самостоятельно.
|
Создание самоподписанного сертификата в Linux
-
Установите пакет
opensslкомандой:-
Astra Linux / Альт Сервер / Ubuntu
-
РЕД ОС
$ sudo apt-get install openssl
$ sudo dnf install openssl
-
-
Создайте самоподписанный сертификат SSL.
$ openssl req -x509 -newkey rsa:2048 -keyout docsvision.key -nodes -out docsvision.crt -subj "/CN=example.company.com" -addext subjectAltName=DNS:example.company.com (1)1 Замените docsvision.keyиdocsvision.crtна собственные названия для ключа и сертификата, вместо/CN=example.company.comукажите адрес сервера Docsvision на Linux, например,/CN=help.docsvision.com. -
Сгенерируйте и сохраните сертификат
docsvision.pfx:$ openssl pkcs12 -inkey docsvision.key -in docsvision.crt -export -out docsvision.pfx (1)Пароль на сертификат указывать не нужно.
Создание самоподписанного сертификата в Windows
-
В ОС Windows самоподписанный сертификат можно сгенерировать следующей командой в PowerShell:
New-SelfSignedCertificate -CertStoreLocation cert:\currentuser\my -DnsName "example.company.com" -FriendlyName "Docsvision Site" -KeyUsage "DigitalSignature", "KeyEncipherment" -KeyAlgorithm RSA -KeyLength 2048 -NotAfter $([datetime]::now.AddDays(90))Расшифровка команды:-
-CertStoreLocation cert:\currentuser\my— место установки сертификата -
-DnsName "example.company.com"— адрес сайта -
-FriendlyName "Docsvision Site"— название сайта -
-KeyUsage "DigitalSignature", "KeyEncipherment"— обязательный для расшифровки параметр. Необходимо либо не указывать ограничения на использование сертификата (удалятьKeyUsage), либо добавлятьKeyEncipherment. -
-KeyAlgorithm RSA— алгоритм шифрования -
-KeyLength 2048— длина ключа. -
-NotAfter $([datetime]::now.AddDays(90))— срок действия сертификата (90 дней). Рекомендуется устанавливать от 90 до 360 дней.
-
-
Сертификат появится в хранилище Личное среди сертификатов пользователя, из которого его можно экспортировать в файл. Выберите сертификат из списка двойным нажатием мыши, откройте вкладку "Состав".
Рисунок 1. Просмотр сертификата на вкладке "Состав" -
Экспортируйте сертификат, нажав кнопку Копировать в файл, и проследуйте инструкциям мастера экспорта сертификатов.
Указание сертификата в конфигурационном файле
-
В конфигурационном файле по адресу
/usr/lib/docsvision/settingsservice/appsettings.jsonдля Linux иC:\Program Files\Docsvision\SettingsService\appsettings.jsonдля Windows укажите путь к сертификату c публичной частью в параметреPathили отпечаток сертификата в параметреThumbprint. Использование отпечатка допустимо, когда сертификат установлен в операционной системе.-
Указание пути к сертификату
-
Указание отпечатка сертификата
Фрагмент конфигурационного файла с указанием пути к сертификату:{ "StorageOptions": { "Providers": [ { ... } ] }, "EncryptionCertificate: { "Path": "/folder/certificate.crt" (1) } }1 Path— Путь к файлу сертификата для шифрования чувствительных данных в Сервисе настроек. Пользователь, от имени которого запускается Сервис настроек, должен обладать правами на чтение файла сертификата.-
Если путь к сертификату не указан, укажите отпечаток сертификата. Использование отпечатка допустимо в случаях, например если сертификат установлен в операционной системе.
Фрагмент конфигурационного файла с указанием отпечатка сертификата:{ "ApiKey": "SettingsServiceApiKey", "StorageOptions": { "Providers": [ { ... } ] }, "EncryptionCertificate: { "Thumbprint": "certificate-thumbprint" (1) } }1 Thumbprint— альтернативный вариант с указанием отпечатка сертификата.В ОС Linux поддерживается только сертификат в формате .pfx.
-
-
После редактирования конфигурационного файла сохраните изменения и перезапустите службу Сервис настроек.
Поиск сертификата по отпечатку будет выполняться в хранилище "Мои сертификаты" от имени пользователя, под которым запускается Сервис настроек (по умолчанию — системный пользователь Docsvision в Linux и Network Service в Windows). Если первый поиск не даст результатов, для Windows предусмотрен также поиск сертификата в хранилище "Локальный компьютер".
Установка сертификата с приватной частью
Следующим шагом необходимо установить приватную часть сертификата в хранилище сертификатов на всех серверах, данные которых шифруются, также включая сервер Консоли управления Docsvision.
Приватная часть сертификата предназначается для чтения (расшифровки) зашифрованных настроек.
-
Полученный сертификат в формате
.pfxнеобходимо скопировать в каталог~/.dotnet/corefx/cryptography/x509stores/my. Если каталог отсутствует, создайте его самостоятельно.Если сервис, дешифрующий настройки, запущен от имени пользователя иного, чем ROOT, например от имени учётной записи Docsvision, сертификат требуется размещать по пути
/home/docsvision/.dotnet/corefx/cryptography/x509stores/my.В ОС Windows сертификат необходимо установить в хранилище "Личное" на уровне "Локальный компьютер". Затем необходимо предоставить права на приватную часть сертификата для УЗ, от имени которой запускается сервис, дешифрующий настройки, (по умолчанию Network Service) в программе "Сертификаты", через управление закрытыми ключами (вызывается нажатием правой кнопки на сертификате).
Пользователь, от имени которого запускается сервис, дешифрующий настройки, должен обладать правами на чтение и выполнение файлов в каталоге, а также правами на чтение сертификата.
Изменение и восстановление зашифрованных настроек
Чтобы повторно зашифровать или снять шифрование, потребуется заново указать зашифрованные настройки, а именно: Настройки соединений Docsvision, Настройки соединения с Почтовым сервером, Настройки Службы фоновых операций.
Если настройка EncryptionCertificate удалена, прочитать зашифрованные свойства будет невозможно до тех пор, пока удалённый сертификат не будет повторно указан в конфигурационном файле.
Если в соединении есть настройка, значение которой не удалось расшифровать, под ней будет выведено сообщение об ошибке. В случае возникновения ошибки чтения/расшифровки существующие:
-
Настройки соединений Docsvision — отображаются ранее созданные подключения. Добавленные раннее подключения могут быть изменены или удалены, могут быть добавлены новые подключения.
-
Настройки соединения с Почтовым сервером — отображаются ранее созданные подключения. Добавленные раннее подключения могут быть изменены или удалены, могут быть добавлены новые подключения.
-
Настройки Службы фоновых операций — отображаются ранее зарегистрированные экземпляры Службы фоновых операций и добавленные процессы. Могут быть добавлены новые процессы.
-
Если при запуске компонента не удается расшифровать хотя бы одну необходимую ему настройку, служба компонента не запускается, а причина записывается в журнал.
-
Настройки, которые не удалось расшифровать, можно заново указать через Консоль управления даже если служба настраиваемого компонента не запущена.
-
После восстановления всех недоступных для чтения настроек необходимо перезапустить службу соответствующего компонента.