Udostępnij za pośrednictwem


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 odnosi się do określonego wystąpienia certyfikatu. Ta specyfika sprawia, że przerzucanie certyfikatów i zarządzanie nimi jest ogólnie trudne i wyraźne. Każda zmiana wymaga organizowania uaktualnień klastra i bazowych hostów obliczeniowych.

Konwertowanie deklaracji certyfikatów klastra usługi Azure Service Fabric z odcisku palca na deklaracje 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

Do interakcji z platformą Azure zalecamy używanie modułu Azure Az w programie PowerShell. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Przechodzenie 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 kolei zabezpieczenia klastra, którego certyfikaty są deklarowane przez cn przepływy z niejawnego zaufania właściciela klastra w swoim 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ą w pełni 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:

  • Jego ł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 przez cn na dwa sposoby:

  • W przypadku niejawnych wystawców oznacza to, ż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 Common-name-based certificate validation deklaracje.

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 za pomocą 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 podpisanego przez urząd certyfikacji. Dostępne są bezpłatne opcje dla tego testowania.

Przekazywanie certyfikatu i instalowanie go w zestawie skalowania

Na platformie Azure zalecany mechanizm uzyskiwania i aprowizacji certyfikatów obejmuje usługę Azure Key Vault i jej narzędzia. Certyfikat pasujący do deklaracji certyfikatu klastra musi być aprowizowany dla 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.

Przed wprowadzeniem zmian w deklaracjach certyfikatów certyfikatów klastra klastra należy zainstalować zarówno bieżące, jak i docelowe certyfikaty klastra na maszynach wirtualnych każdego typu węzła. 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ływy oparte na cn:

  • Jak każdy węzeł w klastrze znajduje i prezentuje 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 reguły prezentacji i weryfikacji dla obu konfiguracji . Najważniejszą kwestią podczas przeprowadzania konwersji odcisku palca na CN jest to, że uaktualnione i niezmodernizowane węzły (czyli węzły należące do różnych domen uaktualnienia) muszą mieć możliwość pomyślnego wzajemnego uwierzytelniania w dowolnym momencie podczas uaktualniania. Zalecanym sposobem osiągnięcia tego zachowania jest zadeklarowanie certyfikatu docelowego lub docelowego za pomocą odcisku palca w ramach początkowego uaktualnienia. 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 dla konwersji. Niezmienne jest to, że klaster korzysta już z certyfikatu docelowego (zadeklarowanego przez odcisk palca) na początku uaktualnienia do nazwy CN. Uważamy 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 sprzed 7.2 CU4 wymagają, aby certyfikat GoalCert miał późniejszą datę niż data późniejsza NotAfter 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.

Wybierz żądany schemat 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 Common-name-based certificate validation deklaracje.

Upewnij się, że dobrze rozumiesz różnice i implikacje wyboru dowolnego z tych mechanizmów. Składniowo ta różnica lub wybór zależy od wartości parametru certificateIssuerThumbprintList . Puste oznacza poleganie na zaufanym głównym urzędzie certyfikacji (kotwicy zaufania), natomiast zestaw odcisków palca ogranicza dozwolonych bezpośrednich wystawców 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 utworzyć jego łańcuch. Następnie certyfikat jest zaufany przez moduł sprawdzania poprawności w katalogu głównym. Jeśli określono co najmniej jeden odcisk palca wystawcy, certyfikat zostanie zaakceptowany, jeśli odcisk palca jego wystawcy bezpośredniego, zgodnie z wyodrębnionym z łańcucha, pasuje do dowolnych wartości określonych 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 gwarantuje 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 przypadku certyfikatów łączących się z zaufanym katalogiem głównym, ale to zachowanie ma ograniczenia i może zostać wycofane w najbliższej przyszłości. Klastry wdrożone na platformie Azure zabezpieczone za pomocą certyfikatów X509 wystawionych przez prywatną infrastrukturę kluczy publicznych i zadeklarowane przez podmiot mogą nie być w stanie zostać zweryfikowane przez usługę Service Fabric (dla komunikacji typu klaster-usługa). Walidacja 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 witrynie Azure Portal.

Jeśli oryginalny szablon odpowiadający istniejącemu klastrowi nie jest dostępny, można uzyskać odpowiedni szablon w witrynie Azure Portal. Przejdź do grupy zasobów zawierającej klaster, a następnie 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 również nie odpowiadać oryginalnemu szablonowi dokładnie. 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 jego 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 datę późniejszą NotBefore niż OldCert1 Thumbprint: OldCert1, ThumbprintSecondary: GoalCert -
Thumbprint: OldCert1, ThumbprintSecondary: None i OldCert1 ma datę późniejszą NotBefore 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 element NotBefore w NotAfter powyższych stanach.

Aby uzyskać instrukcje dotyczące przeprowadzania dowolnego z tych uaktualnień, zobacz Zarządzanie certyfikatami w klastrze usługi Azure Service Fabric.

Następne kroki