Dajbych.net


Jak zabezpečit cluster Service Fabric pomocí certifikátu X.509

, 4 minuty čtení

service fabric logo

Pravděpodobně jste si všimli, že Service Fabric Explorer je veřejně přístupný a nevyžaduje žádné uživatelské jméno ani heslo. Service Fabric Explorer umožňuje monitorování a správu akcí, jako je zakázání uzlů nebo odstranění aplikace. Cluster a jeho správu lze snadno zabezpečit pomocí certifikátu X.509 podepsaného svým držitelem. Poté je certifikát vyžadován pro přístup k Service Fabric Explorer nebo publikování aplikací do clusteru.

Krok 1: Volba názvu clusteru

Než můžeme začít s generováním certifikátů, potřebujeme znát název clusteru. Název musí být v oblasti Azure jedinečný.

V Azure Portal klikněte na NewComputeService Fabric Cluster. Výběr názvu clusteru je prvním krokem průvodce vytvořením clusteru Service Fabric. V tomto článku zvolím tradiční název contoso.

Krok 2: Vygenerování certifikátu

Certifikát lze vygenerovat mnoha způsoby. Toto téma dalece přesahuje záměr tohoto článku. Certifikát můžete vygenerovat procesem, kterému důvěřujete. Jediným požadavkem je standard X.509 a název subjektu (CN) musí být adresou URL vašeho clusteru, např. contoso.westeurope.cloudapp.azure.com.

Použiji Windows CryptoAPI, Microsoft .NET Framework a balíček PluralSight.Crypto NuGet. Spusťte Visual Studio a vytvořte novou konzolovou aplikaci (Start PageCreate a new project…InstalledTemplatesVisual C#Windows Classic DesktopConsole App (.NET Framework)OK). V Solution Explorer (ViewSolution Explorer) klikněte pravým tlačítkem myši na ConsoleApp1 a vyberte možnost Manage NuGet packages…. Vyberte Browse a vyhledejte PluralSight.Crypto. Nainstalujte balíček. Nahraďte obsah souboru Program.cs následujícím kódem a upravte proměnnou subjectName.

using Pluralsight.Crypto;
using System;
using System.IO;
using System.Security.Cryptography.X509Certificates;

namespace ConsoleApp1 {
    class Program {
        static void Main(string[] args) {

            var subjectName = "contoso.westeurope.cloudapp.azure.com";

            using (CryptContext ctx = new CryptContext()) {
                ctx.Open();

                X509Certificate2 cert = ctx.CreateSelfSignedCertificate(
                    new SelfSignedCertProperties {
                        IsPrivateKeyExportable = true,
                        KeyBitLength = 4096,
                        Name = new X500DistinguishedName("cn=" + subjectName),
                        ValidFrom = DateTime.Today.AddDays(-1),
                        ValidTo = DateTime.Today.AddYears(2),
                    });

                File.WriteAllBytes("contoso.pfx", cert.Export(X509ContentType.Pfx));
                Console.WriteLine(cert.Thumbprint);
                Console.ReadLine();
            };

        }
    }
}

Sestavte projekt (Ctrl + Shift + B). V Průzkumníku řešení klikněte pravým tlačítkem myši na projekt ConsoleApp1 a zvolte Open Folder in File Explorer. Přejděte do adresáře bin/Debug a nechte okno otevřené pro pozdější použití.

Výše uvedený kód vytvoří certifikát za vás (stisknutím klávesy F5). Uloží certifikát do souboru a vytiskne kryptografický otisk certifikátu. Nezavírejte okno konzoly stisknutím klávesy Enter; nechte je otevřené, protože kryptografický otisk budete později potřebovat.

Krok 3: Nahrání certifikátu do Key Vault

V Azure Portal klikněte na New → Security + Identity → Key Vault a vytvořte Key Vault.

Advanced Access Policy se podívejte na Enable access to Azure Virtual Machines for deployment.

Přejděte do Key Vault a zvolte Secrets.

Poté klikněte na Add.

Nahrajte certifikát z umístění, které jste otevřeli v předchozím kroku. Zvolte název certifikátu.

Přejděte na Properties úložiště klíčů a nechte ho otevřené.

Krok 4: Konfigurace zabezpečení clusteru

Můžeme se vrátit k průvodci vytvořením clusteru Service Fabric. V kroku 3 přiřadíme primární certifikát.

Může se zobrazit neočekávaná chyba s informací, že kryptografický otisk certifikátu je neplatný. K tomu může dojít, když kryptografický otisk začíná neviditelným znakem left-to-right mark. Umístěte kurzor za první písmeno kryptografického otisku, dvakrát stiskněte klávesu Backspace a znovu zadejte první písmeno.

Správa a nasazení aplikací

Certifikát je uživatelské jméno a heslo pro náš cluster. Musí být nainstalován v počítači, který slouží ke sledování nebo nasazování aplikací do clusteru. Dvojitým kliknutím na ikonu souboru certifikátu jej nainstalujte. Certifikát můžete nainstalovat do umístění, které automaticky určí průvodce importem certifikátu.

Nasazení aplikací

Pro otestování nasazení můžete vytvořit prázdnou aplikaci Service Fabric. V Start Page klikněte na možnost Create a new project…InstalledTemplatesVisual C#CloudService Fabric ApplicationOKStateless ServiceOK. V Průzkumníku řešení klikněte pravým tlačítkem myši na projekt Application1 a vyberte možnost Publish…

V dialogovém okně Publish Service Fabric Application nastavte StoreLocation na CurrentUser a StoreName na My.

Přístup k Service Fabric Exploreru

Můžeme přejít na https://contoso.westeurope.cloudapp.azure.com:19080/Explorer. Prohlížeč vás upozorní, že certifikát je neplatný. To je normální, protože certifikát je podepsán sám sebou. Pokračujte a vyberte příslušný certifikát. Zobrazí se Service Fabric Explorer. Počítač, který postrádá certifikát, nemá přístup k Service Fabric Exploreru clusteru.

Obnova certifikátu

Můžete přidat druhý certifikát a prohodit primární certifikát se sekundárním certifikátem , čímž se certifikát obnoví. To však v současné době nelze provést bez PowerShellu.