1

Pretend I take the same CSR and send it to two different CAs as described in the following scenario:

  1. I create a CSR on Windows
  2. I submit the CSR and edit my SAN names. Request is pending at the CA
  3. wait 2 hours. still pending
  4. Submit CSR previously sent in step #1 to CA #2
  5. Change the SAN names again, but make it a little different (order, etc) than in CA #1 above

I then get an approval, signed public key. A technician adds this cert to IIS or the Cert store. From this point onward, all "Exports" are joined to this public / private keypair.

A few hours later the certificate is sent from CA #2. Both certificates are "valid"

Normally, I would just start this entire process over without thinking about it, but think it would be good to know if it's possible to re-link the public certificate (from step 5) with the private key.

Question

  1. Do I have to worry about revocation?
  2. Can I relink a private key to a new public one?
2
  • 1
    They're a pair for a reason. If multiple public keys could work with a single private key I feel like the cryptography community would explode.
    – RoraΖ
    Commented Mar 11, 2015 at 18:58
  • @raz I clarified.. I hope. Not trying to break RSA or change the public key, just the PKI certificate that is used. Commented Mar 11, 2015 at 19:02

1 Answer 1

3

It is perfectly possible to have the same public key in several distinct certificates. Mathematically, the public and private key are linked (in RSA parlance, they use the same modulus) and there is nothing that you can do for or against it. It just is.

Technically, a given machine may store certificates and private keys in some dedicated structures, and a private key should somehow be linked to the certificate, and/or vice versa, so that applications can get things going without much ambiguity.

In the Windows world (CryptoAPI and CNG), the link is from the certificate (in the "My" certificate store) to the private key (in an old-style CryptoAPI CSP, or a new-style CNG KSP). It is perfectly possible to have multiple certificates pointing at the same private key; this is even the normal situation in case of certificate renewal without creating a new key pair. Links from certificates to private keys can be set semi-automatically with certutil with the -repairstore sub-command (normally the certificate issuance process keeps track of the request and sets the link properly, but in some cases the link must be restored). It can also be done programmatically. The link is done by name (the "container name" in Microsoft terminology).

In PKCS#11 systems (e.g. Firefox, and most certificate-based things in Linux that are not purely software), certificates and keys are linked by virtue of having the same CKA_ID attribute, and since that attribute is supposed to be unique for a given object type, you may have trouble having two certificates simultaneously that point at the same private key.

In any case, a number of hardware devices that store and use private keys (in particular smart card) cannot really keep a many-to-one relationship from certificates to keys. Even with Windows' "Base Smart Card Provider" and its "MiniDriver" companion API, it is expected that only one certificate at a time may be stored on a smart card with a link to the private key. However, one can still have copies of multiple certificates in the certificate store (on the machine, not on the smart card), all pointing at the private key on the smart card.

Revocation is on per-certificate basis. What is revoked is the certificate (i.e. the binding between your key and your identity), not the key. Of course, if several CA have issued certificates that bind your key to your name, and your key gets stolen, then you would like all these certificates to be revoked. However, if one CA revokes your certificate for some other reason (e.g. you failed to pay a yearly "certificate maintenance" fee), then this has no impact on the revocation status of certificates issued by other CA, even if they contain the same name (yours) and the same public key (also yours) as the revoked certificate.

2
  • From a CA perspective, the ability to issue multiple certificates based on the same key would probably be constrained by software. (e.g. different Certificate templates, or a user sends in multiple renewals with the same CSR). Do you have any knowledge on how CA software would handle this? The client background you provided is more than I could hope for, and is awesome to know Commented Mar 11, 2015 at 19:38
  • 1
    In general, CA have no problem with issuing many certificates containing the same public key. In fact, I am not aware of any existing PKI system that checks whether public keys change or not in successive certificates, let alone that keys are reused in distinct certificates. Commented Mar 11, 2015 at 19:41

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .