Fürttanúsítványok konvertálása ujjlenyomat-alapú deklarációkból köznapi nevekké

A tanúsítvány aláírása (más néven ujjlenyomat) egyedi. Az ujjlenyomattal deklarált fürttanúsítvány a tanúsítvány egy adott példányára utal. Ez a sajátosság megnehezíti a tanúsítványok bevezetésének és felügyeletének általános, nehézkes és explicit módon történő kezelését. Minden módosításhoz a fürt és a mögöttes számítási gazdagépek frissítéseinek vezénylése szükséges.

Az Azure Service Fabric-fürt tanúsítványdeklarációinak ujjlenyomat-alapúról deklarációkká alakítása a tanúsítvány tulajdonosának közös neve (CN) alapján jelentősen leegyszerűsíti a felügyeletet. A tanúsítványon való váltáshoz már nincs szükség fürtfrissítésre. Ez a cikk azt ismerteti, hogyan alakíthat át egy meglévő fürtöt CN-alapú deklarációkká állásidő nélkül.

Megjegyzés

Javasoljuk, hogy az Azure Az PowerShell-modult használja az Azure-ral való kommunikációhoz. Az első lépésekhez tekintse meg az Azure PowerShell telepítését ismertető szakaszt. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.

Váltás hitelesítésszolgáltató által aláírt tanúsítványokra

Egy olyan fürt biztonsága, amelynek tanúsítványát ujjlenyomattal deklarálta, azon a tényen alapul, hogy lehetetlen vagy számításilag nem megvalósítható olyan tanúsítványt létrehozni, amely ugyanazzal az aláírással rendelkezik, mint egy másik. Ebben az esetben a tanúsítvány eredete kevésbé fontos, ezért az önaláírt tanúsítványok megfelelőek.

Ezzel szemben egy olyan fürt biztonsága, amelynek tanúsítványait CN-folyamatok deklarálják abból az implicit megbízhatóságból, amelyet a fürt tulajdonosa a tanúsítványszolgáltatójában deklarál. A szolgáltató a tanúsítványt kiállító nyilvános kulcsú infrastruktúra (PKI) szolgáltatás. A megbízhatóság többek között a PKI tanúsítási gyakorlatán alapul, függetlenül attól, hogy a működési biztonságukat még más megbízható felek naplózták-e és jóváhagyják-e, és így tovább.

A fürt tulajdonosának részletes ismeretekkel kell rendelkeznie arról is, hogy mely hitelesítésszolgáltatók (CA-k) bocsátják ki tanúsítványaikat, mivel ez a tanúsítványok tulajdonosonkénti érvényesítésének alapvető szempontja. Ez azt is jelenti, hogy az önaláírt tanúsítványok teljesen alkalmatlanok erre a célra. Szó szerint bárki létrehozhat egy tanúsítványt egy adott tulajdonossal.

A CN által deklarált tanúsítvány általában érvényesnek minősül, ha:

  • A lánc sikeresen felépíthető.
  • A tárgy a várt CN-elemet tartalmazza.
  • Kibocsátóját (a láncban közvetlenül vagy magasabb szinten) az ellenőrzést végző ügynök megbízhatónak tekinti.

A Service Fabric kétféleképpen támogatja a tanúsítványok CN szerinti deklarálását:

  • Implicit kiállítók esetén a láncnak egy megbízhatósági horgonyban kell végződnie.
  • A kiállítók ujjlenyomattal deklarálva, amelyet kibocsátói rögzítésnek neveznek.

További információ: Common-name-based certificate validation deklarációk.

Ha egy fürtöt ujjlenyomattal deklarált, önaláírt tanúsítvány használatával szeretne CN-vé alakítani, a célként aláírt tanúsítványt először ujjlenyomattal kell a fürtbe bevezetni. Csak akkor lehetséges az ujjlenyomatról a CN-re való konvertálás.

Tesztelési célokból az önaláírt tanúsítványt a CN deklarálhatja, de csak akkor, ha a kiállító a saját ujjlenyomatára van rögzítve. Biztonsági szempontból ez a művelet majdnem egyenértékű azzal, ha ugyanazt a tanúsítványt ujjlenyomattal deklaráljuk. Az ilyen típusú sikeres átalakítás nem garantálja a hitelesítésszolgáltató által aláírt tanúsítvánnyal rendelkező ujjlenyomatból CN-be történő sikeres konvertálást. Javasoljuk, hogy tesztelje az átalakítást egy megfelelő, hitelesítésszolgáltató által aláírt tanúsítvánnyal. A teszteléshez ingyenes lehetőségek állnak rendelkezésre.

