I’m very new when is comes to Letsencrypt and SSL Certs in general and not sure if what i want to do is possible. I have a server behind a pfSense firewall that serves multiple applications on different ports. All of the web apps are accessible using nat through pfSense to route to url:port to the correct app. I have setup a domain name with Google Domains and added subdomain redirects to the various url:ports. All of this works fine.
I would like to add a wildcard cert inside pfSense that covers all of the domains. It seems to work for the top level domain fine, but all subdomains show an error and won’t let me connect with the Net::err_cert_authority_invalid message and something about hsts.
My question is , is what i am trying to do possible? I am also using the pfsense Acme package to add and configure the cert and using manual dns challenge with the txt file. Thanks so much!
no i have not. i didn’t know that was a step i needed to take since pfsense is hosting the cert. The server machine is a ubuntu desktop 16.04 vm. Do you know of a link that would explain how to do this. I’ve searched but cant find anything directly related? Sounds like i need to export the cert and key from pfsense and import into ubuntu right?
Usually it’ll be specific to that server software but yeah you’ll have to place the key/cert on the server and then call it from that applications configuration file to be served for each visit.
Yes it’s Apache. i exported the crt and key file from pfsense, edited the default-ssl.conf in ubuntu and changed the Virtualhost *:443 paths to the new cert files but still got the same error when trying to browse to those applications.
I do not know the answer to that right away. Google domains is forwarding subdomains to the domainname:port, pfsense receives the port and nats to the correct local server. does that answer your question? if not how do i determine what level the proxy is occuring?
I wonder if maybe you enabled HSTS (a Strict-Transport-Security header) with the includeSubDomains directive?
That would mean your browser is forced to try to access the subdomains over HTTPS before they get a chance to redirect to the correct port on your pfsense server. If Google Domains is performing the redirects, then it needs a valid certificate to handle them because it will receive those initial requests over HTTPS because of HSTS.
(though I haven’t used Google Domains so I may be talking through my hat)
I think there are several different things going on here that create different problems. We can certainly delve into all of them, but I’d like to start by saying that I’m skeptical of the strategy of using the Google Domains forwarding here.
(1) It means that you can never use HTTPS on any of these subdomains and that if anyone tries to, it won’t work.
(2) It means that the HSTS settings that are already in place will cause things to break.
(3) The “Do not forward path” means that none of these domains can be used with direct links to anything but the top-level homepage.
Effectively, this kind of forwarding is functioning something like a bookmark to a site’s homepage, except that the bookmark is maintained by Google Domains rather than in individual users’ browsers.
Would you be willing to consider changing this so that the subdomains all point directly to your server via a CNAME record rather than via HTTP subdomain forwards? Then you would change how pfSense handles the proxying.
Yes, i would absolutely be willing to change things around. I’ll start adding the cnames records now. Does it matter that I am using ddns through google domains since I have a dynamic IP? Do i add the port in the domain field for the cname record? Not sure how i would route in pfsense though if it’s not coming from a specific port.
I guess the next question is how do i import the certificate into the ubuntu machine so that it works properly. I’ve found a few different ways but not sure the correct approach for my stuation.
I expect that pfSense or some other proxy is going to need to receive all of the connections on port 443, and it’s going to need to have certificates for all of the names, or simply one certificate that covers all of them. Then, it will need to proxy the connections to the appropriate ports or servers.
pfsense already has the correct certificates. it’s a wildcard certificate that covers the subdomains. It is working on the top level domain properly. If I browse to the subdomain with the port, it connects but says unsecured. and when i check the cert info, it says its using a ubuntu cert. I dont know what to do to make the vm server serve the cert.
Sure, though one option would be to use port 443 for everything and have the proxy handle the proxying to a different port. You don’t necessarily have to continue to use port forwarding, at least not port forwarding visible to the end-user of the site.
For the approach that you were planning on, what kind of web server software are the VMs using?