6

This relates to PKI and certificates generally but websites more specifically.

Could you get a verified certificate from a CA that is signed and fine for use, and then use it to sign your own certificates as verified. As far as I understand it, the PKI chain is still valid, there is a CA, my verified certificate, and sub certificates verified by mine.

This is mainly for a personal project and a bit of theory but I'm not sure what I'm missing here, as I'm sure it's not possible, it'd be a big money loser for the CAs. I understand the concept of self-signing, and that's probably what I'll go with for multiple certificates. But why can't you just get your personal root cert that you're signing with verified by the CA and complete the chain for browsers?

2 Answers 2

7

For a certificate to be valid as an intermediate CA (i.e. as part of a chain of certificate, and not at the end -- that's what you propose to do), it must have a Basic Constraints extension with the cA flag set to TRUE. Otherwise, system which verify the chain (e.g. Web browsers, when validating a server's certificate) will reject the chain. See RFC 5280, sections 4.2.1.9 and 6.1.4 (item 'k'). Commercial CA can sell you a certificate with the cA flag set to true, but this will typically not be cheap. "Normal" certificates (the ones which can be afforded by individuals) have the cA flag set to false.

Note that up to circa 2003, Internet Explorer was failing to verify the cA flag, and your scheme would have worked. This was a huge security hole, of course, because anybody could then act as a pseudo-CA and issue certificates with any name in it.

3
  • OK For bonus points. If I did this anyway and signed my own certs with it, it still wouldn't be susceptible to man in the middles right? because I'd still be able to see the full chain, and see my cert -> verified by my own cert -> verified by the CA? It's just the browser that would complain.
    – Paystey
    Commented Sep 21, 2012 at 21:29
  • 1
    @Paystey if it's only for your own use, why not create your own root CA and just sign with that? And install it as root cert in browser?
    – ewanm89
    Commented Sep 21, 2012 at 23:47
  • Yes it's only for personal use, but from multiple browsers so I can't really install, but I'd still be able to view the chain as intact right? The browser just wouldn't be happy with it?
    – Paystey
    Commented Sep 22, 2012 at 13:09
1

A certificate is designated as valid for a set of "key usages", which include SSL server, Certificate Authority, Code Signing, Email Signing, and others (a good list is found here). Only certificates which are designated to act as a Certificate Authority will be trusted to sign other certs; if one link in the signature chain lacks that key usage then it breaks the chain.

I believe you can purchase a certificate from Verisign/Thawte/etc that will permit you to sign certificates within a limited domain hierarchy, e.g., you could create certificates under yourcompany.com only but have the trust chain up to the CA you purchased the signing cert from. Of course, they charge a lot more for this, for the obvious reason.

1
  • 1
    Actually, there is no limit on what domains an intermediate CA cert can sign, this is a big issue, any CA or intermediate CA can sign any domain and the chain would be valid (this has semi-valid uses, like corporate SSL monitoring gear (grey area)).
    – ewanm89
    Commented Sep 21, 2012 at 23:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .