Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Примечание.
Для кластеров Service Fabric, работающих в Azure, рекомендуется использовать управляемое удостоверение Service Fabric для подготовки сертификатов приложений из контейнера. Управляемое удостоверение обеспечивает изоляцию секретов и сертификатов на уровне обслуживания и позволяет подготовке сертификатов приложений быть частью рабочего процесса приложения, а не рабочего процесса инфраструктуры. Механизм CertificateRef будет признан устаревшим в будущем релизе.
Защитите свои службы контейнеров, указав сертификат. Service Fabric предоставляет для служб в контейнере механизм, который обеспечивает доступ к сертификату, установленному на узлах кластера Windows или Linux (версии 5.7 или выше). Сертификат должен быть установлен в хранилище сертификатов в разделе LocalMachine на всех узлах кластера. Закрытый ключ, соответствующий сертификату, должен быть доступен, доступен и экспортируемый в Windows. Сведения о сертификате предоставляются в манифесте ContainerHostPolicies
приложения под тегом, как показано в следующем фрагменте кода:
<ContainerHostPolicies CodePackageRef="NodeContainerService.Code">
<CertificateRef Name="MyCert1" X509StoreName="My" X509FindValue="[Thumbprint1]"/>
<CertificateRef Name="MyCert2" X509FindValue="[Thumbprint2]"/>
Для кластеров Windows при запуске приложения среда выполнения экспортирует каждый сертификат со ссылкой и соответствующий закрытый ключ в PFX-файл, защищенный случайным образом созданным паролем. PFX и файлы паролей соответственно доступны в контейнере с помощью следующих переменных среды:
- Certificates_ServicePackageName_CodePackageName_CertName_PFX
- Certificates_ServicePackageName_CodePackageName_CertName_Password
Для кластеров Linux сертификаты (PEM) копируются из хранилища, указанного параметром X509StoreName, в контейнер. Соответствующие переменные среды в Linux:
- Сертификаты_ServicePackageName_CodePackageName_CertName_PEM
- Certificates_ServicePackageName_CodePackageName_CertName_PrivateKey
Обратите внимание, что как PEM
файл, так и PrivateKey
сертификат содержат сертификат и незашифрованный закрытый ключ.
Кроме того, если у вас уже есть сертификаты в требуемой форме и хотите получить к нему доступ внутри контейнера, можно создать пакет данных внутри пакета приложения и указать следующее внутри манифеста приложения:
<ContainerHostPolicies CodePackageRef="NodeContainerService.Code">
<CertificateRef Name="MyCert1" DataPackageRef="[DataPackageName]" DataPackageVersion="[Version]" RelativePath="[Relative Path to certificate inside DataPackage]" Password="[password]" IsPasswordEncrypted="[true/false]"/>
Служба контейнеров или процесс отвечает за импорт файлов сертификатов в контейнер. Чтобы импортировать сертификат, можно использовать setupentrypoint.sh
скрипты или выполнить пользовательский код в процессе контейнера. Ниже приведен пример кода в C# для импорта PFX-файла:
string certificateFilePath = Environment.GetEnvironmentVariable("Certificates_MyServicePackage_NodeContainerService.Code_MyCert1_PFX");
string passwordFilePath = Environment.GetEnvironmentVariable("Certificates_MyServicePackage_NodeContainerService.Code_MyCert1_Password");
X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
string password = File.ReadAllLines(passwordFilePath, Encoding.Default)[0];
password = password.Replace("\0", string.Empty);
X509Certificate2 cert = new X509Certificate2(certificateFilePath, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.PersistKeySet);
store.Open(OpenFlags.ReadWrite);
store.Add(cert);
store.Close();
Этот PFX-файл сертификата можно использовать для аутентификации приложения или службы, а также для безопасного обмена данными с другими службами. По умолчанию файлы имеют доступ только к SYSTEM. Вы можете настроить ACL для других учетных записей в соответствии с требованиями службы.
На следующем шаге ознакомьтесь со следующими статьями: