Ondertekeningssleutel draaien
In dit artikel bekijken we de stappen voor het roteren van uw Microsoft Entra geverifieerde ID ondertekeningssleutels.
Vereisten
- Geverifieerde id-instantie wordt handmatig ge onboardd en de ondertekeningssleutels bevinden zich in uw eigen Azure Key Vault-exemplaar. Snelle installatie maakt gebruik van een gedeelde ondertekeningssleutel, beheerd door Microsoft, die u niet zelf kunt draaien.
- De gebruiker van de beheerder die sleutelrotatie uitvoert, moet zijn gemachtigd voor de sleutels in Key Vault.
De ondertekeningssleutels draaien
De openbare sleutels zijn beschikbaar in het document met de gedecentraliseerde id (DID) voor iedereen die handtekeningen moet verifiëren die zijn geproduceerd door een verlener. Voor een instantie die de did:web
methode gebruikt, is het DID-document beschikbaar op https://contoso.com/.well-known/did.json
, waarbij contoso.com een voorbeeld is.
Geverifieerde id mag pas beginnen met ondertekenen met behulp van de nieuwe sleutel als een bijgewerkte versie openbaar beschikbaar is op de webserver. Als u een implementatie met meerdere regio's gebruikt, mogelijk met Azure Content Delivery Network, kan het enige tijd duren voordat uw implementatieproces is bijgewerkt did.json
.
Om beheerders te helpen bij het rouleren van ondertekeningssleutels zonder serviceonderbrekingen, volgt het roulatieproces de volgende stappen:
Roep de signingKeys/roteer-API aan om een nieuwe ondertekeningssleutel te maken in Key Vault. Het toegangstoken in de aanroep moet voor een beheerder zijn met toegang tot sleutels in de sleutelkluis. Met deze actie wordt een nieuwe huidige sleutel ingesteld in de sleutelkluis. De vorige sleutel wordt verplaatst naar oudere sleutels, maar kan nog steeds worden ingeschakeld. Het antwoord is het JSON-object authority met het kenmerk
didDocumentStatus
met eenoutOfSync
waarde, wat aangeeft dat er een discrepantie is tussen Key Vault en het openbaar beschikbaredid.json
document.Ga naar Setup in de geverifieerde id-portal. Selecteer Gedecentraliseerde id registreren en kopieer of download het bijgewerkte
did.json
bestand. Het bevat nu de nieuwe en de oude sleutels.Vervang
did.json
op alle webservers waar deze eerder is geïmplementeerd. Als u deze handmatig hebt bewerkt, moet u ervoor zorgen dat deze nog steeds geldige JSON-syntaxis heeft met behulp van een hulpprogramma zoalshttps://jsonformatter.org/
. Voordat u doorgaat, moet u ervoor zorgen dat u het nieuwedid.json
document met een browser op internet kunt ophalen.Roep de syncWithDidDocument-API aan om de nieuwe ondertekeningssleutel te gebruiken. Met deze API-aanroep wordt gevalideerd of Key Vault en het openbare
did.json
document overeenkomen. Als deze overeenkomen, wordt de geverifieerde id-instantie gestart met het ondertekenen met behulp van de nieuwe sleutel in Key Vault. HetdidDocumentStatus
JSON-object van de geretourneerde instantie heeft een waarde vanpublished
. Als de waarde nog steeds isoutOfSync
, is er een discrepantie tussen Key Vault en hetdid.json
document en de vorige sleutel nog steeds gebruikt voor ondertekening.
Moet ik sleutels roteren in geverifieerde id?
Technisch gezien hoeft u ondertekeningssleutels niet te roteren in geverifieerde id als u uw eigen Key Vault-exemplaar gebruikt. De huidige ondertekeningssleutel verloopt niet. Net als bij elke openbare/persoonlijke sleuteloplossing is het een best practice om sleutels periodiek te roteren.
Wat gebeurt er wanneer ik de ondertekeningssleutel draai?
Nadat u stap 1-4 hebt uitgevoerd, heeft de geverifieerde id een nieuwe ondertekeningssleutel en alle JSON-webtokens die vanaf dat moment zijn ondertekend met behulp van de nieuwe sleutel. Dit betekent dat uitgifte- en presentatieaanvragen en uitgegeven referenties worden ondertekend met behulp van de nieuwe sleutel.
Wat gebeurt er met referenties die zijn ondertekend door de oude sleutel?
Geverifieerde id-referenties uitgegeven die zijn ondertekend door een sleutel die niet meer actueel is, blijven werken als de openbare sleutel beschikbaar is in het openbare did.json
document en de sleutel niet is uitgeschakeld of verwijderd in Key Vault.
Wat gebeurt er wanneer oude ondertekeningssleutels niet meer beschikbaar zijn?
Als een sleutel die is gebruikt voor het ondertekenen van een uitgegeven geverifieerde id-referentie zich niet in het openbare did.json
document bevindt, mislukt een verificatiepoging omdat de verificator de openbare sleutel die als handtekening wordt gebruikt, niet kan oplossen. Er zijn twee scenario's waar u rekening mee moet houden.
Eerste: Geverifieerde id heeft een limiet van 10 sleutels die intern kunnen worden gebruikt. Ze bestaan uit één huidige sleutel en negen vorige sleutels. Als Key Vault 12 sleutels bevat, wordt alleen geverifieerde id geladen en wordt de eerste 10 gebruikt. U kunt het did.json
document niet handmatig bewerken om oude sleutels toe te voegen, omdat dit leidt tot een onjuiste overeenkomst tussen wat geverifieerde id laadt en wat het did.json
document bevat. Als u de syncWithDidDocument probeert aan te roepen, resulteert dit in didDocumentStatus
het retourneren outOfSync
.
Stel dat u 12 sleutels in Key Vault hebt en u wilt dat geverifieerde id sleutels 8 en 9 niet laadt in de lijst met sleutels. U moet sleutels 8 en 9 uitschakelen in Key Vault en vervolgens stap 2-4 uitvoeren.
Ten tweede: Als u in dit voorbeeld sleutels 12 keer draait, worden de twee oudste sleutels niet meer geladen met geverifieerde id. Geverifieerde id-referenties die zijn uitgegeven met behulp van deze twee sleutels, kunnen niet meer worden geverifieerd.
Notitie
Uw sleutelrotatiebeleid moet worden gecoördineerd met de levensduur van uitgegeven geverifieerde id-referenties, zodat referenties worden vernieuwd of opnieuw worden uitgegeven voordat een oude sleutel buiten gebruik wordt gesteld. Een voorbeeld van een oplossing die niet werkt, is het uitgeven van geverifieerde id-referenties met een vervaldatum van 12 maanden verwijderd en tegelijkertijd een sleutelrotatiebeleid hebben om sleutels elke maand te roteren. Een dergelijke oplossing is in de problemen de laatste twee maanden van het jaar omdat oude sleutels niet meer beschikbaar zijn.
Kan ik sleutels rechtstreeks roteren in Key Vault in plaats van de Geverifieerde ID-API aan te roepen?
Gebruik de functie roteren niet in de beheerportal van Key Vault. Geverifieerde id voert meer taken uit wanneer de API /signingKeys/roteren wordt aangeroepen dan alleen de sleutel in Key Vault te roteren.