CA Signing Other CAs: Is it Possible?

Tags:

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.

Categories

No Responses

Leave a Reply

Your email address will not be published. Required fields are marked *