13

We are making a web-based application that will be installed in intranets as a virtual machine image (we send the user a CD with the virtual machine image, user runs it in a VMWare/VirtualBox/...).

We want to protect the application frontend by using HTTPS. We thought about getting a single certificate (issued by some known CA) for domain app.ourdomain.com and installing it on all instances, but that obviously means that one could take apart an installation, take out the private key and make a man in the middle attack on some other installation (provided he had access to its network). While this is an unlikely scenario, we would still like to avoid taking the risk.

Is it possible to get a wildcard certificate that would allow us to sign our own subdomains, so that we could issue certificates app1.ourdomain.com, app2.ourdomain.com,... and they would be accepted by users browsers? (we have no control over users' browsers) If yes, how are these certificates called?

If not, is there some other way we can protect the users from one another?

UPDATE: I have since found a similar question on serverfault so it seems it is technically possible, but "you hardly will find any CA willing to provide you with such a certificate". I would still love to know if there is a CA that issues such certificates?

1
  • If you want to avoid MITM from each node and have user browser recognition, this doesn't work this way with the public CAs as it's insecure because it validates only single company. If you want to handle several companies in different locations, you need separate certificates. Aug 7, 2012 at 22:03

3 Answers 3

7

Wildcard certificates, i.e. certificates which contain a name with a "*" in it, are not a solution for you. A wildcard certificate is a certificate which clients will accept as "matching" several server names: a certificate which contains "*.example.com" will be good for "foo.example.com", "bar.example.com", and so on. This is precisely what you do not want: you do not want the private key and certificate contained in one instance of your product to be good for another instance with a distinct name.

To achieve what you are trying to do, you need to obtain a CA certificate, marked as such with a Basic Constraints extension with the cA flag set to TRUE. This would allow you to issue certificates yourself, and the certificates would still link up to the root CA from which you obtained your own CA certificate.

Existing, deployed CA can sell you such a certificate, but it will be expensive:

  • The existing CA has a business model which sums up as "selling lots of individual certificates". If you produce many certificates without the help of the CA, then it is losing business... and will want to get its money back.

  • That existing CA has one huge asset, which is that its root public key is included in the Web browsers and operating systems of the whole world. OS/browser vendors accept to do that only if the CA offers strong guarantees that it is serious and will issue certificates only to duly identified entities. When such a CA delegates this issuance power to a sub-CA, it tends to require the same level of seriousness. So you would need some rather strong hardware (HSM in a bunker) and heavy procedures.

In a past life, I did such a deal with GlobalSign. Is was about 10 years ago, I don't know if they still offer such deals.

Another strategy is to let your customers deal with the issue. Document how to push a certificate and key in the application, and you are done. Some customers will use their own CA (you do not have control over the browsers of the users, but the customer might have such control). Some will buy a certificate elsewhere.

Anyway, you need to allow for such a manual certificate configuration, if only to allow renewal when the certificate expires.

3
  • So just double checking. If I could issue certificates only for subdomains then I wouldn't be a threat to any CA. But, from what you're saying there's no technical solution that would allow me to do only that (issue only certificates for subdomains). Instead my only option is to effectively be a CA for $$$$$$$$. In particular I need to implement this solution but for an open source project (ie, no $$$$$$$$$)
    – gman
    Feb 13, 2016 at 14:11
  • There is an extension that allows intermediate CA certificates to be name constrained but it's a relatively recent thing and the constraints only apply if the client supports them. So CAs are still likely to be reluctant to give out such certs. Jul 1, 2016 at 19:29
  • A guarantee of serious protection of the private key doesn't seem like it would be enough; no matter how careful they are with the private key, they themselves could still use it to impersonate any site.
    – flarn2006
    Dec 8, 2020 at 22:52
3

I don't believe there is any way to do this unless you want to pay large amounts to a CA to have them issue one that can sign any domain. My advice just buy a standard SSL for each of them, they cost about $10 a piece. You can get one at Namecheap for about $8.00. Also globessl for a few cents more.

9
  • 1
    Just a quick factoid, from the same provider linked a wildcard certificate costs around $85-$91 so if you have more than 9 sub-domains to do then it would be cheaper to get the wildcard. Aug 6, 2012 at 14:36
  • @ScottChamberlain, but isn't that just one root certificate so you would have duplicates of it on each server? I may be mistaken though. Aug 6, 2012 at 14:55
  • 3
    @TravisPessetto: BTW, if this is an affiliate link, it would probably be nice to flag it as such - I'm not even sure they are allowed at SE?
    – johndodo
    Aug 7, 2012 at 7:06
  • 2
  • 1
    @ScottChamberlain but beware that a certificate marked as non-exportable can still be exported. See for instance stackoverflow.com/questions/3914882/… Nov 18, 2014 at 14:36
0

Things have changed a lot in the last 8 years and of course free Domain Validated certificates are now available.

The most famous one is Let's Encrypt and you can use their CertBot to validate an http request on the domain and it will issue you with a 3 month Domain Validated Certificate. Good enough to get a padlock but not a green bar, this works for most people. As long as it is publicly available on the internet via DNS then you can do this.

They also have an API you can use if you want to integrate it into your own application rather than use their "CertBot", I did this in order to get DNS validated wildcard certificates easily from my CPanel hosting environment.

If you need a green bar (EV cert) then I'm not sure what you can do, the previous suggestion of getting a CA Cert might work however I'm not 100%.

You must log in to answer this question.

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