Konwertowanie certyfikatów klastra z deklaracji opartych na odcisku palca na nazwy pospolite

Podpis certyfikatu (powszechnie znany jako odcisk palca) jest unikatowy. Certyfikat klastra zadeklarowany przez odcisk palca odwołuje się do określonego wystąpienia certyfikatu. Ta specyfika sprawia, że przerzucanie certyfikatów i zarządzanie nimi ogólnie, jest trudne i jawne. Każda zmiana wymaga organizowania uaktualnień klastra i hostów obliczeniowych bazowych.

Konwertowanie deklaracji certyfikatów klastra usługi Azure Service Fabric z odcisku palca na deklaracje oparte na deklaracjach na podstawie nazwy pospolitej podmiotu certyfikatu (CN) znacznie upraszcza zarządzanie. W szczególności przewracanie certyfikatu nie wymaga już uaktualnienia klastra. W tym artykule opisano sposób konwertowania istniejącego klastra na deklaracje oparte na cn bez przestojów.

Uwaga

Zalecamy korzystanie z modułu Azure Az programu PowerShell do interakcji z platformą Azure. Zobacz Instalowanie programu Azure PowerShell, aby rozpocząć. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Przenoszenie do certyfikatów podpisanych przez urząd certyfikacji

Bezpieczeństwo klastra, którego certyfikat jest deklarowany przez odcisk palca, opiera się na tym, że nie jest możliwe lub niemożliwe do obliczenia, aby utworzyć certyfikat z tym samym podpisem co inny. W takim przypadku pochodzenie certyfikatu jest mniej ważne, więc certyfikaty z podpisem własnym są odpowiednie.

Z drugiej strony zabezpieczenia klastra, którego certyfikaty są deklarowane przez przepływy CN z niejawnego zaufania, które właściciel klastra ma u dostawcy certyfikatów. Dostawca jest usługą infrastruktury kluczy publicznych (PKI), która wystawiła certyfikat. Zaufanie opiera się między innymi na praktykach certyfikacji infrastruktury kluczy publicznych, czy ich zabezpieczenia operacyjne są poddawane inspekcji i zatwierdzane przez jeszcze inne zaufane strony itd.

Właściciel klastra musi również mieć szczegółową wiedzę o tym, które urzędy certyfikacji wystawiają swoje certyfikaty, ponieważ jest to podstawowy aspekt weryfikacji certyfikatów według podmiotu. Oznacza to również, że certyfikaty z podpisem własnym są całkowicie nieodpowiednie do tego celu. Dosłownie każdy może wygenerować certyfikat z danym tematem.

Certyfikat zadeklarowany przez cn jest zwykle uznawany za prawidłowy, jeśli:

  • Łańcuch można pomyślnie skompilować.
  • Temat ma oczekiwany element CN.
  • Jego wystawca (bezpośredni lub wyższy w łańcuchu) jest zaufany przez agenta wykonującego walidację.

Usługa Service Fabric obsługuje deklarowanie certyfikatów według nazwy CN na dwa sposoby:

  • W przypadku niejawnych wystawców, co oznacza, że łańcuch musi kończyć się kotwicą zaufania.
  • W przypadku wystawców zadeklarowanych przez odcisk palca, który jest znany jako przypinanie wystawcy.

Aby uzyskać więcej informacji, zobacz Deklaracje weryfikacji certyfikatów oparte na nazwach wspólnych.

Aby przekonwertować klaster przy użyciu certyfikatu z podpisem własnym zadeklarowanym przez odcisk palca do nazwy CN, należy najpierw wprowadzić certyfikat z podpisem urzędu certyfikacji do klastra przy użyciu odcisku palca. Tylko wtedy konwersja z odcisku palca na CN jest możliwa.

W celach testowych certyfikat z podpisem własnym może zostać zadeklarowany przez cn, ale tylko wtedy, gdy wystawca jest przypięty do własnego odcisku palca. Z punktu widzenia zabezpieczeń ta akcja jest prawie równoważna deklarowaniu tego samego certyfikatu za pomocą odcisku palca. Pomyślna konwersja tego rodzaju nie gwarantuje pomyślnej konwersji z odcisku palca na cn z certyfikatem z podpisem urzędu certyfikacji. Zalecamy przetestowanie konwersji przy użyciu odpowiedniego certyfikatu z podpisem urzędu certyfikacji. Dostępne są bezpłatne opcje na potrzeby tego testowania.

Przekaż certyfikat i zainstaluj go w zestawie skalowania

Na platformie Azure zalecany mechanizm uzyskiwania i aprowizowania certyfikatów obejmuje usługę Azure Key Vault i jej narzędzia. Certyfikat pasujący do deklaracji certyfikatu klastra musi być aprowizowany do każdego węzła zestawów skalowania maszyn wirtualnych składających się na klaster. Aby uzyskać więcej informacji, zobacz Wpisy tajne w zestawach skalowania maszyn wirtualnych.