Töltse fel a tanúsítványt, és telepítse a méretezési csoportban

Az Azure-ban a tanúsítványok beszerzésének és kiépítésének ajánlott mechanizmusa az Azure Key Vault és annak eszközhasználata. A fürttanúsítvány-deklarációval egyező tanúsítványt kell kiépíteni a fürtöt alkotó virtuálisgép-méretezési csoportok minden csomópontjára. További információ: Titkos kódok a virtuálisgép-méretezési csoportokban.

Fontos, hogy az aktuális és a célfürttanúsítványokat is telepítse a fürt minden csomóponttípusának virtuális gépére, mielőtt módosításokat hajt végre a fürt tanúsítványdeklarációiban. A tanúsítványkiállítástól a Service Fabric-csomópontra való üzembe helyezésig vezető utat a Tanúsítvány menete című témakörben tárgyaljuk részletesen.

A fürt optimális kezdő állapotba hozása

Tanúsítványdeklaráció átalakítása ujjlenyomat-alapúról CN-alapú hatásra:

  • Hogyan találja meg a fürt egyes csomópontjai a hitelesítő adatait, és hogyan mutatják be a hitelesítő adatait más csomópontoknak.
  • Hogyan ellenőrzik az egyes csomópontok a megfelelő hitelesítő adatait egy biztonságos kapcsolat létrehozásakor.

Mielőtt továbblép, tekintse át mindkét konfiguráció bemutatóját és érvényesítési szabályait . Az ujjlenyomat-CN átalakítás során a legfontosabb szempont, hogy a frissített és még nem frissített csomópontoknak (azaz a különböző frissítési tartományokhoz tartozó csomópontoknak) a frissítés során bármikor sikeres kölcsönös hitelesítést kell tudniuk végezni. Ennek a viselkedésnek az ajánlott módja a cél- vagy céltanúsítvány ujjlenyomattal történő deklarálása egy kezdeti frissítésben. Ezután fejezze be a CN-be való áttérést egy későbbiben. Ha a fürt már ajánlott indítási állapotban van, kihagyhatja ezt a szakaszt.

Az átalakításhoz több érvényes kezdő állapot is létezik. Az invariáns az, hogy a fürt már használja a céltanúsítványt (ujjlenyomattal deklarálva) a CN-re való frissítés elején. Ebben a cikkben figyelembe vesszük GoalCerta , OldCert1a és OldCert2 a elemet.

Érvényes kezdőállapotok

  • Thumbprint: GoalCert, ThumbprintSecondary: None
  • Thumbprint: GoalCert, ThumbprintSecondary: OldCert1, ahol GoalCert későbbi NotBefore dátummal rendelkezik, mint a OldCert1
  • Thumbprint: OldCert1, ThumbprintSecondary: GoalCert, ahol GoalCert későbbi NotBefore dátummal rendelkezik, mint a OldCert1

Megjegyzés

A 7.2.445-ös verzió (7.2 CU4) előtt a Service Fabric kiválasztotta a legtávolabbi lejáró tanúsítványt (a tanúsítványt a legtávolabbi "NotAfter" tulajdonsággal), így a fenti, 7.2 CU4 előtti kezdő állapotok megkövetelik, hogy a GoalCert későbbi NotAfter dátummal rendelkezzen, mint OldCert1

Ha a fürt nem a korábban ismertetett érvényes állapotok egyikében található, a cikk végén található szakaszban talál információt az állapot eléréséről.

Válassza ki a kívánt CN-alapú tanúsítványérvényesítési sémát

Ahogy korábban már említettem, a Service Fabric támogatja a tanúsítványok CN szerinti deklarálását implicit megbízhatósági horgony használatával vagy a kiállító ujjlenyomatainak explicit rögzítésével. További információ: Common-name-based certificate validation deklarációk.

