I performed an upgrade for a non-FIPS compliant signing key (P-256K) in Verified ID, but IDs are still being issued using the old key

笹川 浩 40 Reputation points
2026-06-23T07:21:30.9233333+00:00

Regarding the upgrade of the non-FIPS compliant signing key (P-256K), even after following the official procedure, the signing key used for VC signatures appears to remain the old P-256K key; thus, the upgrade does not seem to have succeeded.

Please advise on how to resolve this issue.

In light of the scheduled retirement of the non-FIPS compliant signing key (P-256K) on July 1, 2026, I performed the following procedure:

https://learn.microsoft.com/ja-jp/entra/verified-id/signing-key-upgrade#upgrading-the-signing-key

All steps were completed successfully without errors.

The execution results for "GET /v1.0/verifiableCredentials/authorities/<authorityId>" are as follows: {

"id": "8b0dd●●●",

"name": "●●●",

"status": "Enabled",

"didModel": {

"did": "did:web: ●●●.japaneast.cloudapp.azure.com",

"signingKeys": [

"https://vid-kv.vault.azure.net/keys/vcSigningKey-8b0dd●●●",

"https://vid-kv.vault.azure.net/keys/●●●a5c1b-vcSigningKey/a04315e00f304●●●ae03b619ea"

],

"recoveryKeys": [],

"updateKeys": [],

"encryptionKeys": [],

"linkedDomainUrls": [

"https:// ●●●.japaneast.cloudapp.azure.com/"

],

"didDocumentStatus": "published"

},

"keyVaultMetadata": {

"subscriptionId": "8b4e12b0-43a●●●652e055cab",

"resourceGroup": "verifiedid-resource-group",

"resourceName": "vid-kv",

"resourceUrl": "https://vid-kv.vault.azure.net/"

},

"linkedDomainsVerified": true,

"createdAtTimestamp": "2023-07-28T06:28:40.924Z"

}

Two signing keys are registered in the signingKeys array: the first points to the old P-256K signing key, and the second points to the newly created P-256 signing key.

The didDocumentStatus is set to "published," and I have confirmed that there are no discrepancies between the Key Vault and the did.json file.

Two signature verification keys are registered in the https:// ●●●.japaneast.cloudapp.azure.com/.well-known/did.json file (registered in Step 3), and they match the two signing keys in the signingKeys array mentioned above. Additionally, VCs signed with the older P-256K signing key issued in the past are being successfully verified using the contents of this did.json.

Furthermore, regarding the https:// ●●●.japaneast.cloudapp.azure.com/.well-known/did-configuration.json registered in Step 6, an inspection of the JWT contents indicates that it is signed with the newly created P-256 signing key.

[Header section only]

{

"alg": "ES256",

"kid": "did:web: ●●●.japaneast.cloudapp.azure.com#a04315e●●●-ec63-308b"

}

However, as shown in the image below, the "Verified ID | Organization settings" screen in the Azure Portal still displays the signing key identifier pointing to the old P-256K signing key.

[Signing Key Identifier] https://vid-kv.vault.azure.net/keys/vcSigningKey-8b0dd●●●

When a new VC is issued in this state, it appears to be signed using the old P-256K signing key.

[Header Content]

{

"alg": "ES256K",

"kid": "did:web:●●●.japaneast.cloudapp.azure.com#●●●vcSigningKey-8b0dd",

"typ": "JWT"

}

Has the signing key upgrade been successfully completed in this scenario?

Will the newly created P-256 signing key come into use on July 1, 2026?

If the signing key upgrade has not been successful, please advise me on any missing steps.

I am concerned that if the situation remains as is, VC issuance will fail when the old P-256K signing key is retired on July 1, 2026, thereby impacting operations.

Azure Key Vault
Azure Key Vault

An Azure service that is used to manage and protect cryptographic keys and other secrets used by cloud apps and services.


2 answers

Sort by: Oldest
  1. Moosa Khan 695 Reputation points Microsoft External Staff Moderator
    2026-07-14T17:08:14.1166667+00:00

    Hello 笹川 浩,

    Thank you for the additional details and the Key Vault audit logs.

    Based on the information shared, the signing key upgrade appears to have completed successfully from a configuration perspective:

    • The new P-256 signing key is present in the signingKeys collection.
    • The DID document is published and contains both verification keys.
    • The did-configuration.json JWT is signed using the new P-256 key (alg: ES256).

    However, the audit logs and issued VC headers indicate that credential issuance is still using the legacy P-256K signing key (alg: ES256K).

    Since the old key must remain available to support validation of previously issued credentials, disabling or deleting the legacy key is not a viable option in this scenario.

    At this point, the behavior suggests that the Verified ID issuance service is still referencing the legacy signing key despite the successful key upgrade configuration. We recommend engagement with the Product Group to verify:

    1. Whether the signing key upgrade has been fully applied on the service side.
    2. Whether any additional synchronization or backend processing is required.
    3. The expected timeline and behavior for migration away from legacy P-256K signing keys after the retirement date.

    Could you also confirm whether newly issued credentials are still consistently showing alg: ES256K after re-running the synchronization process and validating the latest published DID document?

    We will review further once we have confirmation from the Product Group regarding the expected post-upgrade issuance behavior.

    Thanks,
    Moosa Khan

    Was this answer helpful?

    0 comments No comments

  2. Alex Burlachenko 25,285 Reputation points MVP Volunteer Moderator
    2026-07-15T06:52:54.3366667+00:00

    hi 笹川 浩 & thx for sharing urs issue here at Q&A portal,

    from what you've shared, it looks like the upgrade completed only partially. The DID document has been updated correctly, the new P-256 key is present in the signingKeys array, didDocumentStatus is published, and the did-configuration.json JWT is already being signed with ES256. That suggests the DID publication side of the migration succeeded. The concerning part is that newly issued VCs are still being signed with ES256K, and the Azure Portal continues to show the old signing key identifier. If newly issued credentials still reference the original P-256K key, then the issuer hasn't switched to the new signing key yet.

    I'm not really aware of any customer-facing operation that forces that final switchover. Based on the current behavior, I wouldn't assume the service will automatically start using the new key on July 1. Given the retirement of P-256K, I'd recommend opening a Microsoft support case before that date and asking the Verified ID team to verify the signing key state on the backend.

    When opening the case, include the authority ID, the output from GET /v1.0/verifiableCredentials/authorities/{authorityId}, the DID document, the did-configuration.json JWT showing ES256, and an example of a newly issued VC that is still signed with ES256K. That should give the product team enough information to determine whether this is an incomplete migration or a backend issue preventing the issuer from switching to the new signing key.

    rgds,

    Alex

    &

    If my answer was helpful pls mark it and additional thx if u follow me at Q&A portal

    and at my blog https://ctrlaltdel.blog/

     

    Was this answer helpful?

    0 comments No comments

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.