I am surprised that I couldn't find one concrete example of how to do root certificate rotation. For example:
- Root CA has 2 years validity period
- Intermediate CA has 9 months validity period
- leaf certificate has a 3 months validity period
The renwal/replace time are:
- Root CA is going to be replaced every 1 year
- Intermediate CA is going to be replaced every 6 months
- leaf certificate is going to be renewed every 2 months
- 1 month buffer for service to renew its certificate before the certificate expires.
- 3 months buffer for intermediate CA to sign new service certificate. By the time the old intermediate CA expire, all the old issued certificates are expired as well.
- 1 year buffer to distribute the new root certificates to client. We want to give enough time for clients to pull the new root certificate before the old one expires.
- We have root 1 and root 2 overlapped for 1 year, when should we start signing new CSR using root 2 certificate?
If the one year overlapped time is just for cert distribution, by the time root 1 expired, all clients should already have root 2 trusted. However, by the time root 1 expires, we haven't signed any new server certificates with root 2. It means when the time root 1 expires, all the services will be down. I guess we will need to ensure all services are using cert from root 2 before we can retire root 1? and we also have to ensure all clients have root 2 key before issuing server certificates using root 2? I think that makes sense but in terms of timeline, how should we managed that? In the 1 year overlapped time, maybe we can do 6 months distribution time, and 6 months signing time. so by the time root 1 retire, everything will be running on root 2 already?
And if we are using private CA, (lets say AWS private CA) , do we need to implement a service to ensure things above will happen?
Given that we own all the clients and servers.