Настройка сертификата шифрования и шифрование секретов в кластерах Windows
В этой статье описывается, как настроить сертификат шифрования и использовать его для шифрования секретов в кластерах Windows. Инструкции для кластеров Linux приведены в разделе Настройка сертификата шифрования и шифрование секретов в кластерах Linux.
В качестве безопасного расположения для хранения сертификатов здесь используется хранилище ключей Azure. С его помощью сертификаты также устанавливаются в кластеры Service Fabric в Azure. Если вы не выполняете развертывание в Azure, то использование хранилища ключей для управления секретами в приложениях Service Fabric не требуется. Однако использование секретов в приложении осуществляется без привязки к определенной облачной платформе, чтобы приложения могли быть развернуты в кластере, размещенном в любом месте.
Получение сертификата шифрования данных
Сертификат шифрования данных используются исключительно для шифрования и расшифровки параметров в файле Settings.xml службы и переменных среды в ее файле ServiceManifest.xml. Он не применяется для аутентификации или подписывания зашифрованного текста. Сертификат должен отвечать приведенным ниже требованиям.
Сертификат должен содержать закрытый ключ.
Сертификат должен быть создан для обмена ключами, которые можно экспортировать в файл обмена личной информацией (PFX-файл).
Использование ключа сертификата должно включать шифрование данных (10) и не должно включать аутентификацию сервера или клиента.
Например, при создании самозаверяющего сертификата с помощью PowerShell для флага
KeyUsage
необходимо задать значениеDataEncipherment
:New-SelfSignedCertificate -Type DocumentEncryptionCert -KeyUsage DataEncipherment -Subject mydataenciphermentcert -Provider 'Microsoft Enhanced Cryptographic Provider v1.0'
Установка сертификата в кластере
Этот сертификат должен быть установлен на каждом узле в кластере. Инструкции по созданию и настройке кластера с помощью Azure Resource Manager см. в этой статье.
Шифрование секретов приложений
Для шифрования секрета используется следующая команда PowerShell. Эта команда шифрует только значение; она не подписывает зашифрованный текст. Чтобы создать зашифрованные данные для значений секретов, необходимо использовать тот же сертификат шифрования, установленный в кластере.
Invoke-ServiceFabricEncryptText -CertStore -CertThumbprint "<thumbprint>" -Text "mysecret" -StoreLocation CurrentUser -StoreName My
Результирующая строка в кодировке Base-64 содержит как зашифрованные данные секрета, так и сведения о сертификате, с помощью которого выполнено шифрование секрета.
Следующие шаги
Узнайте, как указать зашифрованные секреты в приложении.