usegalaxy-eu / infrastructure-playbook

Ansible playbook for managing UseGalaxy.eu infrastructure.
MIT License
16 stars 91 forks source link

Subdomain as ecology.usegalaxy.eu https certificate error when using GxIT #583

Open yvanlebras opened 1 year ago

yvanlebras commented 1 year ago

As GxIT are more and more used, it seems f interest to see if subdomain https certificate error can be fix.

hexylena commented 1 year ago

This has been a known issue since implementation with GxITs, unfortunately. :(

We had to manually add specific subdomains to the certificates to allow GxITs to function on those subdomains which was really not ideal.

I'd love to see this force us to switch more GxITs over to path based proxying, as that would let GxITs run on any subdomain + work for non-EU sites.

yvanlebras commented 1 year ago

Thank you Helena for your feedback! And to "switch more GxITs over to path based proxying", this is very complicated ? Sorry, clearly there, I don't know what it implies...

hexylena commented 1 year ago

According to https://github.com/galaxyproject/galaxy/issues/14690#issuecomment-1356319240 it should be as simple as "set requires_domain to false and test"

It requires that the GxITs will accept a request at any path, and then will properly use relative paths to access resources which doesnt apply to every GxIT, but hopefully to many.

bgruening commented 1 year ago

The deployment bit that we are working on is to have a traefik proxy in front of everything and get a wild-card certificate for that one. This would also solve this issue.

hexylena commented 1 year ago

The traefik proxy doesn't solve the original reason we didn't support GxITs on subdomains though. The problem was that you can't have multiple levels of wildcards in your certificate, so you're always stuck enumerating every single SAN you want, and then updating and re-issuing the certificate every time it changes. *.interactivetoolproxy.*.usegalaxy.eu isn't valid, sadly. So that's why we decided just for them working on one domain, to avoid the hassle of re-issuing every time we added a new domain.

The alternative, supporting path based proxying, would fix this here and for smaller sites that can't get wildcard sans

yvanlebras commented 1 year ago

Thank you for your messages Helena, Björn. Trying to find an easy solution, I have last, for sure stupid ;) sorry, idea... Is it possible when executing a GxIT from a subdomain, to "construct" the url without the subdomain ? I mean, deploying NEAL GxIT from ecology.usegalaxy.eu, give me this URL: https://ab5611c5b58fc3c6-58ca66106d784dee987e16969b5ae0e3.interactivetoolentrypoint.interactivetool.ecology.usegalaxy.eu/sample-apps/audio/ with a "your connection is not private" message BUT, if I manually remove "ecology." from the URL, I have this URL: https://ab5611c5b58fc3c6-58ca66106d784dee987e16969b5ae0e3.interactivetoolentrypoint.interactivetool.usegalaxy.eu/sample-apps/audio/ and it is ok, no ""security"" message who can frighten users...

There is no easy manner to force not writing the subdomain name in the URL?

sveinugu commented 1 year ago

@yvanlebras The basic support for path-based interactive tools is not yet fully merged all places it should be merged (PRs: https://github.com/galaxyproject/galaxy/pull/15147, https://github.com/galaxyproject/gx-it-proxy/pull/14, https://github.com/galaxyproject/gravity/pull/96). Hopefully it will be part of the current release.

We are working on the last piece of the puzzle, which is to implement functionality for providing the full path to the Docker container. This is needed if the web server in the container needs this knowledge (e.g. is not only using relative links). This will in any case be available first in the next release.

What is working now is to configure an nginx proxy to understand path-based interactive tool URLs. It is described here (from "It is also possible to set up nginx to route path-based interactive tool URL" onwards): https://github.com/sveinugu/galaxy/blob/40cf2fcb706c645c4f4f55dab3f7303a0e0e8bef/doc/source/admin/special_topics/interactivetools.rst#server-side-configuration-of-galaxy-interactivetools

This documentation will be part of the new release, but the hack should work with previous releases.