Dela via


Rotera signeringsnycklar

I den här artikeln granskar vi stegen för att rotera dina Microsoft Entra – verifierat ID signeringsnycklar.

Förutsättningar

Rotera signeringsnycklarna

De offentliga nycklarna är tillgängliga i dokumentet för decentraliserad identifierare (DID) för alla som behöver verifiera signaturer som skapats av en utfärdare. För en utfärdare som använder did:web metoden är DID-dokumentet tillgängligt på https://contoso.com/.well-known/did.json, där contoso.com är ett exempel.

Verifierat ID bör inte börja signera med hjälp av den nya nyckeln förrän en uppdaterad version är offentligt tillgänglig på webbservern. Om du använder en distribution i flera regioner, kanske med Azure Content Delivery Network, kan det ta lite tid innan distributionsprocessen uppdateras did.json .

För att hjälpa administratörer att rotera signeringsnycklar utan avbrott i tjänsten följer rotationsprocessen följande steg:

  1. Anropa signingKeys/rotate API för att skapa en ny signeringsnyckel i Key Vault. Åtkomsttoken i anropet måste vara för en administratörsanvändare med åtkomst till nycklar i nyckelvalvet. Den här åtgärden anger en ny aktuell nyckel i nyckelvalvet. Den tidigare nyckeln flyttas till äldre nycklar, men den kan fortfarande aktiveras. Svaret är utfärdarens JSON-objekt med attributet didDocumentStatus med ett outOfSync värde, vilket indikerar att det finns en avvikelse mellan Key Vault och det offentligt tillgängliga did.json dokumentet.

    Screenshot that shows a new key in Key Vault.

  2. Gå till Installation i portalen för verifierat ID. Välj Registrera decentraliserat ID och kopiera eller ladda ned den uppdaterade did.json filen. Den innehåller nu de nya och gamla nycklarna.

    Screenshot that shows did.json.

  3. Ersätt did.json på alla webbservrar där den tidigare distribuerades. Om du redigerade den manuellt kontrollerar du att den fortfarande har en giltig JSON-syntax med hjälp av ett verktyg som https://jsonformatter.org/. Innan du fortsätter kontrollerar du att du kan hämta det nya did.json dokumentet från Internet med en webbläsare.

  4. Anropa API:et synchronizeWithDidDocument för att börja använda den nya signeringsnyckeln. Det här API-anropet verifierar att Key Vault och det offentliga did.json dokumentet matchar. Om de matchar börjar den verifierade ID-utfärdaren signera med hjälp av den nya nyckeln i Key Vault. JSON-objektet didDocumentStatus i den returnerade utfärdaren har värdet published. Om värdet fortfarande är outOfSync, finns det en avvikelse mellan Key Vault och did.json dokumentet och den tidigare nyckeln används fortfarande för signering.

Behöver jag rotera nycklar i verifierat ID?

Tekniskt sett behöver du inte rotera signeringsnycklar i verifierat ID om du använder din egen Key Vault-instans. Den aktuella signeringsnyckeln upphör inte att gälla. Precis som med alla offentliga/privata nyckellösningar är det bästa praxis att rotera nycklar med jämna mellanrum.

Vad händer när jag roterar signeringsnyckeln?

När du har utfört steg 1–4 har verifierat ID en ny signeringsnyckel och alla JSON-webbtoken som signerats från den tidpunkten signeras med hjälp av den nya nyckeln. Det innebär att utfärdande- och presentationsbegäranden och utfärdade autentiseringsuppgifter signeras med hjälp av den nya nyckeln.

Vad händer med autentiseringsuppgifter som signerats av den gamla nyckeln?

Utfärdade verifierade ID-autentiseringsuppgifter som signerats av en nyckel som inte längre är aktuell fortsätter att fungera om den offentliga nyckeln är tillgänglig i det offentliga did.json dokumentet och nyckeln inte inaktiveras eller tas bort i Key Vault.

Vad händer när gamla signeringsnycklar inte längre är tillgängliga?

Om en nyckel som användes för att signera en utfärdad verifierad ID-autentiseringsuppgift inte finns i det offentliga did.json dokumentet misslyckas alla verifieringsförsök eftersom kontrollanten inte kan matcha den offentliga nyckeln som används som signatur. Det finns två scenarier att känna till.

För det första: Verifierat ID har en gräns på 10 nycklar som kan användas internt. De består av en aktuell nyckel och nio tidigare nycklar. Om Key Vault innehåller 12 nycklar läses verifierat ID bara in och använder de första 10. Du kan inte redigera did.json dokumentet manuellt för att lägga till gamla nycklar eftersom det leder till ett matchningsfel mellan vad verifierat ID läses in och vad did.json dokumentet innehåller. Om du försöker anropa synchronizeWithDidDocument i det här fallet returneras didDocumentStatusoutOfSync.

Anta till exempel att du har 12 nycklar i Key Vault och vill att verifierat ID inte ska läsa in nycklar 8 och 9 i listan med nycklar. Du måste inaktivera nycklarna 8 och 9 i Key Vault och sedan utföra steg 2–4.

För det andra: Om du roterar nycklar 12 gånger i det här exemplet läser verifierat ID inte in de två äldsta nycklarna längre. Verifierade ID-autentiseringsuppgifter som utfärdats med dessa två nycklar kan inte verifieras längre.

Kommentar

Din nyckelroteringsprincip måste samordnas med livslängden för utfärdade verifierade ID-autentiseringsuppgifter så att autentiseringsuppgifterna förnyas eller utfärdas igen innan en gammal nyckel dras tillbaka. Ett exempel på en lösning som inte fungerar är att utfärda verifierade ID-autentiseringsuppgifter med ett förfallodatum 12 månader bort och samtidigt har en nyckelroteringsprincip för att rotera nycklar varje månad. En sådan lösning är i trubbel de sista två månaderna på året eftersom gamla nycklar inte längre är tillgängliga.

Kan jag rotera nycklar direkt i Key Vault i stället för att anropa API:et för verifierat ID?

Du bör inte använda rotationsfunktionen i Key Vaults administratörsportal. Verifierat ID utför fler uppgifter när det anropar API:et /signingKeys/rotate än att bara rotera nyckeln i Key Vault.

Nästa steg