Hi Erwann!

On 05/19/2011 10:20 AM, Erwann ABALEA wrote:

"old" end-user certificates can only be verified by the "old" CA
certificate, of course (in case the CA is "renewed", with its key
changed, etc).

I didn't "renew" the CA certificate, I've used the existing private key to create thr new one.

The only way I found was to give the new Root Certificate the same
serial number as the previous one.

That's forbidden by X.509 standard. And the serial number has nothing
to do with the SKI/AKI.

I agree, using the same serial number seems to be not valid.

But, according to RFC 3280 the Authority Key Identifier "MAY be based on either the key identifier ... or on the issuer name and serial number".

My Root CA Certificate and user certificates shows exactly this information:

Root CA Certificate:
--------------------
X509v3 Subject Key Identifier:
  A8:C3:14:22:3A:48:50:66:78:89:97:02:A8:B0:CE:D3:EE:FC:0F:1E
X509v3 Authority Key Identifier:
  keyid:A8:C3:14:22:3A:48:50:66:78:89:97:02:A8:B0:CE:D3:EE:FC:0F:1E
  DirName:<Root CA Subject/Issuer DN>
  serial:1C:26:30:4D:53:64:7A:83

User Certificate:
-----------------
X509v3 Subject Key Identifier:
  7C:F7:66:B5:A4:83:42:1A:FF:AA:CB:0D:07:37:8A:81:E7:48:B8:1D
X509v3 Authority Key Identifier:
  keyid:A8:C3:14:22:3A:48:50:66:78:89:97:02:A8:B0:CE:D3:EE:FC:0F:1E
  DirName:<Root CA Subject/Issuer DN>
  serial:1C:26:30:4D:53:64:7A:83

So the Root CA Certificate serial number is part of my X509v3 Authority Key Identifier.

Did you change the private key of the CA? If not, then:
  - the SKI of the new CA certificate will be the same as the old
    certificate (it's a *Key* identifier, and is generally constructed
    from the public key)

I didn't change the private key, so the X509v3 Subject Key Identifier is always the same, right.

  - you don't need to have the same serial number (remember, it's
    forbidden by X.509 standard)

Right, I've check that with RFC 2459.

  - you will be able to verify old end-user certificates with the new
    CA certificate (since the CA key didn't change), if the rest of the
    CA certificate permits it (validity dates, extensions).

This seems to be a problem if you're using openssl to verify the certificate. I've generated a new CA certificate with the same CA key as before. But only the verification with the "old" CA certificate was working.

#> openssl verify -CAfile newca.pem user_cert.pem
user_cert.pem: <User DN>
error 20 at 0 depth lookup:unable to get local issuer certificate

According to old threads on this list this message has something to do with the AKID/SKID.

If you were in this situation, and only were able to verify end-user
certificates if the new CA certificate had the same serial number as
the old one, then I'm sure you made a mistake in your tests.

I agree, maybe I did something wrong here. What steps would I have to do to recertify my CA with openssl?


Cheers,
Alex

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
User Support Mailing List                    openssl-users@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to