Ważne jest zainstalowanie zarówno bieżących, jak i docelowych certyfikatów klastra na maszynach wirtualnych każdego typu węzła klastra przed wprowadzeniem zmian w deklaracjach certyfikatów klastra. Podróż od wystawiania certyfikatów do aprowizacji w węźle usługi Service Fabric została szczegółowo omówiona w temacie Podróż certyfikatu.

Przełącz klaster do optymalnego stanu początkowego

Konwertowanie deklaracji certyfikatu z odcisku palca na wpływ oparty na cn:

  • Jak każdy węzeł w klastrze znajduje i przedstawia swoje poświadczenia innym węzłom.
  • Jak każdy węzeł weryfikuje poświadczenia swojego odpowiednika podczas nawiązywania bezpiecznego połączenia.

Przed kontynuowaniem przejrzyj prezentację i reguły walidacji obu konfiguracji . Najważniejszą kwestią podczas przeprowadzania konwersji odcisku palca na CN jest to, że uaktualnione i nie uaktualnione węzły (czyli węzły należące do różnych domen uaktualnienia) muszą być w stanie wykonać pomyślne wzajemne uwierzytelnianie w dowolnym momencie podczas uaktualniania. Zalecanym sposobem osiągnięcia tego zachowania jest zadeklarowanie certyfikatu docelowego lub docelowego za pomocą odcisku palca w początkowym uaktualnieniu. Następnie ukończ przejście do cn w kolejnym. Jeśli klaster jest już w zalecanym stanie uruchamiania, możesz pominąć tę sekcję.

Istnieje wiele prawidłowych stanów początkowych konwersji. Niezmienne jest to, że klaster korzysta już z certyfikatu docelowego (zadeklarowanego przez odcisk palca) na początku uaktualnienia do nazwy CN. Rozważmy GoalCert, OldCert1i OldCert2 w tym artykule.

Prawidłowe stany początkowe

  • Thumbprint: GoalCert, ThumbprintSecondary: None
  • Thumbprint: GoalCert, ThumbprintSecondary: OldCert1, gdzie GoalCert ma późniejszą NotBefore datę niż OldCert1
  • Thumbprint: OldCert1, ThumbprintSecondary: GoalCert, gdzie GoalCert ma późniejszą NotBefore datę niż OldCert1

Uwaga

Przed wersją 7.2.445 (7.2 CU4) usługa Service Fabric wybrała najdalej wygasający certyfikat (certyfikat z najdalejszą właściwością "NotAfter"), więc powyższe stany początkowe przed 7.2 CU4 wymagają, aby certyfikat GoalCert miał późniejszą NotAfter datę niż OldCert1

Jeśli klaster nie znajduje się w jednym z prawidłowych stanów opisanych wcześniej, zobacz informacje na temat osiągnięcia tego stanu w sekcji na końcu tego artykułu.

Wybieranie żądanego schematu weryfikacji certyfikatu opartego na cn

Jak opisano wcześniej, usługa Service Fabric obsługuje deklarowanie certyfikatów przez cn za pomocą niejawnej kotwicy zaufania lub jawne przypinanie odcisków palca wystawcy. Aby uzyskać więcej informacji, zobacz Deklaracje weryfikacji certyfikatów oparte na nazwach wspólnych.

Upewnij się, że masz dobrą wiedzę na temat różnic i implikacji wyboru obu mechanizmów. Składniowo ta różnica lub wybór zależy od wartości parametru certificateIssuerThumbprintList . Puste oznacza, że poleganie na zaufanym głównym urzędzie certyfikacji (kotwicy zaufania), natomiast zestaw odcisków palców ogranicza dozwolonych wystawców bezpośrednich certyfikatów klastra.

Uwaga

Pole certificateIssuerThumbprint umożliwia określenie oczekiwanych bezpośrednich wystawców certyfikatów zadeklarowanych przez podmiot CN. Dopuszczalne wartości to co najmniej jeden odcisk palca SHA1 rozdzielony przecinkami. Ta akcja wzmacnia walidację certyfikatu.

Jeśli nie określono żadnych wystawców lub lista jest pusta, certyfikat zostanie zaakceptowany do uwierzytelniania, jeśli można skompilować łańcuch. Następnie certyfikat zostanie wyświetlony w katalogu głównym zaufanym przez moduł sprawdzania poprawności. Jeśli zostanie określony co najmniej jeden odcisk palca wystawcy, certyfikat zostanie zaakceptowany, jeśli odcisk palca jego wystawcy bezpośredniego, jak wyodrębniony z łańcucha, odpowiada dowolnym wartościom określonym w tym polu. Certyfikat zostanie zaakceptowany, czy katalog główny jest zaufany, czy nie.

Infrastruktura kluczy publicznych może używać różnych urzędów certyfikacji (znanych również jako wystawcy) do podpisywania certyfikatów z danym podmiotem. Z tego powodu ważne jest, aby określić wszystkie oczekiwane odciski palca wystawcy dla tego tematu. Innymi słowy, odnawianie certyfikatu nie ma gwarancji podpisania przez tego samego wystawcę co odnawiany certyfikat.

Określenie wystawcy jest uznawane za najlepsze rozwiązanie. Pominięcie wystawcy będzie nadal działać w celu utworzenia łańcucha certyfikatów do zaufanego katalogu głównego, ale to zachowanie ma ograniczenia i może zostać wycofane w najbliższej przyszłości. Klastry wdrożone na platformie Azure zabezpieczone przy użyciu certyfikatów X509 wystawionych przez prywatną infrastrukturę PKI i zadeklarowane przez podmiot mogą nie być w stanie zostać zweryfikowane przez usługę Service Fabric (w przypadku komunikacji typu klaster-usługa). Weryfikacja wymaga, aby zasady certyfikatu infrastruktury kluczy publicznych były wykrywalne, dostępne i dostępne.

Aktualizowanie szablonu usługi Azure Resource Manager klastra i wdrażanie

Zarządzanie klastrami usługi Service Fabric przy użyciu szablonów usługi Azure Resource Manager (ARM). Alternatywą, która używa również artefaktów JSON, jest Eksplorator zasobów platformy Azure (wersja zapoznawcza). Równoważne środowisko nie jest obecnie dostępne w Azure Portal.

Jeśli oryginalny szablon odpowiadający istniejącemu klastrowi nie jest dostępny, w Azure Portal można uzyskać równoważny szablon. Przejdź do grupy zasobów zawierającej klaster i wybierz pozycję Eksportuj szablon z menu Automatyzacja po lewej stronie. Następnie wybierz żądane zasoby. Należy wyeksportować odpowiednio zestaw skalowania maszyn wirtualnych i zasoby klastra. Wygenerowany szablon można również pobrać. Ten szablon może wymagać zmian przed jego pełnym wdrożeniem. Szablon może być również niezgodny z oryginalnym szablonem. Jest to odbicie bieżącego stanu zasobu klastra.

Niezbędne zmiany są następujące:

  • Aktualizowanie definicji rozszerzenia węzła usługi Service Fabric (w ramach zasobu maszyny wirtualnej). Jeśli klaster definiuje wiele typów węzłów, należy zaktualizować definicję każdego odpowiedniego zestawu skalowania maszyn wirtualnych.
  • Aktualizowanie definicji zasobu klastra.

Szczegółowe przykłady znajdują się tutaj.

Aktualizowanie zasobów zestawu skalowania maszyn wirtualnych

Od:

"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')]"
                            }
                        },
                        ...
                    }
                },

Do:

"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')]"
                            }
                        },
                        ...
                    }
                },

Aktualizowanie zasobu klastra

W zasobie Microsoft.ServiceFabric/clusters dodaj właściwość certificateCommonNames z ustawieniem commonNames i całkowicie usuń właściwość certyfikatu (wszystkie jej ustawienia).

Od:

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

Do:

    {
        "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')]"
            },
        ...

Aby uzyskać więcej informacji, zobacz Wdrażanie klastra usługi Service Fabric, który używa nazwy pospolitej certyfikatu zamiast odcisku palca.

Wdrażanie zaktualizowanego szablonu

Ponownie wdróż zaktualizowany szablon po wprowadzeniu zmian.

$groupname = "sfclustertutorialgroup"

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

Uzyskiwanie prawidłowego stanu początkowego do konwertowania klastra na deklaracje certyfikatów opartych na cn

Stan początkowy Uaktualnianie 1 Uaktualnianie 2
Thumbprint: OldCert1, ThumbprintSecondary: None i GoalCert ma późniejszą NotBefore datę niż OldCert1 Thumbprint: OldCert1, ThumbprintSecondary: GoalCert -
Thumbprint: OldCert1, ThumbprintSecondary: None i OldCert1 ma późniejszą NotBefore datę niż GoalCert Thumbprint: GoalCert, ThumbprintSecondary: OldCert1 Thumbprint: GoalCert, ThumbprintSecondary: None
Thumbprint: OldCert1, ThumbprintSecondary: GoalCert, gdzie OldCert1 ma późniejszą NotBefore datę niż GoalCert Uaktualnianie do Thumbprint: GoalCert, ThumbprintSecondary: None -
Thumbprint: GoalCert, ThumbprintSecondary: OldCert1, gdzie OldCert1 ma późniejszą NotBefore datę niż GoalCert Uaktualnianie do Thumbprint: GoalCert, ThumbprintSecondary: None -
Thumbprint: OldCert1, ThumbprintSecondary: OldCert2 Usuń jeden z elementów OldCert1 lub OldCert2 , aby przejść do stanu Thumbprint: OldCertx, ThumbprintSecondary: None Kontynuuj od nowego stanu początkowego

Uwaga

W przypadku klastra w wersji wcześniejszej niż 7.2.445 (7.2 CU4) zastąp ciąg NotBefore ciągiem NotAfter w powyższych stanach.

Aby uzyskać instrukcje dotyczące przeprowadzania dowolnego z tych uaktualnień, zobacz Manage certificates in an Azure Service Fabric cluster (Zarządzanie certyfikatami w klastrze usługi Azure Service Fabric).

Następne kroki