-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fixes #20021 - Optionally generate CA public cert with other CAs certs #160
Conversation
82c6145
to
f489455
Compare
9353db3
to
7281824
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apologies for the late review.
So the use case for this is that every katello node is a CA and you bundle all the other CAs into it? I think this is a hard part of Katello and I doubt I fully understand this aspect.
2c1d4a5
to
4db617f
Compare
@ekohl thanks for your review! Updated 👍 Yes, that's it. This CA cert is also bundled in the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Interesting. I'll need some time to verify this. Maybe @timogoebel could have a look as well since you're looking at this as well.
Like we discussed on IRC: I'm afraid this pattern won't scale well since every "node" will be a CA. I do like your acceptance tests and I will use it to write some more |
So we discussed a little more on IRC, putting it here for a wider audience and allow us to think about it a little more: I don't think we should require an external CA service like freeIPA or others (although that may be a nice optional feature) I think an option may be: Candlepin node(s) are the default CA(s) and they trust each other if there is more than one. |
I could be convinced of merging this even if we're not going to use it as the default multi-server setups but I'd like the opinion of other maintainers because how we deploy certs is still somewhat unfamiliar to me. |
Help remind me -- we need to append because we can't rely on defining a directory of CA certs in all cases to point to vs. a single CA file? I think it would help me to wrap my brain around the scenarios where multiple CAs would come into play. Feel free to walk me through it like a freshman in college. HA concepts are a weakness of mine that I want to understand better :) |
Sorry not sure what you mean here? My goal is to have the clients & Foreman Proxies trust either of the CAs on my Candlepin nodes (right now with our supported monolithic install that also includes app, pulp, qpid, ect..)
Sure, so HA means Highly Available, if a system is acting in an active/passive mode then that is normally considered HA, as one node will take over when the other fails, normally with a outage as the traffic fails over, if fail over is manual then the outage will likely be longer (but this is still considered to be HA) I'm trying to make it possible to load balance our application(s) active/active not active/passsive. This will allow for there to be no fail over process which will allow users to add extra capacity to the system by adding more nodes, as well as make it natively HA (HA without pacemaker). At the the heart of things its super simple idea. Be able to add active component nodes independently without sharing anything to increase capacity and resilience. The nodes shouldn't share any resources, if they require shared storage you just move the Single Point of Failure (SPOF) to the storage system. This PR allows me to have 2 CAs that each candlepin node uses. I have tested it with 2 monolithic Katello nodes and a single Smart Proxy & Client. How does this relate to certificates? Any other approaches? |
First off, thanks for the explanation! That helped a ton in wrapping my brain around how to think about this approach. The last gap of knowledge to help me fill in is "2 CAs that each Candlepin node uses". Are you saying in this case two root CAs, essentially what is katello-default-ca, are generated and given to each Candlepin instance? And that Candlepin is able to take both CAs and anytime a certificate request is made, Candlepin is able to then cut certificates for each CA to hand to clients? |
I was thinking:
When my client registers or attaches a new sub, one of those nodes would pick up the request and give my client a cert & key. So my client would potentially have:
My Pulp nodes would then provide content to clients with client certs from either CA1 or CA2. Their certs would come from a certs.tar (like Smart Proxies today) or similar (as would Katello app nodes) But like I said, this need experimentation, other ideas may also work or be a better architecture to go with. |
@ehelms Any update on this? |
3180871
to
28f1427
Compare
This comment has been minimized.
This comment has been minimized.
28f1427
to
6fa876a
Compare
This comment has been minimized.
This comment has been minimized.
It needs some work to get the tests green, but functionally this PR is fine. I'm happy to get tests passing if we want to merge this - there was some debate previously regarding this approach. |
Here is an RFC being worked on for an issue like this: https://meet.google.com/linkredirect?authuser=1&dest=https%3A%2F%2Fcommunity.theforeman.org%2Ft%2Frfc-redesign-certificate-handling-within-foreman-deployments%2F17933 |
Requires Katello/katello-certs-tools#1