TL;DR
Generally, a Certification Authority (CA) shouldn’t directly sign another CA’s certificate. It creates trust issues and defeats the purpose of a hierarchical Public Key Infrastructure (PKI). However, there are specific scenarios like cross-certification where it’s done carefully under controlled conditions.
Understanding CAs and Trust
Before we dive in, let’s quickly recap:
Root CA: The top of the trust chain. These are usually self-signed.
Intermediate CA: Signed by a Root CA (or another Intermediate). They issue end-entity certificates.
End-Entity Certificate: Issued to servers, people, or devices.
Trust is built on the chain of trust – your browser/OS verifies that an End-Entity certificate is signed by a trusted Intermediate CA, which in turn is signed by a trusted Root CA.
Why Directly Signing Another CA’s Cert is Usually Bad
Breaks Trust Hierarchy: If CA A signs CA B’s certificate directly, it implies CA A trusts CA B implicitly. This bypasses the need for independent vetting of CA B.
Circular Dependency: It can lead to a circular trust loop, making validation difficult and potentially insecure.
Security Risks: If CA B is compromised, CA A’s reputation is also at risk because it vouched for CA B.
When CA Signing Another CA’s Cert *Is* Done (Cross-Certification)
There are legitimate reasons to allow one CA to sign another CA’s certificate, but these are carefully managed:
Cross-Certification: This is a formal agreement between two CAs where they vouch for each other’s root certificates. It’s often used when CAs want to expand their trust reach across different ecosystems or geographies.
Bridging Trust Anchors: To connect separate PKI domains.
How Cross-Certification Works
Here’s a simplified breakdown:
Agreement: CA A and CA B agree to cross-certify each other’s root certificates. This involves thorough due diligence on both sides.
Certificate Request: CA A generates a Certificate Signing Request (CSR) for its own root certificate.
Signing: CA B signs CA A’s CSR with *its* root certificate, creating a cross-certificate.
Distribution: Both CAs distribute the cross-certificates to their respective clients and systems.
Example using OpenSSL:
# CA B signs CA A’s CSR (simplified)
openssl ca -config ca_b.cnf -extensions v3_ca -days 3650 -in ca_a_csr.pem -out ca_a_cross.pem
Verifying Cross-Certificates
Clients (browsers, OS) need to be configured with both CAs’ root certificates and cross-certificates to establish trust.
Browser Trust Stores: Browsers maintain lists of trusted Root CAs.
Operating System Certificate Stores: Operating systems have their own certificate stores.
You can view certificates in your browser by navigating to the site’s security information (usually a padlock icon).
Important Considerations
Due Diligence: Thoroughly vet any CA before cross-certifying.
Revocation: Have clear procedures for revoking cross-certificates if necessary.
Scope: Limit the scope of cross-certification to specific purposes and use cases.
In Summary
While directly signing another CA’s certificate is generally discouraged, cross-certification provides a controlled mechanism for establishing trust between CAs when done properly. Always prioritize security best practices and thorough vetting.
The post CA Signing Other CAs: Is it Possible? appeared first on Blog | G5 Cyber Security.
No Responses