Győződjön meg arról, hogy jól ismeri a különbségeket és a mechanizmusok kiválasztásának következményeit. Ezt a különbséget vagy választási lehetőséget szintaktikailag a paraméter értéke certificateIssuerThumbprintList határozza meg. Az üres azt jelenti, hogy megbízható legfelső szintű hitelesítésszolgáltatóra (megbízhatósági horgonyra) támaszkodik, míg az ujjlenyomatok készlete korlátozza a fürttanúsítványok engedélyezett közvetlen kiállítóit.

Megjegyzés

A certificateIssuerThumbprint mező lehetővé teszi a tulajdonos CN által deklarált tanúsítványok várt közvetlen kiállítóinak megadását. Az elfogadható értékek egy vagy több vesszővel elválasztott SHA1 ujjlenyomatok. Ez a művelet megerősíti a tanúsítványérvényesítést.

Ha nincs megadva kiállító, vagy a lista üres, a rendszer elfogadja a tanúsítványt a hitelesítéshez, ha a lánc felépíthető. A tanúsítvány ezután egy, az érvényesítő által megbízhatóan megbízható gyökerre kerül. Ha egy vagy több kiállítói ujjlenyomat van megadva, a rendszer elfogadja a tanúsítványt, ha a közvetlen kiállítójának ujjlenyomata a láncból kinyert módon megfelel az ebben a mezőben megadott értékek bármelyikének. A rendszer elfogadja a tanúsítványt, függetlenül attól, hogy a gyökér megbízható-e.

A PKI különböző hitelesítésszolgáltatókat (más néven kiállítókat) használhat a tanúsítványok egy adott tulajdonossal való aláírásához. Ezért fontos megadni az adott tárgyhoz tartozó összes várt kiállítói ujjlenyomatot. Más szóval a tanúsítvány megújítását nem garantálja, hogy ugyanaz a kiállító írja alá, mint a megújított tanúsítványt.

A kibocsátó megadása ajánlott eljárásnak számít. A kiállító kihagyása továbbra is működni fog a megbízható legfelső szintű tanúsítványhoz láncoló tanúsítványok esetében, de ez a viselkedés korlátozott, és a közeljövőben megszűnhet. Előfordulhat, hogy az Azure-ban üzembe helyezett, privát PKI által kibocsátott X509-tanúsítványokkal védett és tulajdonos által deklarált fürtöket a Service Fabric nem tudja érvényesíteni (a fürt-szolgáltatás közötti kommunikációhoz). Az ellenőrzéshez a PKI tanúsítványszabályzatának felderíthetőnek, elérhetőnek és hozzáférhetőnek kell lennie.

A fürt Azure Resource Manager-sablonjának frissítése és üzembe helyezése

A Service Fabric-fürtök kezelése Azure Resource Manager (ARM) sablonokkal. A JSON-összetevőket is használó alternatíva az Azure Resource Explorer (előzetes verzió) . A Azure Portal jelenleg nem érhető el egyenértékű felület.

Ha a meglévő fürtnek megfelelő eredeti sablon nem érhető el, a Azure Portal is beszerezhet egy ezzel egyenértékű sablont. Nyissa meg a fürtöt tartalmazó erőforráscsoportot, és válassza a sablon exportálása lehetőséget a bal oldali Automation menüben. Ezután válassza ki a kívánt erőforrásokat. A virtuálisgép-méretezési csoportot és a fürterőforrásokat legalább exportálni kell. A létrehozott sablon is letölthető. Ez a sablon módosításokat igényelhet a teljes üzembe helyezés előtt. Előfordulhat, hogy a sablon nem felel meg pontosan az eredetinek. Ez a fürterőforrás aktuális állapotát tükrözi.

A szükséges módosítások a következők:

  • A Service Fabric csomópontbővítmény definíciójának frissítése (a virtuálisgép-erőforrás alatt). Ha a fürt több csomóponttípust határoz meg, frissítenie kell az egyes megfelelő virtuálisgép-méretezési csoportok definícióját.
  • A fürterőforrás-definíció frissítése.

Részletes példákat itt talál.

A virtuálisgép-méretezési csoport erőforrásainak frissítése

Forrás:

"virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
                    "properties": {
                        "type": "ServiceFabricNode",
                        "autoUpgradeMinorVersion": true,
                        "protectedSettings": {
                            ...
                        },
                        "publisher": "Microsoft.Azure.ServiceFabric",
                        "settings": {
                            ...
                            "certificate": {
                                "thumbprint": "[parameters('certificateThumbprint')]",
                                "x509StoreName": "[parameters('certificateStoreValue')]"
                            }
                        },
                        ...
                    }
                },

