Dela via


Lägga till eller ta bort certifikat för ett Service Fabric-kluster i Azure

Vi rekommenderar att du bekantar dig med hur Service Fabric använder X.509-certifikat och är bekant med klustersäkerhetsscenarierna. Du måste förstå vad ett klustercertifikat är och vad som används för innan du fortsätter.

Azure Service Fabrics SDK:s standardbeteende för certifikatinläsning är att distribuera och använda det definierade certifikatet med förfallodatum längst in i framtiden. oavsett deras primära eller sekundära konfigurationsdefinition. Att återgå till det klassiska beteendet är en inte rekommenderad avancerad åtgärd och kräver att parametervärdet "UseSecondaryIfNewer" anges till false i konfigurationen Fabric.Code .

Med Service Fabric kan du ange två klustercertifikat, ett primärt och ett sekundärt, när du konfigurerar certifikatsäkerhet när klustret skapas, förutom klientcertifikat. Se skapa ett Azure-kluster via portalen eller skapa ett Azure-kluster via Azure Resource Manager för mer information om hur du konfigurerar dem vid skapandetillfället. Om du bara anger ett klustercertifikat vid skapandetillfället används det som primärt certifikat. När klustret har skapats kan du lägga till ett nytt certifikat som sekundärt.

Kommentar

För ett säkert kluster behöver du alltid minst ett giltigt (inte återkallat och inte utgånget) klustercertifikat (primärt eller sekundärt) distribuerat (om inte, slutar klustret att fungera). 90 dagar innan alla giltiga certifikat upphör att gälla genererar systemet en varningsspårning och en varningshälsohändelse på noden. Det här är för närvarande de enda meddelanden som Service Fabric skickar om certifikatets giltighetstid.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Information om hur du kommer igång finns i Installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Lägga till ett sekundärt klustercertifikat med hjälp av portalen

Det går inte att lägga till sekundärt klustercertifikat via Azure-portalen. använd Azure Resource Manager.

Ta bort ett klustercertifikat med hjälp av portalen

För ett säkert kluster behöver du alltid minst ett giltigt (inte återkallat och inte utgånget) certifikat. Certifikatet som distribueras längst in i det framtida utgångsdatumet används, och om du tar bort det kommer klustret att sluta fungera. se till att endast ta bort certifikatet som har upphört att gälla eller ett oanvänt certifikat som upphör att gälla snart.

Om du vill ta bort ett oanvänt klustersäkerhetscertifikat går du till avsnittet Säkerhet och väljer alternativet Ta bort från snabbmenyn på det oanvända certifikatet.

Om avsikten är att ta bort certifikatet som är markerat som primärt måste du distribuera ett sekundärt certifikat med ett utgångsdatum längre in i framtiden än det primära certifikatet, vilket aktiverar funktionen för automatisk rollover. ta bort det primära certifikatet när den automatiska redundansväxlingen har slutförts.

Lägga till ett sekundärt certifikat med Hjälp av Azure Resource Manager

De här stegen förutsätter att du är bekant med hur Resource Manager fungerar och har distribuerat minst ett Service Fabric-kluster med hjälp av en Resource Manager-mall och har den mall som du använde för att konfigurera klustret till hands. Det antas också att du är bekväm med JSON.

Kommentar

Om du letar efter en exempelmall och parametrar som du kan använda för att följa med eller som utgångspunkt laddar du ned den från den här git-lagringsplatsen.

Redigera resource manager-mallen

Exempel 5-VM-1-NodeTypes-Secure_Step2.JSON innehåller alla redigeringar som vi kommer att göra för att underlätta att följa med. exemplet är tillgängligt på git-lagringsplatsen.

