Для обеспечения безопасности реквизиты подключений в некоторых конфигурационных файлах автоматически шифруются конфигуратором, поэтому настройку рекомендуется выполнять с его помощью. Например, конфигуратор используется для настройки сервера веб-доступа.
Если компоненты и службы настраиваются вручную через конфигурационный файл, например, при настройке службы DISI, реквизиты подключения необходимо зашифровать вручную.
Для ручного шифрования конфигурационных файлов рекомендуется использовать провайдеры шифрования:
• | DpapiProtectedConfigurationProvider. Использует API защиты данных Windows (DPAPI) для шифрования и дешифрования данных; |
• | RsaProtectedConfigurationProvider. Использует алгоритм шифрования RSA для шифрования и дешифрования данных. |
Рекомендуется использовать провайдера RsaProtectedConfigurationProvider:
• | если планируется использовать один зашифрованный файл конфигурации на нескольких серверах, например веб-фермах. Он позволяет экспортировать ключи шифрования и импортировать их на другой сервер; |
• | для резервирования ключей на случай непредвиденной поломки сервера. |
Класс RsaProtectedConfigurationProvider может использовать контейнеры ключей RSA уровня компьютера или уровня пользователя. В Microsoft Windows контейнеры ключей уровня компьютера доступны всем пользователям, а контейнер ключа уровня пользователя доступен лишь создавшему (или импортировавшему) его пользователю.
Для защиты разделов конфигурации рекомендуется использовать контейнеры ключей RSA уровня компьютера. При создании контейнера ключа RSA для защиты сведений о конфигурации одного или нескольких приложений рекомендуется ограничивать доступ к контейнеру ключа RSA уровня компьютера при помощи утилиты Aspnet_regiis.exe.
Утилита расположена в одной из папок:
• | %systemroot%\Microsoft.NET\Framework\Номер_версии для 32-битной системы; |
• | %systemroot%\Microsoft.NET\Framework64\Номер_версии для 64-битной системы. |
Создание и удаление контейнера
Чтобы создать контейнер ключей шифрования, используйте ключ –pc <Имя контейнера>. Рекомендуется также включить возможность экспорта закрытого ключа при помощи ключа –exp. Пример: aspnet_regiis.exe -pc "NpoComputerWebServices" –exp Где NpoComputerWebServices – имя контейнера. Чтобы удалить контейнер, используйте ключ –pz.
|
Настройка прав на чтение контейнера
По умолчанию контейнеры ключей RSA надежно защищены списками управления доступом NTFS (ACL) на том сервере, где они установлены. Таким образом повышается безопасность шифрованных данных путем ограничения круга лиц, имеющих доступ к ключам шифрования. Чтобы процесс процесса приложения ASP.NET мог читать контейнер ключей RSA, должна быть выполнена авторизация удостоверения этого процесса. Чтобы назначить права на чтение контейнера, используйте ключ –pa <Имя контейнера> <Имя пользователя>. Пример: aspnet_regiis -pa "NpoComputerWebServices" "LocalSystem" Где:
Чтобы удалить права на чтение, используйте ключ –pr.
|
Чтобы экспортировать ключи в XML-файл, используйте ключ –px <Имя контейнера> <Имя файла>. Можно использовать XML-файл в качестве резервной копии для контейнера ключей RSA или импортировать контейнер ключей RSA на другой сервер. Чтобы дешифровать зашифрованные данные, требуется область закрытого ключа контейнера ключей RSA. Чтобы использовать экспортированный контейнер ключей на другом сервере, необходимо импортировать также закрытый ключ. Можно включить закрытый ключ в XML-файл путем указания ключа –pri при экспорте ключа. Пример: aspnet_regiis.exe -px "NpoComputerWebServices" "NpoComputerWebServicesKeys.xml" –pri Примечание В целях безопасности после экспорта контейнера ключей RSA в XML-файл необходимо скопировать данный XML-файл в расположение вне сервера и удалить этот файл с сервера. Таким образом, существенно снизится риск того, что злоумышленники получат доступ к контейнеру ключей RSA и смогут дешифровать файл web.config, шифрованный с помощью контейнера ключей RSA. Чтобы импортировать ключи из XML-файла, используйте ключ –pi.
|
Шифрование и дешифрование файлов
Чтобы зашифровать содержимое файлов, используйте ключ –pe <Имя элемента конфигурации, который нужно зашифровать>. Для идентификации приложения используйте ключ –app <Имя приложения> или –site <ИД сайта в метабазе IIS>. Также можно использовать ключ –pef <Имя элемента конфигурации, который нужно зашифровать> <Путь к папке, где расположен web.config>. Выбор провайдера шифрования осуществляется через параметр –prov <Имя провайдера>. Пример: aspnet_regiis.exe -pef "connectionStrings" "C:\inetpub\wwwroot\WebServices" -prov "NpoComputerRsaProtectedConfigurationProvider" Чтобы дешифровать содержимое файлов, используйте ключ –pd (–pdf) без указания провайдера. Пример: aspnet_regiis.exe -pdf "connectionStrings" "C:\inetpub\wwwroot\WebServices" Примечание Утилита Aspner_rediis.exe работает только с файлом web.config. Чтобы зашифровать другой файл, его нужно переименовать в web.config, а после шифрования вернуть исходное имя. Например, таким образом шифруется конфигурационный файл службы интеграции с системами обмена DISIService.exe.config.
|
© Компания DIRECTUM, 2018 | Сообщество пользователей DIRECTUM |