Címzett:

"virtualMachineProfile": {
        "extensionProfile": {
            "extensions": [
                {
                    "name": "[concat('ServiceFabricNodeVmExt','_vmNodeType0Name')]",
                    "properties": {
                        "type": "ServiceFabricNode",
                        "autoUpgradeMinorVersion": true,
                        "protectedSettings": {
                            ...
                        },
                        "publisher": "Microsoft.Azure.ServiceFabric",
                        "settings": {
                            ...
                            "certificate": {
                                "commonNames": [
                                    "[parameters('certificateCommonName')]"
                                ],
                                "x509StoreName": "[parameters('certificateStoreValue')]"
                            }
                        },
                        ...
                    }
                },

A fürterőforrás frissítése

A Microsoft.ServiceFabric/clusters erőforrásban adjon hozzá egy certificateCommonNames tulajdonságot commonNames beállítással, és távolítsa el a tanúsítványtulajdonságot (annak összes beállítását).

Forrás:

    {
        "apiVersion": "2018-02-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        "dependsOn": [
            ...
        ],
        "properties": {
            "addonFeatures": [
                ...
            ],
            "certificate": {
              "thumbprint": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
            },
        ...

Címzett:

    {
        "apiVersion": "2018-02-01",
        "type": "Microsoft.ServiceFabric/clusters",
        "name": "[parameters('clusterName')]",
        "location": "[parameters('clusterLocation')]",
        "dependsOn": [
            ...
        ],
        "properties": {
            "addonFeatures": [
                ...
            ],
            "certificateCommonNames": {
                "commonNames": [
                    {
                        "certificateCommonName": "[parameters('certificateCommonName')]",
                        "certificateIssuerThumbprint": "[parameters('certificateIssuerThumbprintList')]"
                    }
                ],
                "x509StoreName": "[parameters('certificateStoreValue')]"
            },
        ...

További információkért lásd: Általános tanúsítványnevet használó Service Fabric-fürt üzembe helyezése ujjlenyomat helyett.

A frissített sablon üzembe helyezése

A módosítások elvégzése után helyezze újra üzembe a frissített sablont.

$groupname = "sfclustertutorialgroup"

New-AzResourceGroupDeployment -ResourceGroupName $groupname -Verbose `
    -TemplateParameterFile "C:\temp\cluster\parameters.json" -TemplateFile "C:\temp\cluster\template.json" 

Érvényes indítási állapot elérése a fürt CN-alapú tanúsítványdeklarációkká alakításához

Kezdő állapot 1. frissítés 2. frissítés
Thumbprint: OldCert1, ThumbprintSecondary: None és GoalCert egy későbbi NotBefore dátummal rendelkezik, mint OldCert1 Thumbprint: OldCert1, ThumbprintSecondary: GoalCert -
Thumbprint: OldCert1, ThumbprintSecondary: None és OldCert1 egy későbbi NotBefore dátummal rendelkezik, mint GoalCert Thumbprint: GoalCert, ThumbprintSecondary: OldCert1 Thumbprint: GoalCert, ThumbprintSecondary: None
Thumbprint: OldCert1, ThumbprintSecondary: GoalCert, ahol OldCert1 későbbi NotBefore dátummal rendelkezik, mint GoalCert Frissítés Thumbprint: GoalCert, ThumbprintSecondary: None -
Thumbprint: GoalCert, ThumbprintSecondary: OldCert1, ahol OldCert1 későbbi NotBefore dátummal rendelkezik, mint GoalCert Frissítés Thumbprint: GoalCert, ThumbprintSecondary: None -
Thumbprint: OldCert1, ThumbprintSecondary: OldCert2 Az állapotba kerülés vagy az egyik eltávolítása OldCert1OldCert2Thumbprint: OldCertx, ThumbprintSecondary: None Folytatás az új kezdő állapottól

Megjegyzés

A 7.2.445-ös verziót (7.2 CU4) megelőző verziójú fürtök esetében cserélje le NotBeforeNotAfter a elemet a fenti állapotokra.

A frissítések végrehajtásával kapcsolatos utasításokért lásd: Tanúsítványok kezelése egy Azure Service Fabric-fürtben.

Következő lépések