Se till att följa alla steg

  1. Öppna Resource Manager-mallen som du använde för att distribuera klustret. (Om du har laddat ned exemplet från föregående lagringsplats använder du 5-VM-1-NodeTypes-Secure_Step1.JSON för att distribuera ett säkert kluster och sedan öppna mallen).

  2. Lägg till två nya parametrar "secCertificateThumbprint" och "secCertificateUrlValue" av typen "string" i parameteravsnittet i mallen. Du kan kopiera följande kodfragment och lägga till det i mallen. Beroende på källan för mallen kanske du redan har definierat dessa, om så är fallet gå vidare till nästa steg.

       "secCertificateThumbprint": {
          "type": "string",
          "metadata": {
            "description": "Certificate Thumbprint"
          }
        },
        "secCertificateUrlValue": {
          "type": "string",
          "metadata": {
            "description": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://<name of the vault>.vault.azure.net:443/secrets/<exact location>"
          }
        },
    
    
  3. Gör ändringar i resursen Microsoft.ServiceFabric/clusters – Leta upp resursdefinitionen "Microsoft.ServiceFabric/clusters" i mallen. Under egenskaperna för den definitionen hittar du JSON-taggen "Certifikat", som bör se ut ungefär som följande JSON-kodfragment:

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    

    Lägg till en ny tagg "thumbprintSecondary" och ge den värdet "[parameters('secCertificateThumbprint')]".

    Resursdefinitionen bör därför se ut så här (beroende på mallens källa kanske den inte är exakt som kodfragmentet nedan).

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('certificateThumbprint')]",
              "thumbprintSecondary": "[parameters('secCertificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    

    Om du vill rulla över certifikatet anger du det nya certifikatet som primärt och flyttar den aktuella primära som sekundär. Detta resulterar i att det aktuella primära certifikatet distribueras till det nya certifikatet i ett distributionssteg.

          "properties": {
            "certificate": {
              "thumbprint": "[parameters('secCertificateThumbprint')]",
              "thumbprintSecondary": "[parameters('certificateThumbprint')]",
              "x509StoreName": "[parameters('certificateStoreValue')]"
         }
    
  4. Gör ändringar i alla resursdefinitioner för Microsoft.Compute/virtualMachineScaleSets – Leta upp resursdefinitionen Microsoft.Compute/virtualMachineScaleSets. Rulla till "publisher": "Microsoft.Azure.ServiceFabric", under "virtualMachineProfile".

    I inställningarna för Service Fabric-utgivare bör du se något liknande.

    Json_Pub_Setting1

    Lägg till de nya certifikatposterna i den

                   "certificateSecondary": {
                        "thumbprint": "[parameters('secCertificateThumbprint')]",
                        "x509StoreName": "[parameters('certificateStoreValue')]"
                        }
                      },
    
    

    Egenskaperna bör nu se ut så här

    Json_Pub_Setting2

    Om du vill rulla över certifikatet anger du det nya certifikatet som primärt och flyttar den aktuella primära som sekundär. Detta resulterar i att det aktuella certifikatet distribueras till det nya certifikatet i ett distributionssteg.

                   "certificate": {
                       "thumbprint": "[parameters('secCertificateThumbprint')]",
                       "x509StoreName": "[parameters('certificateStoreValue')]"
                         },
                   "certificateSecondary": {
                        "thumbprint": "[parameters('certificateThumbprint')]",
                        "x509StoreName": "[parameters('certificateStoreValue')]"
                        }
                      },
    

    Egenskaperna bör nu se ut så här
    Json_Pub_Setting3

  5. Gör ändringar i alla resursdefinitioner för Microsoft.Compute/virtualMachineScaleSets – Leta upp resursdefinitionen Microsoft.Compute/virtualMachineScaleSets. Bläddra till "vaultCertificates": , under "OSProfile". det bör se ut ungefär så här.

    Json_Pub_Setting4

    Lägg till secCertificateUrlValue i den. använd följande kodfragment:

                      {
                        "certificateStore": "[parameters('certificateStoreValue')]",
                        "certificateUrl": "[parameters('secCertificateUrlValue')]"
                      }
    
    

    Nu bör den resulterande Json se ut ungefär så här. Json_Pub_Setting5

Kommentar

