Delen via


Ondertekeningssleutel draaien

In dit artikel bekijken we de stappen voor het roteren van uw door Microsoft Entra geverifieerde id-ondertekeningssleutels.

Vereiste voorwaarden

  • Geverifieerde ID-autoriteit wordt handmatig geïntegreerd en de ondertekeningssleutels bevinden zich in uw eigen Azure Key Vault-instantie. Snelle instelling maakt gebruik van een gedeelde ondertekeningssleutel, beheerd door Microsoft, die u niet zelf kunt roteren.
  • De beheerder die sleutelrotatie uitvoert, moet toegang hebben tot de sleutels in Key Vault.

De ondertekeningssleutels roteren

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:

  1. 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 sleutel met de naam Current 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 een outOfSync waarde, wat aangeeft dat er een discrepantie is tussen Key Vault en het openbaar beschikbare did.json document.

    Schermopname van een nieuwe sleutel in Key Vault.

  2. 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.

    Schermopname van did.json.

  3. 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 zoals https://jsonformatter.org/. Voordat u doorgaat, moet u ervoor zorgen dat u het nieuwe did.json document met een browser op internet kunt ophalen.

  4. Roep de syncWithDidDocument-API aan om de nieuwe ondertekeningssleutel te gebruiken. Deze API-aanroep valideert dat Key Vault en de 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. De didDocumentStatus in het JSON-object van de geretourneerde instantie heeft een waarde van published. Als de waarde nog steeds outOfSync, is er een discrepantie tussen Key Vault en het did.json document en de vorige sleutel nog steeds gebruikt voor ondertekening.

Moet ik sleutels roteren in geverifieerde id?

Technisch gesproken hoeft u sleutels voor ondertekening 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 succesvol hebt uitgevoerd, heeft Verified ID een nieuwe ondertekeningssleutel, en alle JSON-webtokens die vanaf dat moment worden ondertekend, worden door middel van de nieuwe sleutel ondertekend. 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, laadt en gebruikt Verified ID alleen de eerste tien. 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. Het proberen aan te roepen van de syncWithDidDocument resulteert in het terugkeren van didDocumentStatus bij 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.

Tweede: In dit voorbeeld, als u de sleutels 12 keer draait, laadt Verified ID de twee oudste sleutels niet meer. Geverifieerde id-referenties die zijn uitgegeven met behulp van deze twee sleutels, kunnen niet meer worden geverifieerd.

Opmerking

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/rotate wordt aangeroepen dan alleen de sleutel in Key Vault te roteren.

Volgende stappen