# Digital Certificate Chain Verification

Does a certificate contain the complete chain of all certificates up to the trusted root certificate, or does the program that verifies certificates have to fetch each parent certificate individually in the chain to reach a trusted root certificate?

-

## 1 Answer

In Theory
In theory, either method works and has its advantages and disadvantages. Sending the entire chain up to the root means the other party (e.g., web browser) has everything they need to do the validation. A disadvantage is that more bandwidth is used.

Sending only the one certificate could yield better bandwidth usage (the verifying party still has to request other certs in the chain, but these could be cached). But, the certificates then must embed information on how to retrieve the next link in the chain. This creates problems because if that information ever changes. In the case of SSL, then, the server would have to constantly be checking if the location was still valid and accessible. This could lead to DOS attacks on any server in the certification chain causing the server to be inaccessible.

In Practice
I'm not exactly sure how existing protocols do this. It seems that SSL requires you to install the entire chain on the server (e.g., instructions for apache).

-
The certificate wouldn't need to be resigned; the site just needs to change where it tells the browsers to find the other certificates. $\:$ –  Ricky Demer Aug 14 '12 at 6:45
@RickyDemer, thinking about it again, I believe you are right. Initially I figured that if the locations were not part of what was signed (i.e., locations were not authenticated) an attacker could leverage this to potentially defeat the system. But, even in SSL, the entire chain is not authenticated, so an attacker could replace one of the certs in the chain and not defeat the system. I will correct my answer. –  mikeazo Aug 14 '12 at 11:30