Kontrollera att du har upprepade steg 4 och 5 för alla resursdefinitioner för Nodetypes/Microsoft.Compute/virtualMachineScaleSets i mallen. Om du missar någon av dem installeras inte certifikatet på den virtuella datorns skalningsuppsättning och du får oförutsägbara resultat i klustret, inklusive att klustret slutar fungera (om du inte får några giltiga certifikat som klustret kan använda för säkerhet. Dubbelkolla därför innan du fortsätter.

Redigera mallfilen så att den återspeglar de nya parametrar som du lade till ovan

Om du använder exemplet från git-lagringsplatsen för att följa med kan du börja göra ändringar i Exemplet 5-VM-1-NodeTypes-Secure.parameters_Step2.JSON

Redigera resource manager-mallparametern Fil, lägg till de två nya parametrarna för secCertificateThumbprint och secCertificateUrlValue.

    "secCertificateThumbprint": {
      "value": "thumbprint value"
    },
    "secCertificateUrlValue": {
      "value": "Refers to the location URL in your key vault where the certificate was uploaded, it is should be in the format of https://<name of the vault>.vault.azure.net:443/secrets/<exact location>"
     },

Distribuera mallen till Azure

  • Nu är du redo att distribuera mallen till Azure. Öppna en Azure PowerShell version 1+ kommandotolk.
  • Logga in på ditt Azure-konto och välj den specifika Azure-prenumerationen. Det här är ett viktigt steg för personer som har åtkomst till mer än en Azure-prenumeration.
Connect-AzAccount
Select-AzSubscription -SubscriptionId <Subscription ID> 

Testa mallen innan du distribuerar den. Använd samma resursgrupp som klustret för närvarande distribueras till.

Test-AzResourceGroupDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>

Distribuera mallen till resursgruppen. Använd samma resursgrupp som klustret för närvarande distribueras till. Kör kommandot New-AzResourceGroupDeployment. Du behöver inte ange läget eftersom standardvärdet är inkrementellt.

Kommentar

Om du anger Läget till Slutfört kan du oavsiktligt ta bort resurser som inte finns i mallen. Använd den därför inte i det här scenariot.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName <Resource Group that your cluster is currently deployed to> -TemplateFile <PathToTemplate>

Här är ett ifyllt exempel på samma PowerShell.

$ResourceGroup2 = "chackosecure5"
$TemplateFile = "C:\GitHub\Service-Fabric\ARM Templates\Cert Rollover Sample\5-VM-1-NodeTypes-Secure_Step2.json"
$TemplateParmFile = "C:\GitHub\Service-Fabric\ARM Templates\Cert Rollover Sample\5-VM-1-NodeTypes-Secure.parameters_Step2.json"

New-AzResourceGroupDeployment -ResourceGroupName $ResourceGroup2 -TemplateParameterFile $TemplateParmFile -TemplateUri $TemplateFile -clusterName $ResourceGroup2

När distributionen är klar ansluter du till klustret med det nya certifikatet och utför några frågor. Om du kan göra det. Sedan kan du ta bort det gamla certifikatet.

Om du använder ett självsignerat certifikat ska du inte glömma att importera dem till ditt lokala betrodda Personer certifikatarkiv.

######## Set up the certs on your local box
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\TrustedPeople -FilePath c:\Mycertificates\chackdanTestCertificate9.pfx -Password (ConvertTo-SecureString -String abcd123 -AsPlainText -Force)
Import-PfxCertificate -Exportable -CertStoreLocation Cert:\CurrentUser\My -FilePath c:\Mycertificates\chackdanTestCertificate9.pfx -Password (ConvertTo-SecureString -String abcd123 -AsPlainText -Force)

För snabbreferens här är kommandot för att ansluta till ett säkert kluster

$ClusterName= "chackosecure5.westus.cloudapp.azure.com:19000"
$CertThumbprint= "70EF5E22ADB649799DA3C8B6A6BF7SD1D630F8F3" 

Connect-serviceFabricCluster -ConnectionEndpoint $ClusterName -KeepAliveIntervalInSec 10 `
    -X509Credential `
    -ServerCertThumbprint $CertThumbprint  `
    -FindType FindByThumbprint `
    -FindValue $CertThumbprint `
    -StoreLocation CurrentUser `
    -StoreName My

För snabbreferens här är kommandot för att hämta klusterhälsa

Get-ServiceFabricClusterHealth 

Distribuera klientcertifikat till klustret.

Du kan använda samma steg som beskrivs i föregående steg 5 för att få certifikaten distribuerade från en nyckelvalv till noderna. Du behöver bara definiera och använda olika parametrar.

Lägga till eller ta bort klientcertifikat

Förutom klustercertifikaten kan du lägga till klientcertifikat för att utföra hanteringsåtgärder i ett Service Fabric-kluster.

Du kan lägga till två typer av klientcertifikat – administratör eller skrivskyddad. Dessa kan sedan användas för att styra åtkomsten till administrationsåtgärderna och frågeåtgärderna i klustret. Som standard läggs klustercertifikaten till i listan över tillåtna administratörscertifikat.

Du kan ange valfritt antal klientcertifikat. Varje tillägg/borttagning resulterar i en konfigurationsuppdatering av Service Fabric-klustret.

Lägga till klientcertifikat – Administratör eller Skrivskyddad via portalen

  1. Gå till avsnittet Säkerhet och välj knappen + autentisering ovanpå säkerhetsavsnittet.
  2. I avsnittet "Lägg till autentisering" väljer du "Autentiseringstyp" – "Skrivskyddad klient" eller "Administratörsklient"
  3. Välj nu auktoriseringsmetod. Detta anger för Service Fabric om det ska söka upp certifikatet med hjälp av ämnesnamnet eller tumavtrycket. I allmänhet är det inte en bra säkerhetspraxis att använda auktoriseringsmetoden för ämnesnamn.

Lägg till klientcertifikat

Borttagning av klientcertifikat – Administratör eller Skrivskyddad via portalen

Om du vill ta bort ett sekundärt certifikat från att användas för klustersäkerhet går du till avsnittet Säkerhet och väljer alternativet Ta bort från snabbmenyn på det specifika certifikatet.

Lägga till programcertifikat i en VM-skalningsuppsättning

Information om hur du distribuerar ett certifikat som du använder för dina program till klustret finns i det här PowerShell-exempelskriptet.

Nästa steg

Läs de här artiklarna om du vill ha mer information om klusterhantering: