Developer ID Application Issue: Repeatedly getting the same certificate

When updating our Developer ID Application certificate, we encountered an issue where the Apple Developer portal consistently returns the exact same certificate file, regardless of the CSR submitted.

Observed Behavior & Test Steps:

We generated multiple new CSRs using both OpenSSL in the command line and Keychain Access (Certificate Assistant) on macOS following Apple's official guide: https://developer.apple.com/help/account/certificates/create-a-certificate-signing-request

We uploaded these distinct CSRs to the Developer Portal (Certificates -> Add New -> Developer ID Application) on separate attempts.

After downloading the issued .cer files, we performed a binary comparison (diff/checksum) across all of them. The comparison confirmed that the downloaded certificate files are 100% binary identical across all attempts.

Key Pairing Verification:

To further verify the key pairing, we checked the public key modulus hashes of the local Private Key and the downloaded .cer file via OpenSSL:

Check local Private Key Modulus Hash:

openssl rsa -noout -modulus -in new_developer_id.key | openssl md5

Check downloaded Certificate Modulus Hash:

openssl x509 -noout -modulus -in developer_identity.cer -inform DER | openssl md5

The resulting MD5 hashes do not match. Attempting to export them to PKCS#12 (.p12) consistently fails with the error:

no certificate matches private key.

Question:

Could this be related to a profile caching or binding issue on our team account, or is there a recommended way to clear this state and obtain a newly issued certificate?

Any guidance or advice would be greatly appreciated.

Answered by DTS Engineer in 907463022

Thanks for that info. Your description of your situation matches my view of your account. Specifically, I see four valid Developer ID Application certificates, all of which expire on 2031-09-15. Their hex serial numbers are:

  • 2DC1________________________3A21
  • 39C0________________________CFD7
  • 0DD8________________________42AD
  • 5A78________________________8038
Because we are aware of the strict limit on Developer ID certificates, we halted further attempts

Wise move!

Currently, we see 4 Developer ID Application certificates listed under our Team ID in the portal.

OK. If you click on one it shows the certificate info plus a Download button, right? And your problem is that each of those Download buttons yields the same certificate, right?

Each of those certificate info pages should have a unique URL. For example, I see this:

https://developer.apple.com/account/resources/certificates/download/43L673H5XU

where 43L673H5XU identifies my specific certificate. Do you see different identifiers for each of the four certificates?

On the certificate info page, when you hover over the Download button, the Safari status bar (choose View > Show Status Bar if it’s not visible) shows the download action URL. For example, in my case I see a URL like this:

https://developer.apple.com/services-account/QH65B2/account/mac/certificate/downloadCertificateContent.action?
teamld=SKMME9E2Y8
&certificateld=43L673H5XU
&type=3RA4WT43AH

The certificateId parameter should be different for each of the four certificates, and match the last path element of the certificate’s download page. Is that what you see?


Also, in Xcode > Settings > Apple Accounts > YOUR_ACCOUNT > YOUR_TEAM you’ll see a Manage Certificates button. If you click that, does the resulting sheet show four Developer ID Application certificates?

If so, try secondary clicking and choosing Export Certificate on each one. Does that yield four copies of the same certificate? Or the four new ones?

Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

What high-level goal are you trying to achieve? Update your Developer ID signing identity because it’s about to expire?

I’m asking because you have to be really careful when dealing with Developer ID signing identities because there’s a hard limit on how many you can create. I discuss this, and a lot more in The Care and Feeding of Developer ID.

I presume you’re working for Team ID M________9 here. If so, how many Developer ID certificates do you see listed in the portal?

Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Hi,

Thank you so much for stepping in!

Yes, I am working for Team ID M________9.

Here are the details to your questions:

  1. High-Level Goal:

Our current Developer ID Application certificate has already expired, so we urgently need to issue a new signing identity to build and sign our macOS software releases. However, across all 4 attempts with distinct CSRs, the newly downloaded certificate files consistently carry the exact same expired expiration date as our old certificate, rather than issuing a fresh one.

  1. Certificates Listed in Portal:

Currently, we see 4 Developer ID Application certificates listed under our Team ID in the portal.

Because we are aware of the strict limit on Developer ID certificates, we halted further attempts as soon as we noticed that the portal was repeatedly returning the same expired certificate file.

We would greatly appreciate your guidance on how to safely clear this stuck state or reset the identity for our team so we can obtain a functional certificate.

Thanks again for your support!

Accepted Answer

Thanks for that info. Your description of your situation matches my view of your account. Specifically, I see four valid Developer ID Application certificates, all of which expire on 2031-09-15. Their hex serial numbers are:

  • 2DC1________________________3A21
  • 39C0________________________CFD7
  • 0DD8________________________42AD
  • 5A78________________________8038
Because we are aware of the strict limit on Developer ID certificates, we halted further attempts

Wise move!

Currently, we see 4 Developer ID Application certificates listed under our Team ID in the portal.

OK. If you click on one it shows the certificate info plus a Download button, right? And your problem is that each of those Download buttons yields the same certificate, right?

Each of those certificate info pages should have a unique URL. For example, I see this:

https://developer.apple.com/account/resources/certificates/download/43L673H5XU

where 43L673H5XU identifies my specific certificate. Do you see different identifiers for each of the four certificates?

On the certificate info page, when you hover over the Download button, the Safari status bar (choose View > Show Status Bar if it’s not visible) shows the download action URL. For example, in my case I see a URL like this:

https://developer.apple.com/services-account/QH65B2/account/mac/certificate/downloadCertificateContent.action?
teamld=SKMME9E2Y8
&certificateld=43L673H5XU
&type=3RA4WT43AH

The certificateId parameter should be different for each of the four certificates, and match the last path element of the certificate’s download page. Is that what you see?


Also, in Xcode > Settings > Apple Accounts > YOUR_ACCOUNT > YOUR_TEAM you’ll see a Manage Certificates button. If you click that, does the resulting sheet show four Developer ID Application certificates?

If so, try secondary clicking and choosing Export Certificate on each one. Does that yield four copies of the same certificate? Or the four new ones?

Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"

Hi,

That was the magic touch!

We re-checked the portal following your instructions:

Verified that each certificateId in the URL was unique for all 4 certificates.

Re-downloaded all 4 certificate files from the portal.

This time, the downloaded .cer files were indeed distinct and matched the newly generated serial numbers! We were able to successfully import the new certificate into Keychain and pair it with our private key for signing.

The issue is now completely resolved. Thank you so much for your invaluable assistance and guidance in isolating this!

Thanks again for your support!