Clustercertificaten converteren van declaraties op basis van vingerafdruk naar algemene namen
De handtekening van een certificaat (ook wel vingerafdruk genoemd) is uniek. Een clustercertificaat dat is gedeclareerd met vingerafdruk, verwijst naar een specifiek exemplaar van een certificaat. Deze specificiteit maakt het rollover van certificaten en het beheer in het algemeen moeilijk en expliciet. Voor elke wijziging moeten upgrades van het cluster en de onderliggende computinghosts worden ingedeeld.
Het converteren van certificaatdeclaraties van een Azure Service Fabric-cluster van vingerafdruk naar declaraties op basis van de algemene naam van het certificaat vereenvoudigt het beheer aanzienlijk. In het bijzonder is voor het implementeren van een certificaat geen clusterupgrade meer vereist. In dit artikel wordt beschreven hoe u een bestaand cluster converteert naar declaraties op basis van CN zonder uitvaltijd.
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
Verplaatsen naar certificaten die zijn ondertekend door de certificeringsinstantie
De beveiliging van een cluster waarvan het certificaat door vingerafdruk wordt gedeclareerd, blijft van het feit dat het onmogelijk is of dat het niet haalbaar is om een certificaat met dezelfde handtekening als een andere te vervalsen. In dit geval is de herkomst van het certificaat minder belangrijk, dus zelfondertekende certificaten zijn voldoende.
De beveiliging van een cluster waarvan de certificaten daarentegen worden gedeclareerd door CN-stromen van de impliciete vertrouwensrelatie die de eigenaar van het cluster heeft in de certificaatprovider. De provider is de PKI-service (Public Key Infrastructure) die het certificaat heeft uitgegeven. Vertrouwen is onder andere gebaseerd op de certificeringsprocedures van de PKI, of hun operationele beveiliging wordt gecontroleerd en goedgekeurd door nog andere vertrouwde partijen, enzovoort.
De eigenaar van het cluster moet ook gedetailleerde kennis hebben van welke certificeringsinstanties (CA's) hun certificaten uitgeven, omdat dit een fundamenteel aspect is van het valideren van certificaten per onderwerp. Dit impliceert ook dat zelfondertekende certificaten voor dit doel volledig ongeschikt zijn. Letterlijk kan iedereen een certificaat genereren met een bepaald onderwerp.
Een certificaat dat door CN wordt gedeclareerd, wordt doorgaans als geldig beschouwd als:
- De keten kan met succes worden gebouwd.
- Het onderwerp heeft het verwachte CN-element.
- De uitgever (direct of hoger in de keten) wordt vertrouwd door de agent die de validatie uitvoert.
Service Fabric ondersteunt het declareren van certificaten door CN op twee manieren:
- Met impliciete verleners betekent dit dat de keten moet eindigen in een vertrouwensanker.
- Met verleners die zijn gedeclareerd met vingerafdruk, ook wel verlener vastmaken genoemd.
Zie Declaraties voor certificaatvalidatie op basis van algemene namen voor meer informatie.
Als u een cluster wilt converteren met behulp van een zelfondertekend certificaat dat is gedeclareerd met vingerafdruk naar CN, moet het doelcertificaat dat door de CA is ondertekend, eerst worden ingevoerd in het cluster met vingerafdruk. Alleen dan is de conversie van vingerafdruk naar CN mogelijk.
Voor testdoeleinden kan een zelfondertekend certificaat worden gedeclareerd door CN, maar alleen als de verlener is vastgemaakt aan zijn eigen vingerafdruk. Vanuit een beveiligingsstandpunt is deze actie bijna gelijk aan het declareren van hetzelfde certificaat met vingerafdruk. Een geslaagde conversie van dit type garandeert geen geslaagde conversie van vingerafdruk naar CN met een door een CA ondertekend certificaat. U wordt aangeraden de conversie te testen met een correct, door CA ondertekend certificaat. Er zijn gratis opties voor deze test.
Het certificaat uploaden en installeren in de schaalset
In Azure omvat het aanbevolen mechanisme voor het verkrijgen en inrichten van certificaten Azure Key Vault en de bijbehorende hulpprogramma's. Een certificaat dat overeenkomt met de certificaatdeclaratie van het cluster moet worden ingericht voor elk knooppunt van de virtuele-machineschaalsets waaruit uw cluster bestaat. Zie Geheimen voor virtuele-machineschaalsets voor meer informatie.
Het is belangrijk dat u zowel de huidige als de doelclustercertificaten installeert op de virtuele machines van elk knooppunttype van het cluster voordat u wijzigingen aanbrengt in de certificaatdeclaraties van het cluster. Het traject van certificaatuitgifte naar inrichting naar een Service Fabric-knooppunt wordt uitgebreid besproken in het traject van een certificaat.
Breng het cluster naar een optimale beginstatus
Het converteren van een certificaatdeclaratie van vingerafdrukgebaseert naar CN-effecten:
- Hoe elk knooppunt in het cluster de referenties voor andere knooppunten vindt en weergeeft.
- Hoe elk knooppunt de referenties van zijn tegenhanger valideert bij het tot stand brengen van een beveiligde verbinding.
Bekijk de presentatie- en validatieregels voor beide configuraties voordat u verdergaat. De belangrijkste overweging bij het uitvoeren van een vingerafdruk-naar-CN-conversie is dat bijgewerkte en nog niet bijgewerkte knooppunten (dat wil gezegd knooppunten die behoren tot verschillende upgradedomeinen) op elk gewenst moment geslaagde wederzijdse verificatie kunnen uitvoeren tijdens de upgrade. De aanbevolen manier om dit gedrag te bereiken, is door het doel- of doelcertificaat te declareren via vingerafdruk in een eerste upgrade. Voltooi vervolgens de overgang naar CN in een volgende. Als het cluster al een aanbevolen beginstatus heeft, kunt u deze sectie overslaan.
Er zijn meerdere geldige beginstatussen voor een conversie. De invariant is dat het cluster al gebruikmaakt van het doelcertificaat (gedeclareerd door vingerafdruk) aan het begin van de upgrade naar CN. We overwegen GoalCert
, OldCert1
en OldCert2
in dit artikel.
Geldige beginstatussen
Thumbprint: GoalCert, ThumbprintSecondary: None
Thumbprint: GoalCert, ThumbprintSecondary: OldCert1
, waarbijGoalCert
een latereNotBefore
datum dan die vanOldCert1
Thumbprint: OldCert1, ThumbprintSecondary: GoalCert
, waarbijGoalCert
een latereNotBefore
datum dan die vanOldCert1
Notitie
Vóór versie 7.2.445 (7.2 CU4) heeft Service Fabric het meest verlopende certificaat geselecteerd (het certificaat met de meest verre eigenschap 'NotAfter'), zodat voor de bovenstaande beginstatussen vóór 7.2 CU4 GoalCert een latere NotAfter
datum moet hebben dan OldCert1
Als uw cluster zich niet in een van de eerder beschreven geldige statussen bevindt, raadpleegt u informatie over het bereiken van die status in de sectie aan het einde van dit artikel.
Selecteer het gewenste certificaatvalidatieschema op basis van CN
Zoals eerder beschreven, ondersteunt Service Fabric het declareren van certificaten door CN met een impliciet vertrouwensanker of met het expliciet vastmaken van de vingerafdruk van de verlener. Zie Declaraties voor certificaatvalidatie op basis van algemene namen voor meer informatie.
Zorg ervoor dat u goed inzicht hebt in de verschillen en de implicaties van het kiezen van een van beide mechanismen. Syntactisch wordt dit verschil of deze keuze bepaald door de waarde van de certificateIssuerThumbprintList
parameter. Leeg betekent dat u afhankelijk bent van een vertrouwde basis-CA (vertrouwensanker), terwijl een set vingerafdrukken de toegestane directe verleners van clustercertificaten beperkt.
Notitie
In certificateIssuerThumbprint
het veld kunt u de verwachte directe verleners van certificaten opgeven die door de onderwerp-CN zijn gedeclareerd. Acceptabele waarden zijn een of meer door komma's gescheiden SHA1-vingerafdrukken. Met deze actie wordt de certificaatvalidatie versterkt.
Als er geen verleners zijn opgegeven of als de lijst leeg is, wordt het certificaat geaccepteerd voor verificatie als de keten kan worden gebouwd. Het certificaat komt vervolgens terecht in een basis die wordt vertrouwd door de validator. Als een of meer verlenervingers zijn opgegeven, wordt het certificaat geaccepteerd als de vingerafdruk van de directe uitgever, zoals geëxtraheerd uit de keten, overeenkomt met een van de waarden die in dit veld zijn opgegeven. Het certificaat wordt geaccepteerd, ongeacht of de basis wordt vertrouwd of niet.
Een PKI kan verschillende certificeringsinstanties (ook wel verleners genoemd) gebruiken om certificaten met een bepaald onderwerp te ondertekenen. Daarom is het belangrijk om alle verwachte vingerafdruk van verleners voor dat onderwerp op te geven. Met andere woorden, het vernieuwen van een certificaat is niet gegarandeerd door dezelfde verlener als het certificaat dat wordt vernieuwd.
Het opgeven van de verlener wordt beschouwd als een best practice. Het weglaten van de verlener blijft werken voor certificaten die zijn gekoppeld aan een vertrouwde basis, maar dit gedrag heeft beperkingen en kan in de nabije toekomst worden uitgefaseerd. Clusters die zijn geïmplementeerd in Azure, beveiligd met X509-certificaten die zijn uitgegeven door een persoonlijke PKI en gedeclareerd door het onderwerp, kunnen mogelijk niet worden gevalideerd door Service Fabric (voor communicatie tussen clusters). Voor validatie moet het certificaatbeleid van de PKI detecteerbaar, beschikbaar en toegankelijk zijn.
De Azure Resource Manager-sjabloon van het cluster bijwerken en implementeren
Beheer uw Service Fabric-clusters met ARM-sjablonen (Azure Resource Manager). Een alternatief, dat ook JSON-artefacten gebruikt, is Azure Resource Explorer. Een equivalente ervaring is momenteel niet beschikbaar in Azure Portal.
Als de oorspronkelijke sjabloon die overeenkomt met een bestaand cluster niet beschikbaar is, kan een equivalente sjabloon worden verkregen in Azure Portal. Ga naar de resourcegroep die het cluster bevat en selecteer Sjabloon exporteren in het menu Automation aan de linkerkant. Selecteer vervolgens de gewenste resources. De virtuele-machineschaalset en clusterbronnen moeten minimaal worden geëxporteerd. De gegenereerde sjabloon kan ook worden gedownload. Voor deze sjabloon zijn mogelijk wijzigingen vereist voordat deze volledig kan worden geïmplementeerd. De sjabloon komt mogelijk ook niet exact overeen met de oorspronkelijke sjabloon. Dit is een weerspiegeling van de huidige status van de clusterresource.
De benodigde wijzigingen zijn als volgt:
- De definitie van de Service Fabric-knooppuntextensie bijwerken (onder de virtuele-machineresource). Als het cluster meerdere knooppunttypen definieert, moet u de definitie van elke bijbehorende virtuele-machineschaalset bijwerken.
- De definitie van de clusterresource bijwerken.
Hier vindt u gedetailleerde voorbeelden.
De resources van de virtuele-machineschaalset bijwerken
Van:
"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')]"
}
},
...
}
},
Aan:
"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')]"
}
},
...
}
},
De clusterresource bijwerken
Voeg in de resource Microsoft.ServiceFabric/clusters een eigenschap certificateCommonNames toe met een commonNames-instelling en verwijder de certificaateigenschap helemaal (alle instellingen).
Van:
{
"apiVersion": "2018-02-01",
"type": "Microsoft.ServiceFabric/clusters",
"name": "[parameters('clusterName')]",
"location": "[parameters('clusterLocation')]",
"dependsOn": [
...
],
"properties": {
"addonFeatures": [
...
],
"certificate": {
"thumbprint": "[parameters('certificateThumbprint')]",
"x509StoreName": "[parameters('certificateStoreValue')]"
},
...
Aan:
{
"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')]"
},
...
Zie Een Service Fabric-cluster implementeren dat gebruikmaakt van algemene certificaatnaam in plaats van vingerafdruk voor meer informatie.
De bijgewerkte sjabloon implementeren
Implementeer de bijgewerkte sjabloon opnieuw nadat u de wijzigingen hebt aangebracht.
$groupname = "sfclustertutorialgroup"
New-AzResourceGroupDeployment -ResourceGroupName $groupname -Verbose `
-TemplateParameterFile "C:\temp\cluster\parameters.json" -TemplateFile "C:\temp\cluster\template.json"
Een geldige beginstatus verkrijgen voor het converteren van een cluster naar certificaatdeclaraties op basis van CN
Beginstatus | Upgrade 1 | Upgrade 2 |
---|---|---|
Thumbprint: OldCert1, ThumbprintSecondary: None en GoalCert een latere NotBefore datum heeft dan OldCert1 |
Thumbprint: OldCert1, ThumbprintSecondary: GoalCert |
- |
Thumbprint: OldCert1, ThumbprintSecondary: None en OldCert1 een latere NotBefore datum heeft dan GoalCert |
Thumbprint: GoalCert, ThumbprintSecondary: OldCert1 |
Thumbprint: GoalCert, ThumbprintSecondary: None |
Thumbprint: OldCert1, ThumbprintSecondary: GoalCert , waarbij OldCert1 een latere NotBefore datum is dan GoalCert |
Upgraden naar Thumbprint: GoalCert, ThumbprintSecondary: None |
- |
Thumbprint: GoalCert, ThumbprintSecondary: OldCert1 , waarbij OldCert1 een latere NotBefore datum is dan GoalCert |
Upgraden naar Thumbprint: GoalCert, ThumbprintSecondary: None |
- |
Thumbprint: OldCert1, ThumbprintSecondary: OldCert2 |
Een van OldCert1 de statussen verwijderen of OldCert2 de status ophalen Thumbprint: OldCertx, ThumbprintSecondary: None |
Doorgaan vanaf de nieuwe beginstatus |
Notitie
Voor een cluster op een versie vóór versie 7.2.445 (7.2 CU4), vervangt NotBefore
NotAfter
u door in de bovenstaande statussen.
Zie Certificaten beheren in een Azure Service Fabric-cluster voor instructies over het uitvoeren van een van deze upgrades.
Volgende stappen
- Meer informatie over clusterbeveiliging.
- Meer informatie over het overrollen van een clustercertificaat op algemene naam.
- Meer informatie over het configureren van een cluster voor automatisch inschrijven zonder aanraakscherm.