Without divulging TOO much information, I need to setup a web server system that is intended to be used by end users all over the internet.
the use case is such tha
You will never be issued a proper https cert for localhost. It is strictly forbidden. Because reasons.
In short:
/etc/hostslocalhost.foo.local it may cause localhost to resolve incorrectly (you've probably seen this class of error before)You can create a root certificate and then create a so-called "self-signed" certificate, signed by the root ca you created. You'll still get the ugly warning screen, but it'll work.
In lieu of actual localhost certs, I do what Eugene suggests - create a 127.0.0.1 record on a public domain.
You can get free HTTPS certificates for localhost.YOURSITE.com via Let's Encrypt via https://greenlock.domains. Just choose the DNS option instead of the HTTP File Upload option
*.localhost.example.com cert and issue each installation a secret xyz.localhost.example.com (and include it in the public suffix list to prevent attacks on example.com)If you do not get included in the PSL note that:
Update: with things like greenlock that use ACME / Let's Encrypt, this is no longer particularly relevant.
This is probably a really bad idea because we don't want users becoming accustomed to installing Root CAs willy nilly (and we know how that turned out for Lenovo), but for corporate / cloned machines it may be a reasonable low-budget option.