Information Security Stack Exchange is a question and answer site for information security professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

In X.509 architecture what are the uses of cross signing certificates from other hierarchy?

Does it just expand trust?

So from the answer I am assuming that if CA3 is cross signed by CA2 (from another hierarchy) and CA1 (a parent in its own hierarchy) whose private key is used to encrypt the authentication hash in the certificate of CA3?

share|improve this question
up vote 21 down vote accepted

It's about expanding trust, yes. If you trust both CA1 and CA2, and a cert is signed by both, you've got a very high level of trust because two seaparate entities that you trust have verified the cert.

It has the added bonus of increasing the ease of verification of trust, such as situations where you've got clients that trust CA1 or CA2 (but not both). In such a case, you can cross-sign a cert to be trusted by both. This allows more clients to verify trust without having to distribute separate certs for different CAs.

Another bonus is in situations where a CA's private key is leaked. Let's say CA1's key leaks and your cert is signed by CA1 and CA2. In the wake of the leak, CA1 issues a revokation for its public key and you can no longer trust anything issued by CA1. However, since your cert is cross-signed to CA2 as well, any client that trusts CA2 can still maintain a level of trust in your cert.

share|improve this answer
I think I said "trust" too much... o.o` – Polynomial Apr 22 '12 at 11:26
please check the edit – zcqwevb Apr 22 '12 at 12:15
I'm pretty sure (though you'll probably want to dig into the specs to verify this) that there end up being two copies of the hash, each signed by a separate CA. – Polynomial Apr 22 '12 at 12:54

The X.509 specs only support one signature. From the RFC concerning them:

   Certificate  ::=  SEQUENCE  {
        tbsCertificate       TBSCertificate,
        signatureAlgorithm   AlgorithmIdentifier,
        signatureValue       BIT STRING  }

To support multiple signatureValue's you'd have to do something like "signatureValue SEQUENCE OF BIT STRING" and make a few other changes too.

If you have an X.509 cert that's been signed by multiple CA's I'd love to see it and do a little asn1parse on it!

share|improve this answer
You can still have cross signing, where another CA signs your CA certificate with the same public key and the same Subject DN, it will be another cert with a different issuer. See last paragraphs of this section: – Bruno Apr 23 '12 at 16:51
@Bruno I remembered this question when I was at InfoSec earlier this year, and asked around. Amusingly, the Verisign tech guy was completely stumped by this concept. D'oh! Thanks for clarifying how it's done. – Polynomial Jul 10 '12 at 15:58

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.