1

Consider the following scenario

OpenSSL and x.509v3 is used.

You have 2 CA's: CA1 and CA2. Both CA's have cross signed each other,
meaning CA1 has signed CA2 and CA2 has signed CA1.

When CA1 signed CA2, it added a CRL and OCSP entry into the certificate.
When CA2 signed CA1, it added a CRL and OCSP entry into the certificate.

CA1 issues a certificate to Subordinate CA1.

Subordinate CA1 issues an End-Entity certificate to Server1.

Server2 tries to authenticate Server1's certificate and sees that it is
signed by Subordinate CA1 which in turn is signed by CA1 which in turn
is signed by CA2. Both CA1 and CA2 is in Server2's trust store, so the
certificate is verified.

CA1's private key is compromised.

Server2 removes CA1 from its trust store.

Server2 tries to authenticate Server1's certificate and sees that is is
signed by Subordinate CA1 which in turn is signed by CA1 which in turn
is signed by CA2.

What action does Server2 take?

I would like to think that Server2 does not allow/verify Server1's certificate, because CA1 is no longer in the trust store. However, given that CA1 is cross signed by CA2, and CA2 is still in the trust store, one could argue that the chain of trust is still there (the fact that Server1 doesn't include CA1 in it's certificate bundle when connecting to Server2 might make Server2 decide to not verify it).

What if, in addition to removing CA1 from the trust stores, we also have CA2 revoke CA1 through its CRL and OCSP responder?

My fear is that by cross signing, my only option to take a compromised CA out of rotation is to take both the compromised CA and the CA that signed it out of rotation. Which would be... suboptimal...

1 Answer 1

2

With the self-signed CA1 removed from server2's trust anchor store, then to server2, CA1 is just another intermediate CA which in this case is signed by CA2.

Server 2 will build the chain to be:

server1 >(signed by)> subordinate CA1 >(signed by)> CA1 >(signed by)> CA2 (trust anchor)

To ensure CA1 is not trusted, you will need to have CA2 revoke its certificate.

You must log in to answer this question.

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