I'm told a root CA keeps they public/private keys totally offline. Not sure how this works with the chain of trust:

  1. Root CA signs CA2's certificate, verifying CA2's public key
  2. CA2 signs Bob's certificate, verifying Bob's public key
  3. Bob uses his private key to send message to Alice, and includes his certificate
  4. Alice wants to ensure message came from Bob, and that Bob can be trusted
  5. Alice trusts root CA
  6. Alice uses CA2's public key to verify Bob's certificate was trusted by CA2
  7. Not sure: How does Alice know she can trust CA2 without verifying CA2's certificate using Root CA's public key?
  8. Alice now trusts that Bob's certificate is trusted, and can use Bob's public key, contained within, to validate the message hasn't been tampered with.

marked as duplicate by techraf, Matthew, Rory Alsop Dec 6 '16 at 12:01

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.


I'm told a root CA keeps they public/private keys totally offline.

It is not a question of online vs. offline but secret vs. public. The private key is held private as the name suggests, i.e. it is only known to the CA. The public is public like the name suggests and it is included in the public certificate. This certificate is then installed on each client as trusted root. Insofar the public key of the root CA is not transferred during the TLS handshake (i.e. kept offline) because the client already has a copy of it and uses it as a trust anchor. But since the certificate is publicly known anyway it does not matter if it gets transferred through the internet (online). Still the client should only use the locally trusted CA as trust anchor and not some random CA transferred over the internet.


As explained by StephenUllrich, the root CA certificate holding the public key is made public to allow certificate chain validation. But the root private key is a highly sensitive material, because it can validate other certificates (generally intermediate certificates) and is used to revoke them if they came to be compromised. The problem is that it is hard to revoke (who could sign the Certificate Revocation List?). For that reason, best practices recommend to store it offline in a physical safe to make it inaccessible to remote attacks.


How does Alice know she can trust CA2 without verifying CA2's certificate using Root CA's public key?

Alice is supposed to have Root CA's public key. It is Root CA's private key that is offline.


If I understand you correctly, your main question is where does trust begin, or in other words why/how should Alice trust the root CA the first place. In the following link you can see a description of how it is done in browsers: Getting a Root CA accepted in systems and browsers

In simple terms you accept the root certificate as trusted. While browsing the internet, your favorite browser does this for you. If you build your own system, then you decide who is the root authority.

Since everyone can trust the root CA now, it can also be kept offline as it is not actively participating in any verification of digital signatures. Only its public key is known to everyone so that trust can propagate.

It is tempting to find real life examples of how this works too. For example consider a wolf pack. There is always a leader who can introduce new members and is trusted by every other member of the pack. This wolf can be the root CA in your case. Even if the leader wolf is gone hunting (offline mode), the pack is still bound together and continue to trust each other.

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