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 till 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 inte en rekommenderad avancerad åtgärd och kräver att parametervärdet "UseSecondaryIfNewer" anges till falskt 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.

Anteckning

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, klustret slutar 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.

Anteckning

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. 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 Portal. 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 certifikat (inte återkallat och inte upphört att gälla). 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 på snabbmenyn på det oanvända certifikatet.

Om din avsikt ä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 redundans. ta bort det primära certifikatet när den automatiska redundansväxlingen har slutförts.

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

Dessa steg 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 förutsätts också att du är bekväm med att använda JSON.

Anteckning

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 din Resource Manager-mall

Exempel på 5-VM-1-NodeTypes-Secure_Step2.JSON innehåller alla redigeringar som vi kommer att göra. exemplet finns på git-repo.

Se till att följa alla steg

  1. Öppna den Resource Manager mall som du använde för att distribuera klustret. (Om du har hämtat 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å mallens källa kanske du redan har definierat dessa, om så är fallet går du 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')]".

    Nu bör resursdefinitionen 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 det aktuella primära som sekundärt. Detta resulterar i att det aktuella primära certifikatet återställs 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 som liknar detta.

    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 det aktuella primära som sekundärt. Detta resulterar i att det aktuella certifikatet återställs 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

Anteckning

Kontrollera att du har upprepat steg 4 och 5 för alla nodetypes/Microsoft.Compute/virtualMachineScaleSets-resursdefinitioner i mallen. Om du missar någon av dem installeras inte certifikatet på den virtuella datorskalningsuppsättningen och du får oförutsägbara resultat i klustret, inklusive att klustret slutar fungera (om du slutar med några giltiga certifikat som klustret kan använda för säkerhet. Så dubbelkolla 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-repo 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 är distribuerat 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 är distribuerat till. Kör kommandot New-AzResourceGroupDeployment. Du behöver inte ange läget eftersom standardvärdet är inkrementellt.

Anteckning

Om du ställer in Läge på Slutför kan du oavsiktligt ta bort resurser som inte finns i mallen. Så använd den 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 kö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 certifikatarkiv TrustedPeople.

######## 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 ett 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 – Admin 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 Admin certifikat.

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

Lägga till klientcertifikat – Admin eller Read-Only 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 "Admin klient"
  3. Välj nu auktoriseringsmetod. Detta anger för Service Fabric om det ska slå upp det här 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 – Admin eller Read-Only med hjälp av 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: