I'm trying to understand the purpose of defining self-issued certificate concept in RFC5280 (Internet X509 PKI Certificate and CRL Profile):
Regarding this concept the RFC states:
This specification covers two classes of certificates:
- CA certificates, and
- end entity certificates
CA certificates may be further divided into three classes:
- self-issued certificates, and
- self-signed certificates
Cross-certificates are CA certificates in which the issuer and subject are different entities. Cross-certificates describe a trust relationship between the two CAs.
Self-issued certificates are CA certificates in which the issuer and subject are the same entity. Self-issued certificates are generated to support changes in policy or operations.
Self-signed certificates are self-issued certificates where the digital signature may be verified by the public key bound into the certificate. Self-signed certificates are used to convey a public key for use to begin certification paths.
End entity certificates are issued to subjects that are not authorized to issue certificates.
Ok, let's dive into questions:
- First Question: What exactly is the difference between self-issued and self-signed certificates? Based on my understanding, all self-signed certificates are self-issued and also all self-issued certificate are self-signed! So they must be same thing! The only difference that I can imagine is that: self-issued certificate can appear in the middle of trust-chain (somehow!), but the
To answer the above question clearly, I think I have to also ask the second quesiton:
- Second Quetions: Should an intermediate CA be able to issue a new certificate with different attributes for itself (for example with extended Certificate Key Usage)?
Well, I think no, it souldn't! Because such a capability can bypass the need for Root CA to sign Intermediate's Certificate Key Usage data!
And if I am correct about it, then the only entity that can issue self-issued certificate would be the root CA itself. But why a root CA may needs self-issued certificate? What are the use-cases? Why it just not create a whole new root certificate instead of adding a new member to trust-chain if it needs new attributes?
And if I am wrong about it, then it means that there must be some cases that the intermediate CA shall be able to issue new certificates for itself. If so, can an intermediate CA extend its certificate capability by issueing a new certificate for itself with extended Certificate Key Usage data? Isn't this a flaw in the chain of trust? Moreover, how the certificate verifier can find out if an intermediate CA in the trust-chain is allowed to do such a thing or not?